我自己写了个日志拦截器,其中可以记录输入action的参数,但是返回的值有些出入,请大家看看,哪里有问题.public class LoggerInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1358600090729208361L; @SuppressWarnings("unchecked")
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("日志拦截器已经开始启动..");
String actionName= invocation.getAction().getClass().toString();
invocation.invoke();
final Map<String,String> parameters = invocation.getInvocationContext()
.getParameters();
boolean result = invocation.getProxy().getExecuteResult();
String method = invocation.getProxy().getMethod();
// 取得请求相关的ActionContext实例
ActionContext ctx = invocation.getInvocationContext(); HttpServletRequest request = ServletActionContext.getRequest();
String ip = request.getRemoteAddr();
Map session = ctx.getSession();
// 取出名为user的session属性
String user = (String) session.get("username");
if (user != null) {
System.out.println("操作的用户名为:" + user);
System.out.println("操作者的IP为:" + ip);
System.out.println("操作的时间为:" + StringUtil.currentDate());
System.out.println("操作Action 的名称:" + actionName);
System.out.println("操作的方法为:" + method);
System.out.println("参数有:" + parameters); System.out.println("操作的方法结果为:" + result); } if (parameters != null) {
Set set = parameters.entrySet();
Iterator iterator = null;
if (set != null) {
iterator = set.iterator();
}
while (iterator.hasNext()) {
//iterator.next();
Map.Entry entry =(Map.Entry)iterator.next();
System.out.println(entry.getKey() + "----------"
+ entry.getValue());
}
}
return Action.SUCCESS; }
其中有出入的结果行为: 参数有:{password=[Ljava.lang.String;@1ff3510, username=[Ljava.lang.String;@1f4e0ba} password----------[Ljava.lang.String;@1ff3510
username----------[Ljava.lang.String;@1f4e0ba
我本想要的是用户名和密码的真实值,但是这里确实对象引用值吧?希望大家给分析下
private static final long serialVersionUID = 1358600090729208361L; @SuppressWarnings("unchecked")
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("日志拦截器已经开始启动..");
String actionName= invocation.getAction().getClass().toString();
invocation.invoke();
final Map<String,String> parameters = invocation.getInvocationContext()
.getParameters();
boolean result = invocation.getProxy().getExecuteResult();
String method = invocation.getProxy().getMethod();
// 取得请求相关的ActionContext实例
ActionContext ctx = invocation.getInvocationContext(); HttpServletRequest request = ServletActionContext.getRequest();
String ip = request.getRemoteAddr();
Map session = ctx.getSession();
// 取出名为user的session属性
String user = (String) session.get("username");
if (user != null) {
System.out.println("操作的用户名为:" + user);
System.out.println("操作者的IP为:" + ip);
System.out.println("操作的时间为:" + StringUtil.currentDate());
System.out.println("操作Action 的名称:" + actionName);
System.out.println("操作的方法为:" + method);
System.out.println("参数有:" + parameters); System.out.println("操作的方法结果为:" + result); } if (parameters != null) {
Set set = parameters.entrySet();
Iterator iterator = null;
if (set != null) {
iterator = set.iterator();
}
while (iterator.hasNext()) {
//iterator.next();
Map.Entry entry =(Map.Entry)iterator.next();
System.out.println(entry.getKey() + "----------"
+ entry.getValue());
}
}
return Action.SUCCESS; }
其中有出入的结果行为: 参数有:{password=[Ljava.lang.String;@1ff3510, username=[Ljava.lang.String;@1f4e0ba} password----------[Ljava.lang.String;@1ff3510
username----------[Ljava.lang.String;@1f4e0ba
我本想要的是用户名和密码的真实值,但是这里确实对象引用值吧?希望大家给分析下
解决方案 »
- 求,一思路!!!
- 讨论一下struts-menu的问题?关于将其应用到现有程序上,欢迎大家指点
- request在jsp之间怎么传递对象?
- 问个通过参数字符串调用函数的问题
- 再再请教数据库操作遇到的问题..
- 一个奇怪的问题(菜鸟)
- XP系统已经安装好Maven3;在MyEclipse6.5中如何配置整合呢?
- 运行tomcat时发生Error: Out of Envirenment Space
- Caused by: java.lang.NoClassDefFoundError: org/exolab/castor/xml/Introspector
- jira连接oracle数据库时,出现:JIRA is unable to start ,the database has been locked?
- 框架刷新的问题
- 页面跳转
parameters是个map,你用"+"去操作,当然去取他的引用~~
String[] params = (String[]) parameters.get("paramname");
System.out.println(params[0]);