SpringMVC拦截器

来源:互联网 发布:鲜花抢单软件 编辑:程序博客网 时间:2024/06/07 20:33

SpringMVC拦截器

1.使用场景

解决请求的共性问题(比如:乱码问题,权限验证问题等)

2.原理

与过滤器类似

3.实现

(1)编写拦截器类,实现HandlerInterceptor接口
package com.xiao.interceptor;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 拦截器 */public class MyInterceptor implements HandlerInterceptor {    @Override    public void afterCompletion(HttpServletRequest request,                                HttpServletResponse response, Object handler, Exception arg3)            throws Exception {    }    @Override    //ModelAndView arg3可以来改变显示的视图,或修改发往视图的的方法    public void postHandle(HttpServletRequest request,                           HttpServletResponse response, Object handler, ModelAndView arg3)            throws Exception {    }    @Override    //Object handler表示被拦截的请求的目标对象    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {    //解决乱码    request.setCharacterEncoding("utf-8");    //对用户登录进行拦截    if(request.getSession().getAttribute("user") == null){    //如果没有登录,就终止请求,并发送到登录页面        request.getRequestDispatcher("login.jsp").forward(request,response);        return false;        }        return true;    }}

(2)将拦截器注册到springMVC框架中

<mvc:interceptors>        <!-- 拦截所有资源 -->        <bean class="com.xiao.interceptor.MyInterceptor"/>            </mvc:interceptors>

(3)配置拦截器规则

<mvc:interceptors>        <!-- 拦截所有资源 -->        <bean class="com.xiao.interceptor.MyInterceptor"/>        *<mvc:interceptor>            <!-- 拦截制定资源 -->            <mvc:mapping path="/dv/**"/>            <bean class="com.xiao.interceptor.MyInterceptor"/>        </mvc:interceptor>*    </mvc:interceptors>

4.配置多个拦截器

注意多个拦截器的拦截流程。(从北京到上海过收费站的流程)

5.拦截器的其他实现方法

实现WebRequestInterceptor接口(无返回值),注册写法不变

0 0