Spring拦截器
2015-10-14 23:01
393 查看
Spring的拦截器配置文件
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <!-- 不需要拦截的路径--> <mvc:exclude-mapping path="/login"/> <bean class="com.springmvc.controller.interceptor.LoginInterceptor" /> </mvc:interceptor> <!-- 可以配置多个 --> </mvc:interceptors>
LoginInterceptor.java
package com.springmvc.controller.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class LoginInterceptor extends HandlerInterceptorAdapter { private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { long startTime = System.currentTimeMillis(); logger.info("请求URL::" + request.getRequestURL().toString() + ":: Start Time=" + System.currentTimeMillis()); request.setAttribute("startTime", startTime); //if returned false, we need to make sure 'response' is sent return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("请求URL::" + request.getRequestURL().toString() + " Sent to Handler :: Current Time=" + System.currentTimeMillis()); //这里可以做业务操作如判断session中user,不存在做跳转。 //we can add attributes in the modelAndView and use that in the view page } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { long startTime = (Long) request.getAttribute("startTime"); logger.info("请求URL::" + request.getRequestURL().toString() + ":: End Time=" + System.currentTimeMillis()); logger.info("请求URL::" + request.getRequestURL().toString() + ":: Time Taken=" + (System.currentTimeMillis() - startTime)); } }
UserController.java
package com.springmvc.controller; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/") public class UserController { private static final Logger logger = LoggerFactory.getLogger(UserController.class); /** * 测试拦截器 * @param model * @return */ @RequestMapping(value = "/home", method = RequestMethod.GET) public String home(Model model) { logger.info("Welcome home! "); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } model.addAttribute("serverTime", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); logger.info("Before returning view page"); return "home"; } }
浏览器URL测试 :http://localhost:8080/example/home
相关文章推荐
- Java 对象初始化顺序 执行顺序
- 如何使用dos命令解压文件?
- 【cl】控制台执行Java程序
- java大数
- 冒泡排序Java语言实现及其优化
- 新手学Struts2的几个小注意事项
- [笔记][Java7并发编程实战手册][后补]1.线程管理
- 新手学Struts2的几个小注意事项
- spring学习日记(day1)
- 【华为OJ】201301 JAVA 题目0-1级
- spring整合消息队列rabbitmq
- 动态执行的方法java
- Java反射
- null pointer at org.springframework.beans.PropertyEditorRegistrySupport
- 给出 《java学习笔记》 PDF格式
- 黑马程序员一一高级开发工具Eclipse
- Spring 容器初始化方法
- java缓存技术
- java判断一个字符串是否为空的方法总结
- 学习心得(Java语言)