Spring MVC 拦截器
来源:互联网 发布:机关游泳馆办卡通知 编辑:程序博客网 时间:2024/05/19 09:38
目的:对请求的通用处理,包括乱码和权限控制等
实现 通过在Spring中注入拦截器的类来实现
Spring 有自己的拦截器 也可以自定定义拦截器 自己定义的拦截器 需要实现handlerInterceptor 接口
然后在Spring的配置文件中,对这个拦截器进行配置
配置方式为 <mvc:interceptors>
中间加上类路径 <bean class="com.ai.aiga.view.interceptor.AuthInterceptor" />
</mvc:interceptors>
这样的话所有的请求都会先经过这个拦截器 在进入控制层
但是如果不想让所有的请求都经过 就需要配置拦截规则
<mvc:interceptors>
<mvc:interceptors>
<mvc:mapping path = "需要拦截的路径"/><--! -这里就是规则->
<bean class="com.ai.aiga.view.interceptor.AuthInterceptor" />
</mvc:interceptors>
</mvc:interceptors>
handlerInterceptor 有三个方法
分别为public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
preHandle是在请求被处理之前调用 表示是否需要将当前的请求拦截下来 如果返回false请求将被终止 true请求继续,参数表里有个Object handler 这个 handler 就表示 被处理的目标 也就是Controller的那个目标对象 那个类
postHandle是在请求被处理之后调用
参数ModelAndView可以对模型和视图进行控制,可以通过ModelAndView.addObject("msg","返回到视图") 再在前台${msg} 来取到值
afterCompletion是在请求结束之后调用 视图已经显示出来之后 用于最一些资源、流的关闭和销毁
当有多个拦截器的时候 还没到达控制器的时候,是依次执行他们的preHandle方法 返回的时候也依次执行postHandle方法 结束的时候是依次执行afterCompletion方法
登陆页面和登陆处理url都要写在exclude-mapping path,不然登陆处理也会被拦截器拦截:
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/WEB-INF/jsps/login.jsp"/>
<mvc:exclude-mapping path="/user/dologin"/>
<bean class="com.my.interceptor.LoginInterceptor"></bean>
使用场景:1、处理请求当中的共性问题 比如乱码
2、权限问题 比如对用户是否登录进行判断 if(arg0.getSession.getAttribute("user")=null){
request.getRequestDispatcher("/login.jsp").forward(request, response)
return false;
}
和过滤器的比较
过滤器filter依赖于selvelt容器,基于回调方法,过滤范围大,还可以过去资源
拦截器interceptors依赖于框架容器,基于反射机制只过滤请求
- Spring MVC 拦截器
- Spring MVC 拦截器
- Spring MVC 拦截器
- spring MVC拦截器
- Spring MVC拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- Spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- spring mvc 拦截器
- Spring MVC 拦截器
- spring mvc拦截器
- spring mvc拦截器
- spring mvc拦截器
- spring mvc拦截器
- spring mvc 拦截器
- android.view.InflateException: Binary XML file line #102: Error inflating class null
- 谷歌浏览器安装PostMan
- com.alibaba.fastjson.JSOnException:exepct '[' ,but {
- 支付宝集成过程详解——运行DEMO
- c语言如何操作内存(数据类型、函数在内存中解析简介)
- Spring MVC 拦截器
- windows下判断网卡是否是虚拟网卡的方式
- RedHat 解决中文乱码及安装中文输入法
- MySql 存在记录就更新,不存在就新增
- hadoop分布式安装zookeeper
- Linux调优方案,sysctl.conf的设置
- 切换开关显示或隐藏密码
- find_first_of()和 find_last_of()
- php中parse_ini_file方法的使用