使用spring aop拦截struts2中的action,发现不太好拦截传入action参数了

g646585144 2013-05-28 02:19:15
action代码:
package com.zjlolife.action;

import javax.annotation.Resource;

import org.apache.struts2.ServletActionContext;

import com.zjlolife.domain.Item;
import com.zjlolife.domain.User;
import com.zjlolife.service.UserService;

public class UserAction {
@Resource
private UserService userService;

private User user;

private Item item;

public User getUser() {
System.out.println("getUser");
return user;
}


public void setUser(User user) {
System.out.println("setUer");

this.user = user;
}


public Item getItem() {
return item;
}


public void setItem(Item item) {
this.item = item;
}


public String login() {
User loginUser = userService.login(user);
if(loginUser!=null) {
ServletActionContext.getRequest().getSession().setAttribute("user", loginUser);
return "success";
}
return "login";
}

public String addItem() {
userService.addItem(item);
return "success";
}
}


aop切面类代码:采用注解

package com.zjlolife.util;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Aspect
public class LogInterceptor {
@Pointcut("execution (* com.zjlolife.action.UserAction.*(..))")
private void anyMethod() {};

@Pointcut("execution (* com.zjlolife.action.UserAction.*et*(..))")
private void noInterceptorMethod() {};

@Pointcut("anyMethod()&&!noInterceptorMethod()")
private void InterceptorMethod() {};
@Around("InterceptorMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable{
LoggerUtils.setLogger(LogInterceptor.class);
//Logger logger = LoggerFactory.getLogger(LogInterceptor.class);
System.out.println("intercepyot");
Class className = pjp.getTarget().getClass();
Object[] args = pjp.getArgs();
String methodName = pjp.getSignature().getName();
Object result = null;
try {
result = pjp.proceed();
}
catch(Throwable t) {
//如果出现异常就记录异常日志
LoggerUtils.log(className, args, methodName,t);
throw new Throwable(t);
}
//如果操作正常记录日志
LoggerUtils.log(className, args, methodName);
return result;
}
}



我现在拦截的action的login方法,想过在切面类中使用ServletActionContext这个工具获取request参数,惨是request参数同时又包刮好多关于请求头的参数,感觉不太好,有没有好的解决方法?
...全文
155 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lantianfeixue 2014-05-15
  • 打赏
  • 举报
回复
结贴了, 解决办法呢?
zjlolife 2013-05-28
  • 打赏
  • 举报
回复
ActionContext actionContext = ServletActionContext.getContext();
		Map<String,Object> map = actionContext.getParameters();
已解决,革命还得靠自己
zjlolife 2013-05-28
  • 打赏
  • 举报
回复
来人,我也遇到这个问题了
zjlolife 2013-05-28
  • 打赏
  • 举报
回复
什么情况,貌似确实是个问题……
g646585144 2013-05-28
  • 打赏
  • 举报
回复
来人帮忙下,,,

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧