我自己写了个日志拦截器,其中可以记录输入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
我本想要的是用户名和密码的真实值,但是这里确实对象引用值吧?希望大家给分析下