SpringMVC拦截器实现用户超时登录拦截

一、什么是拦截器?

拦截器是指通过拦截从浏览器发送服务器的请求,来完成某些功能,大致意思就是:浏览器向服务器发送请求时,会经过拦截器,如果需要某些响应,然后通过服务器返回给浏览器的这样一个过程。

二、如何实现拦截器?
  1. 编写一个拦截器类让其实现HandlerInterceptor接口;
  2. 将写好的拦截器类注册到SpringMVC框架中;
  3. 配置拦截器拦截规则:所谓规则说的就是,拦截器可以对某些请求可以进行拦截,也可以对所有请求进行拦截,看具体功能的实现。
三、实现拦截器示例
  1. 创建UserInterceptor 类让其实现HandlerInterceptor:
public class UserInterceptor implements HandlerInterceptor {
	//返回值:是否将当前的请求拦截下来
	//如果返回true:请求会被继续执行
	//如果返回false:请求将会被拦截
	//Object org :表示的是被拦截的请求的目标对象
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object org) throws Exception {
	//根据session查询用户信息,如果用户不为空返回true
     UserFormMap userFormMap = (UserFormMap) request.getSession().getAttribute("userSession");
		if (userFormMap != null) {
			return true;
		} else {
			//这里可以写登录超时返回给页面的错误信息。或者跳转页面
		}
	}
}
  1. 注册到springmvc框架中,写到springmvc.xml中。
<mvc:interceptors>
	<mvc:interceptor>
		<mvc:mapping path="/**" />
		 <!--拦截的信息-->
		<mvc:exclude-mapping path="/login.shtml"/>
          <!--拦截器所在的包下-->
		<bean id="userInterceptor" class="com.btwx.interceptor.UserInterceptor" />
	</mvc:interceptor>
</mvc:interceptors>
  1. 什么时候执行这个spring-mvc.xml文件,在web.xml文件中加入代码:
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <!--在项目启动的时候回运行spring-mvc.xml文件-->
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.shtml</url-pattern>
  </servlet-mapping>

总结:这是我对这个拦截器如何执行的一个大概了解并把它记录下来,文章相对简单,写的比较粗糙,很多深入的东西都没写到,为了之后的深入了解先大概记录自己的想法,方便之后的扩展。
总结2:今天看了有关SpringMVC拦截器视频讲解,对拦截器有了更深的了解,对这篇博客进行了更新,对拦截器的介绍和拦截器的实现步骤进行的进一步的描述。(2018/10/10更新)

猜你喜欢

转载自blog.csdn.net/qq_38236927/article/details/82879091