springMVC拦截器功能简单案例
来源:互联网 发布:淘宝图片怎么拍 编辑:程序博客网 时间:2024/06/06 04:29
Interceptor(即处理器拦截器、拦截器),类似于 Servlet 开发中的过滤器 Filter,用于对处理器(Controller)进行预处理和后处理。
常见的应用场景:
1. 日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。
2.权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面。
3.性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录)。
4.通用行为:读取 cookie 得到用户信息并将用户对象放入请求,从而方便后续流程使用。
举个例子验证用户是否处于登录状态:
springMVC.xml配置文件,添加拦截器功能
<!-- 配置拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller --> <mvc:mapping path="/fileUploadController/fileUpload"/> <!-- 自定义拦截器名称及类的映射路径--> <bean id="LoginInterceptor" class="com.test.utils.interceptor.LoginInterceptor"/> </mvc:interceptor> </mvc:interceptors>jsp界面form表单提交:
<form method="post" action="findById"> <h3>登录</h3> <label>用户名:</label><input type="text" name="username"> <br> <br> <label>密 码:</label><input type="password" name="password"> <br><br> <br> <div style="text-align: center"> <button type="submit">登录</button> <button type="reset">重置</button> <br> <p><a href="register.jsp">还没有帐号?点击这里注册!</a></p> </div> </form>对用后台controller接受参数,验证登录成功后通过session存储user(省略了service等代码):
@RequestMapping("/findById")public String login (String username,Integer password,HttpSession session){if(password == null || password.equals("")){return "login";}else{Map<String,Object> map = userService.findByUserId(password);if(map == null || map.isEmpty()){return "login";}session.setAttribute("user", map);//session.invalidate();return "index";}}
当用户再次切换其它界面,就会用到拦截器判断,以下为拦截器代码实例:
import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;public class LoginInterceptor extends HandlerInterceptorAdapter{//进入Handler之前执行//用于身份认证,身份授权 @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Map map = (Map) request.getSession().getAttribute("user"); if(map == null || map.isEmpty()){ System.out.println("Interceptor:跳转到login页面!"); request.getRequestDispatcher("/WEB-INF/login.jsp").forward(request, response); return false; }else return true; } //进入Handler之后,返回modelAndView之前执行//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图 @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle"); } //Handler执行完成之后执行//应用场景:统一异常处理,统一日志处理 @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
最后补充一下session周期信息:
1.默认session周期为30min;
2.session周期设置两种方法如下:
2.1 session.setMaxInactiveInterval(你想设置的时间);设置的时间是以秒计算,它是根据服务器来计算时间.
2.2在web.xml配置文件里配置:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
上面20的意思是会话的失效时间是20分钟.这里是按照分钟来计算.
session销毁方法: session.invalidate();
0 0
- springMVC拦截器功能简单案例
- (2) SpringMVC拦截器案例和讲解
- springmvc登陆拦截案例
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- springMVC 拦截器简单配置
- SpringMVC拦截器简单使用
- SpringMVC拦截器简单使用
- springMVC 拦截器简单配置
- springMVC 拦截器简单配置
- springMVC 拦截器简单配置
- springMVC拦截器简单实践
- SpringMVC 简单拦截器配置
- apache一些参数 AllowOverride
- linux设置问题
- TCP三次握手
- ubuntu下安装lxml时出现的问题
- Windows10 的启动项
- springMVC拦截器功能简单案例
- qml 之item学习
- SecureCrt开启会话Log
- Android SQLite Search 紀錄
- Centos设置开机启动Apache和Mysql
- 是真是假?
- 彻底了解JAVA-策略模式(皇室战争是怎样炼成的)
- Javascript例题(持续更新)
- 正则表达式基本语法