spring mvc 多拦截器

上次大概写了个可以解决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 多拦截器

时间: 2024-08-10 21:19:10

spring mvc 多拦截器的相关文章

Spring MVC中拦截器HandlerInterceptorAdapter中的preHandle方法

拦截器:顾名思义,就是对请求进行拦截,做一些预处理.后处理或返回处理的操作 Spring MVC中使用拦截器的方法,继承HandlerInterceptorAdapter类,并根据需求实现其中的preHandle方法(预处理).postHandle方法(返回处理),afterCompletion方法(后处理). public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object han

玩转spring MVC(七)----拦截器

继续在前边的基础上来学习spring MVC中拦截器的使用,下面通过一个例子来实现(完整项目在这里下载:http://download.csdn.net/detail/u012116457/8433425). 首先在项目中添加interceptor-servlet.xml来配置拦截器,当然,必须在web.xml中配置在tomcat启动时加载,如下: <!--1.配置spring分发器(是总的控制中心 被拦截的url会汇聚到该servlet) --> <servlet> <se

spring mvc +cookie+拦截器功能 实现系统自动登陆

先看看我遇到的问题: @ResponseBody @RequestMapping("/logout") public Json logout(HttpSession session,HttpServletRequest request,HttpServletResponse response) { Json j = new Json(); if (session != null) { // session.invalidate(); session.removeAttribute(&q

[转载] Spring MVC - 处理器拦截器

5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.   5.1.1.常见应用场景 1.日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(Page View)等. 2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面: 3.性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间

Spring mvc登录拦截器

自己实现的第一个Spring mvc登录拦截器 题目要求:拒绝未登录用户进入系统,只要发现用户未登录,则将用户请求转发到/login.do要求用户登录 实现步骤: 1.在spring的配置文件中添加登录拦截,如下: spring-web.xml <mvc:interceptors> <!-- 配置登陆拦截器 --> <mvc:interceptor> <mvc:mapping path="/**"/> //拦截所有请求 <mvc:e

基于Spring MVC 实现拦截器

Spring MVC 拦截器 一,具体内容: 在所有的开发之中拦截器属于一个重要的组件,可以说几乎所有的项目都会提供的概念应用,不管是Spring MVC,还是Struts 2.x都是提供有拦截器的,利用拦截器可以实现更加方便的数据验证处理. 1,认识拦截器 所谓的拦截器指的是在用户和具体操作的Action之间做了一个屏障,以保证提交到提交到Action的数据是真实有效的数据: 如果要想实现拦截器的操作处理,那么必须掌握"org.springframework.web.servlet.Handl

Spring MVC定义拦截器

拦截器: package sy.Interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyI

码农小汪-Spring MVC 处理器拦截器详解

处理器拦截器简介 spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理 常见应用场景 日志记录:记录请求信息的日志,以便进行信息监控.信息统计.计算PV(Page View)等. 权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面: 有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记 录结束时间,从而得到该请求的处理

Spring MVC的拦截器

什么是拦截器? 拦截器是指通过统一拦截从浏览器发送到服务器的请求来完成我们对功能的增强. Java过滤器跟SpringMVC的拦截器有什么不同? 定义:拦截器是可以拦截我们配置的方法,并且在我们的方法请求前后去做一些处理,比如做字符编码,验证校验等. 而过滤器:是在javaweb中,你传入的request.response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有