springmvc的aop处理问题(一)request参数判断

在每个request中,根据不同的情况,需要做一些AOP的操作。不知道杂实现,不晓得和以前写的
aop的cache是否有类似之处呢。网上资料显示针对controller和针对manager的aop应该是不同的,那么就试试吧。
参考文章如下:
http://blog.arendsen.net/index.php/2006/10/31/using-spring-20-aop-to-implement-web-request-interception/

查找到,我们的springmvc里面使用的是
org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping
来处理应用,一直看它的基类是用AbstractHandlerMapping在处理,我们就是利用的立面的interceptors
这个属性。

撰写ValidateHandlerInterceptor集成自HandlerInterceptor,核心代码如下:
public class ValidateHandlerInterceptor implements HandlerInterceptor {
//页面校验的manager
private PageInstanceManager pageInstanceManager;
//日志
private static Log log = LogFactory
    .getLog(ValidateHandlerInterceptor.class);
//调用结束后,已经view render了之后的clean操作
public void afterCompletion(HttpServletRequest request,
    HttpServletResponse response, Object handler, Exception ex)
    throws Exception {
   log.debug("after render the view :" + new Date());
}
//方法调用时,在view render之前的调用
public void postHandle(HttpServletRequest request,
    HttpServletResponse response, Object handler, ModelAndView view)
    throws Exception {
   String validate_rule_flag = request.getParameter("validate_rule_flag");
   log.debug("do I need to put in the validate rules: "
     + StringUtil.isNotBlank(validate_rule_flag));
   if (StringUtil.isNotBlank(validate_rule_flag)) {
    //这个是我应用中的特例,根据request过来的参数,判断是否要加上页面校验的东东
    addValidateRule(request, response, view);
   }
   log.debug("invoke method,but before render view : " + new Date());
}
//方法调用前调用
public boolean preHandle(HttpServletRequest request,
    HttpServletResponse response, Object handler) throws Exception {
   log.debug("before the handle invoke :" + new Date());
   return true;
}
...
}

在我们的xml配置文件中,spring的配置文件做如下增加:
<bean
   class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
<property name="interceptors">
   <list>
    <bean class="cn.sccl.validate.web.ValidateHandlerInterceptor" />
   </list>
</property>
</bean>
其中配置的cn.sccl.validate.web.ValidateHandlerInterceptor就是我们刚才作为HandlerInterceptor的类。这样的话每个.do的request都会被我们
AOP的拦截处理,一些每个action都会考虑要添加的动作或者都需要判断处理的动作就可以放在这里,比filter使用得方便一些,可以得到前后request,response和
我们的spring controller的ModelAndView的各种信息。

 

转自:http://sillycat.javaeye.com/blog/564002

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值