一、什么是拦截器?
拦截器是指通过拦截从浏览器发送服务器的请求,来完成某些功能,大致意思就是:浏览器向服务器发送请求时,会经过拦截器,如果需要某些响应,然后通过服务器返回给浏览器的这样一个过程。
二、如何实现拦截器?
- 编写一个拦截器类让其实现HandlerInterceptor接口;
- 将写好的拦截器类注册到SpringMVC框架中;
- 配置拦截器拦截规则:所谓规则说的就是,拦截器可以对某些请求可以进行拦截,也可以对所有请求进行拦截,看具体功能的实现。
三、实现拦截器示例
- 创建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 {
//这里可以写登录超时返回给页面的错误信息。或者跳转页面
}
}
}
- 注册到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>
- 什么时候执行这个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更新)