spring - springmvc - 拦截器

过滤器: serverlet自带,可以拦截html,css,js等

拦截器:spring自带,只能拦截controller,用于controller运行前的预处理和运行后的后处理

 

1. 配置环境

springmvc.xml:

<!-- 配置拦截器, class是自己写的拦截器路径 -->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean id="handlerInterceptorDemo1" class="interceptor.InterceptorTest"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

 

java:

创建一个拦截器类,继承spring给的拦截器接口

package 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 InterceptorTest implements HandlerInterceptor { //继承spring拦截器接口HandlerInterceptor

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle拦截器拦截了");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle方法执行了");
    }

    @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion方法执行了");
    }
}

 

在controller类中添加controller:

    //返回String
    @RequestMapping(path = "/stringTest")
    public String stringTest(Model model){
        //从数据库中查询到需要显示的值
        User user = new User();
        user.setName("张三");
        user.setAge(18);
        model.addAttribute("user", user);
        System.out.println("controller执行了");

        return "success";
    }

 

jsp中添加一个超链接请求

<a href = "/response/stringTest">stringTest</a>

 

运行tomcat,然后点击链接查看后台输出。

 

 preHandle 在controller之前执行。 比如判断用户有没有登录,没登录直接跳到login

postHandle 在跳转页面之前执行 一般用来预处理页面(modelAndView)。

afterCompletion在整个请求结束后执行 可以测试性能,统计等。

 

posted @ 2019-10-24 15:20  不咬人的兔子  阅读(204)  评论(0编辑  收藏  举报