SpringMVC——拦截器Interceptor
2021/11/29 6:06:23
本文主要是介绍SpringMVC——拦截器Interceptor,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
spring的拦截器interceptor就是web的Filter
部署
<!-- 配置拦截器群 --> <mvc:interceptors> <!-- 配置拦截器 --> <mvc:interceptor> <!-- 配置拦截路径! /** 代表所有 --> <mvc:mapping path="/**"/> <!-- 配置排除操作 path=“排除路径” --> <mvc:exclude-mapping path="/user/login"/> <!-- mvc内生成拦截器对象 --> <bean class="xyz.javaswing.Interceptor.PrivilegeInterceptor"/> </mvc:interceptor> </mvc:interceptors>
实现
拦截的使用实现Spring提供拦截器接口:HandlerInterceptor
重写内部的方法。
boolean preHandle (HttpServletRequest request , HttpServletResponse response , Object handler)
参数
request:拦截的请求对象
response:拦截的响应对象
handler:未知
返回值:boolean
返回值意义:能否通行。true可以通行,false不可通行
作用:拦截在响应前做出过滤操作
void postHandle(HttpServletRequest request,HttpServletResponse response , Object Handler,ModelAndView modelAndView)
参数:
request:拦截到的请求对象
response:拦截到的响应对象
handler:未知
modelAndView:拦截到的视图对象
返回值:无
返回值意义:无
作用:拦截请求,在视图返回前做出操作。
void afterCompletion(HttpServletRequest request,HttpServletResponse response , Object Handler,Exception ex)
参数:
request:拦截到的请求对象
response:拦截到的响应对象
handler:未知
ex:异常对象,未知作用
返回值:void
返回值意义:无
作用:在视图返回后,作操作
使用
<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <!-- 配置排除操作 --> <mvc:exclude-mapping path="/user/login"/> <bean class="xyz.javaswing.Interceptor.PrivilegeInterceptor"/> </mvc:interceptor> </mvc:interceptors>
public class PrivilegeInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 判断用户是否登陆,session中有无user HttpSession session = request.getSession(); User user =(User) session.getAttribute("user"); if( user == null ){ response.sendRedirect(request.getContextPath()+"/login.jsp"); return false; // 不放行 } // 有user,放行。让它访问啥就访问啥。 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } }
这篇关于SpringMVC——拦截器Interceptor的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现
- 2024-05-30我们小公司,哪像华为一样,用得上IPD(集成产品开发)?