java SpringMVC的拦截器配置

java SpringMVC的拦截器配置


      java后台经常会使用拦截器功能拦截前端访问的请求,是否是

   登录状态,是否有权限。


   实现方法:

  1.配置SpringMVC 的xml文件:

 

<!--配置拦截器, 多个拦截器,顺序执行 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->
			<mvc:mapping path="/**" />
			<!--<mvc:mapping path="/" />-->
			<!--<mvc:mapping path="/user/**" />-->
			<!--<mvc:mapping path="/login/**" />-->
			<bean class="com.relaxPalace.web.interceptor.CommonInterceptor"></bean>
		</mvc:interceptor>
		<!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->
	</mvc:interceptors>

   2.编写拦截器类:

  CommonInterceptor.java:

import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2017/7/3.
 */
public class CommonInterceptor implements HandlerInterceptor {
    /**
     * 在请求处理之前执行,该方法主要是用于准备资源数据的,然后可以把它们当做请求属性放到WebRequest中
     */
    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("AllInterceptor...............................");
        httpServletRequest.setAttribute("request",  WebRequest.SCOPE_REQUEST);//这个是放到request范围内的,所以只能在当前请求中的request中获取到
        httpServletRequest.setAttribute("session",  WebRequest.SCOPE_SESSION);//这个是放到session范围内的,如果环境允许的话它只能在局部的隔离的会话中访问,否则就是在普通的当前会话中可以访问
        httpServletRequest.setAttribute("globalSession", WebRequest.SCOPE_GLOBAL_SESSION);//如果环境允许的话,它能在全局共享的会话中访问,否则就是在普通的当前会话中访问


        //判断是否登录,如果已登录retrun false拦截,如果未登录return true不拦截
        return true;
    }

    /**
     * 该方法将在Controller执行之后,返回视图之前执行,ModelMap表示请求Controller处理之后返回的Model对象,所以可以在
     * 这个方法中修改ModelMap的属性,从而达到改变返回的模型的效果。
     */
    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
        System.out.println(  "postHandle-=-=--=--=-=-=-=-=-=-=-=-==-=--=-=-=-=");
    }

    /**
     * 该方法将在整个请求完成之后,也就是说在视图渲染之后进行调用,主要用于进行一些资源的释放
     */
    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
        System.out.println(e + "afterCompletion-=-=--=--=-=-=-=-=-=-=-=-==-=--=-=-=-=");
    }
}



   配置好启动程序后:

  访问url链接:http://localhost:8080/user/getAllusers

  后台会打印:

 AllInterceptor...............................
postHandle-=-=--=--=-=-=-=-=-=-=-=-==-=--=-=-=-=
nullafterCompletion-=-=--=--=-=-=-=-=-=-=-=-==-=--=-=-=-=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕容屠苏

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值