1.配置拦截器
在springMVC.xml配置文件增加:

1
2
3
4
5
6
7 </mvc:interceptor>
8 </mvc:interceptors>

说明:
1)mvc:mapping 拦截器路径配置
2)mvc:exclude-mapping 拦截器不需要拦截路径
2、样例:

1 public class LogsInterceptor extends HandlerInterceptorAdapter {
2
3 private static final Logger logger = LoggerFactory.getLogger(LogsInterceptor.class);
4
5 private NamedThreadLocal logContext = new NamedThreadLocal("log-id");
6
7 @Autowired
8 private TLogDao logDao;
9
10 /
11 preHandle该方法用于处理器拦截,顾名思义,该方法将用于Controller在处理之前调用,
12 SpringMVC中的Interceptor拦截器是连锁的,可以同时存在。Interceptor,
13 然后SpringMVC将按照申报前后的顺序逐一执行,
14 所有这些Interceptor中的preHandle方法将在Controller在调用方法之前调用。
15 SpringMVC的这种Interceptor链结构也可以中断,
16 这种中断是为了preHandle返回值false,当preHandle返回值false整个请求都结束了。
17 */
18 @Override
19 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
20 String host = request.getRemoteHost();
21 String url = request.getRequestURI();
22 TLogEntity entity = new TLogEntity();
23 entity.setCreateTime(new Timestamp(System.currentTimeMillis()));
24 entity.setCreateUser("admin");
25 entity.setIpAddress(host);
26 entity.setLogUrl(url);
27 entity.setIsSuccess("N");
28 logDao.save(entity);
29 logContext.set(entity.getLogId());
30
31 logger.debug("IP为---->>> " + host + " <<<-----已访问系统");
32 return true;
33 }
34
35 /*
36 此方法仅用于当前Interceptor的preHandle方法返回一个值true何时实施。
37 postHandle它用于处理器拦截,其执行时间是处理器正在处理的时间。 后, 也就是在Controller在方法调用之后执行,
38 但它会在DispatcherServlet在渲染视图之前执行,也就是说,在这种方法中可以执行。ModelAndView运转
39 此方法的链结构与正常访问的方向相反,也就是说,首先声明它。Interceptor拦截器方法将在会议之后被调用,
40 这跟Struts2拦截器内部的执行过程有点像,
41 只是Struts2里面的intercept要手动调用的方法ActionInvocation的invoke方法,
42 Struts2中调用ActionInvocation的invoke方法是调用下一个Interceptor或致电action,
43 然后要在Interceptor上一次呼叫的内容将写入呼叫中。invoke之前,在Interceptor之后,调用的内容将写入调用中。invoke方法之后。
44 /
45 @Override
46 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
47 }
48
49 /
50 该方法还需要相应的电流Interceptor的preHandle方法返回值true将执行。
51 此方法将在整个请求之后完成,即。DispatcherServlet渲染视图执行, 该方法的主要目的是清理资源,
52 */
53 @Override
54 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
55 String host = request.getRemoteHost();
56 String logId = logContext.get();
57 TLogEntity entity = logDao.findOne(logId);
58 entity.setIsSuccess("Y");
59 logDao.save(entity);
60
61 logger.debug("IP为---->>> " + host + " <<<-----访问成功");
62 }
63
64 }

在这个拦截器中,您可以在方法执行之前执行它。session或权限。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除