SpingMVC:如何设置一个拦截器?

(interceptors) 拦截器类似于spring aop和tomcat中过滤器,但是作用域不同。

AOP:针对特点方法前后进行扩充,一般对serviceimpl进行

拦截器:针对控制器方法进行控制。

 


一、步骤

1、在springmvc配置中声明一个拦截器。

    <!--拦截器:拦截对于控制器的访问-->
    <mvc:interceptors>
        <!--拦截所有的控制器-->
        <bean class="com.lurenjia.interceptor.DemoInterceptor"></bean>

        <!--指定拦截的控制器-->
        <mvc:interceptor>
            <mvc:mapping path="/login"/>
            <mvc:mapping path="/main"/>
            <bean class="com.lurenjia.interceptor.DemoInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

2、编写拦截器实现类

  实现HandlerInterceptor接口,重写方法。

public class DemoInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {
        //进入控制器之前执行

        Object user = request.getSession().getAttribute("user");
        if(user!=null){
            //如果用户登录了,可以访问其它控制器
            return true;
        }else {
            //如果用户没登录,则不允许访问其它控制器
            response.sendRedirect("login.jsp");
            return false;
        }
    }

    @Override
    public void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //控制器执行完成,跳转之前

        //数据流转
        modelAndView.addObject("data","guaguagau");

        //过滤敏感词
        String word = modelAndView.getModel().get("data").toString();
        String newWord = word.replace("敏感词","***");
        modelAndView.getModel().put("data",newWord);

        //改变跳转路径
        modelAndView.setViewName("error.jsp");
    }

    @Override
    public void afterCompletion(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //跳转之后执行:用于记录执行过程中的异常
        if(ex!=null){
            System.out.println("存在异常");
        }
    }
}

 

posted @ 2023-03-05 18:48  在博客做笔记的路人甲  阅读(24)  评论(0编辑  收藏  举报