springmvc拦截器

来源:互联网 发布:mac os破解版 编辑:程序博客网 时间:2024/06/15 11:38

用一个例子来说明,一个小网站,只有用户登录后才可访问,否则被拦截。

要定义拦截器,需要实现Spring的HandleIntercetor接口或者继承抽象类HanlerInterceptorAdater

中间有三个方法,通过例子说明:

public class AuthorizationInterceptor implements HandlerInterceptor {    private static final String[] IGNGRE_URI={"/loginForm","/login"};    /**     * 该方法在Controller处理之前执行。当返回值为true才执行controller,否则不执行。     * @param httpServletRequest     * @param httpServletResponse     * @param o     * @return     * @throws Exception     */    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {        System.out.println("AuthorizationInterceptor preHandle --> ");        boolean flag=false;        String servletPath=httpServletRequest.getServletPath();        for(String s:IGNGRE_URI){            if(servletPath.contains(s)){                flag=true;                break;            }        }        if(!flag){            User user=(User)httpServletRequest.getSession().getAttribute("user");            if(user==null){                System.out.println("AuthorizationInterceptor 拦截请求:");                httpServletRequest.setAttribute("message","请先登录再访问网站");                httpServletRequest.getRequestDispatcher("loginForm").forward(httpServletRequest,httpServletResponse);            }else {                System.out.println("AuthorizationInterceptor 放行请求:");                flag=true;            }        }        return flag;    }    /**     * 在controller的方法调用之后执行,方法中可以多modelAndview进行操作     * @param httpServletRequest     * @param httpServletResponse     * @param o     * @param modelAndView     * @throws Exception     */    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {        System.out.println("AuthorizationInterceptor postHandle -->");    }    /**     * 该方法在整个请求完成之后执行,主要作用是用于清理资源     * @param httpServletRequest     * @param httpServletResponse     * @param o     * @param e     * @throws Exception     */    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {        System.out.println("AuthorizationInterceptor afterCompletion --> ");    }}
<mvc:interceptors>    <mvc:interceptor>        <mvc:mapping path="/*"/>        <bean class="org.fkit.domain.AuthorizationInterceptor"/>    </mvc:interceptor></mvc:interceptors>
设置拦截所有请求。


原创粉丝点击