码迷,mamicode.com
首页 > 编程语言 > 详细

spring mvc 多拦截器

时间:2014-07-30 14:43:23      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   文件   io   for   

上次大概写了个可以解决velocity 多视图的东西。

但是实际运用过程中有到处找了些资料看了下。这里

小计下:

DispatcherServlet解析过程:

1、HandlerMapping 用于定位具体的Controller类我习惯叫pagehandle,我认为是模块分发modelfactory

eg:implement 这个是比较标准,我继承过其他的HandlerMapping 但是实际自己使用还是从接口开始更好实现

public classSpringMvcExtendHandlerMapping extends WebApplicationObjectSupport
implements HandlerMapping, Ordered

这里可以通过从新定义:

public HandlerExecutionChain getHandler(HttpServletRequest request)

 可以实现 对应的control分发

eg:

String requestPath = ResourceUtil.getRequestPath(request);

if(requestPath.contains("mytest")

{

  //这个handle是比较啰嗦的东西,在mvc 这个东西就是Controller类,自定义么可以用但是需要配套HandlerAdapter

   HandlerExecutionChain back = new HandlerExecutionChain(handle);

     //这里是自定义的拦截器,通过配置文件可以,但是如果多HandlerInterceptorAdapter 你会发现各种莫名弄麻烦,

  //不然自己把自己的用的上的直接绑上去更好用
  back.addInterceptor(new SpringMvcExtendHandlerInterceporAdapter());

}

2、HandlerInterceptorAdapter。。 这个可以理解为页面分发pagefactory

这个东西么网上比较多,就是3个方法的使用

需要注意的是

DispatcherServlet 用的for 循环preHandle 只要有一个返回false 就不继续了,弄这个弄眼睛都花了

所以建议如果你程序要么只有一个HandlerInterceptorAdapter,要么就指定好对应的HandlerInterceptorAdapter

eg:在xml文件中用mvc标签

<mvc:interceptors>
  <mvc:interceptor>
  <mvc:mapping path="/**" /><!--这里老老实实的过滤路径-->
  <bean class="org.jeecgframework.core.interceptors.EncodingInterceptor" />
    </mvc:interceptor>
</mvc:interceptors>

eg:要么在你选择的HandlerMapping 配置文件中指定

eg:要么像我直接写死在HandlerMapping中

不要直接<bean class=""/>

 

spring mvc 多拦截器,布布扣,bubuko.com

spring mvc 多拦截器

标签:style   blog   http   color   使用   文件   io   for   

原文地址:http://www.cnblogs.com/loswing/p/3877980.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!