拦截器
1.编写一个拦截器实现HandlerInterceptor接口
2.拦截器注册到容器中(实现WebMvcConfigurerAdapter的addInterceptors)
3.指定拦截规则(如果是拦截所有,静态资源也会被拦截)
InterceptorConfig代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.xt.cn.springboot.interceptor.config; import com.xt.cn.springboot.interceptor.interceptor.LogCostInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class InterceptorConfig extends WebMvcConfigurerAdapter{ @Override public void addInterceptors(InterceptorRegistry registry){ //registry.addInterceptor(new LogCostInterceptor()).addPathPatterns("/**"); registry.addInterceptor( new LogCostInterceptor()).addPathPatterns( "/test1" ); registry.addInterceptor( new LogCostInterceptor()).addPathPatterns( "/test2" ); super .addInterceptors(registry); } } |
LogCostInterceptor代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | package com.xt.cn.springboot.interceptor.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.PrintWriter; import java.util.Enumeration; public class LogCostInterceptor implements HandlerInterceptor { long start = System.currentTimeMillis(); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { /*HttpSession session = request.getSession(); session.setAttribute("user","zhangsan"); session.setAttribute("pwd",123456); Enumeration<String> attributeNames = session.getAttributeNames(); while (attributeNames.hasMoreElements()){ String k = attributeNames.nextElement(); System.out.println(k+"--"+session.getAttribute(k)); }*/ String userName = request.getParameter( "username" ); System.out.println( "请求执行之前:userName=" +userName + "111" ); return true ; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { String userName = request.getParameter( "username" ); System.out.println( "请求执行之后:userName=" +userName + "222" ); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } } |
Test1Controller代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | package com.xt.cn.springboot.interceptor.controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @RestController public class Test1Controller { @GetMapping ( "/test1" ) public String test(HttpServletRequest request, String username) { System.out.println( "controller中username=" + username); System.out.println( "请求头中的Cookie信息:" + request.getHeader( "Cookie" )); return "123" ; } @GetMapping ( "/test2" ) public String test2(HttpServletRequest request) { return "123" ; } } |
分类:
SpringBoot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
2021-07-17 springboot单元测试