SpringBoot unified processing: login verification interceptor, exception handling, data format return
AD |
Spring Boot AOP HandlerInterceptor + WebMvcConfigurer @RestControllerAdvice + @ExceptionHandler @ControllerAdvice @ResponseBodyAdvice1. Session Session Spring AOP Spring 1
Spring Boot AOP
- HandlerInterceptor + WebMvcConfigurer
- @RestControllerAdvice + @ExceptionHandler
- @ControllerAdvice @ResponseBodyAdvice
1.
- Session Session
- Spring AOP
- Spring
1.1
@RestController@RequestMapping("/user")public class UserController { @RequestMapping("/a1") public Boolean login (HttpServletRequest request) { // Session HttpSession session = request.getSession(false); if (session != null && session.getAttribute("userinfo") != null) { // return true; } else { // return false; } } @RequestMapping("/a2") public Boolean login2 (HttpServletRequest request) { // Session HttpSession session = request.getSession(false); if (session != null && session.getAttribute("userinfo") != null) { // return true; } else { // return false; } }}
- AOP
1.2 Spring AOP
Spring AOP
@Aspect // @Componentpublic class UserAspect { // Controller @Pointcut("execution(* com.example.springaop.controller..*.*(..))") public void pointcut(){} // @Before("pointcut()") public void doBefore() {} // @Around("pointcut()") public Object doAround(ProceedingJoinPoint joinPoint) { Object obj = null; System.out.println("Around "); try { obj = joinPoint.proceed(); } catch (Throwable e) { e.printStackTrace(); } System.out.println("Around "); return obj; }}
Spring AOP
- HttpSession Request
- aspectJ
1.3 Spring
Spring AOP Spring HandlerInterceptor
1. Spring HandlerInterceptor preHandle
2.
- @Configuration
- WebMvcConfigurer
- addInterceptors
1
/** * @Description: * @Date 2023/2/13 13:06 */@Componentpublic class LoginIntercept implements HandlerInterceptor { // true // false @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 1. HttpSession HttpSession session = request.getSession(false); if (session != null && session.getAttribute("userinfo") != null) { // return true; } // response.sendRedirect("/login.html"); return false; }}
2
- addPathPatterns URL**
- excludePathPatterns URL
URLJS CSS
/** * @Description: * @Date 2023/2/13 13:13 */@Configurationpublic class AppConfig implements WebMvcConfigurer { @Resource private LoginIntercept loginIntercept; @Override public void addInterceptors(InterceptorRegistry registry) {// registry.addInterceptor(new LoginIntercept());//new registry.addInterceptor(loginIntercept). addPathPatterns("/**"). // url excludePathPatterns("/user/login"). // excludePathPatterns("/user/reg"). excludePathPatterns("/login.html"). excludePathPatterns("/reg.html"). excludePathPatterns("/**/*.js"). excludePathPatterns("/**/*.css"). excludePathPatterns("/**/*.png"). excludePathPatterns("/**/*.jpg"); }}
1.4
- session
1.3
1 html

2 controller UserController
@RestController@RequestMapping("/user")public class UserController { @RequestMapping("/login") public boolean login(HttpServletRequest request,String username, String password) { boolean result = false; if (StringUtils.hasLength(username) && StringUtils.hasLength(password)) { if(username.equals("admin") && password.equals("admin")) { HttpSession session = request.getSession(); session.setAttribute("userinfo","userinfo"); return true; } } return result; } @RequestMapping("/index") public String index() { return "Hello Index"; }}
3


1.5
Controller

Controller DispatcherServlet

DispatcherServlet doDispatch doDispatch

Sping
1.6
api c
@Configurationpublic class AppConfig implements WebMvcConfigurer { // api @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.addPathPrefix("api", c -> true); }}

2.
@ControllerAdvice
@ExceptionHandler(xxx.class)
@RestController@RequestMapping("/user")public class UserController { @RequestMapping("/index") public String index() { int num = 10/0; return "Hello Index"; }}
config MyExceptionAdvice
@RestControllerAdvice // Controller public class MyExceptionAdvice { @ExceptionHandler(ArithmeticException.class) public HashMap<String,Object> arithmeticExceptionAdvice(ArithmeticException e) { HashMap<String, Object> result = new HashMap<>(); result.put("state",-1); result.put("data",null); result.put("msg" , ""+ e.getMessage()); return result; }}
@ControllerAdvicepublic class MyExceptionAdvice { @ExceptionHandler(ArithmeticException.class) @ResponseBody public HashMap<String,Object> arithmeticExceptionAdvice(ArithmeticException e) { HashMap<String, Object> result = new HashMap<>(); result.put("state",-1); result.put("data",null); result.put("msg" , ""+ e.getMessage()); return result; }}

@ExceptionHandler(NullPointerException.class)public HashMap<String,Object> nullPointerExceptionAdvice(NullPointerException e) { HashMap<String, Object> result = new HashMap<>(); result.put("state",-1); result.put("data",null); result.put("msg" , ""+ e.getMessage()); return result;}@RequestMapping("/index")public String index(HttpServletRequest request,String username, String password) { Object obj = null; System.out.println(obj.hashCode()); return "Hello Index";}

Exception Exception
@ExceptionHandler(Exception.class)public HashMap<String,Object> exceptionAdvice(Exception e) { HashMap<String, Object> result = new HashMap<>(); result.put("state",-1); result.put("data",null); result.put("msg" , ""+ e.getMessage()); return result;}

3.
3.1
1. @ControllerAdvice
2. ResponseBodyAdvice
- supports true
- beforeBodyWrite
@ControllerAdvicepublic class MyResponseAdvice implements ResponseBodyAdvice { // boolean true beforeBodyWrite // false @Override public boolean supports(MethodParameter returnType, Class converterType) { return true; } // @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { HashMap<String,Object> result = new HashMap<>(); result.put("state",1); result.put("data",body); result.put("msg",""); return result; }}@RestController@RequestMapping("/user")public class UserController { @RequestMapping("/login") public boolean login(HttpServletRequest request,String username, String password) { boolean result = false; if (StringUtils.hasLength(username) && StringUtils.hasLength(password)) { if(username.equals("admin") && password.equals("admin")) { HttpSession session = request.getSession(); session.setAttribute("userinfo","userinfo"); return true; } } return result; } @RequestMapping("/reg") public int reg() { return 1; }}

3.2 @ControllerAdvice
@ControllerAdvice
1 @ControllerAdvice

@ControllerAdvice @Component InitializingBean
2 initializingBean
Spring MVC RequestMappingHandlerAdapter afterPropertiesSet

3 initControllerAdviceCache

@ControllerAdvice Advice Advice
Disclaimer: The content of this article is sourced from the internet. The copyright of the text, images, and other materials belongs to the original author. The platform reprints the materials for the purpose of conveying more information. The content of the article is for reference and learning only, and should not be used for commercial purposes. If it infringes on your legitimate rights and interests, please contact us promptly and we will handle it as soon as possible! We respect copyright and are committed to protecting it. Thank you for sharing.(Email:[email protected])
Mobile advertising space rental |
Tag: SpringBoot unified processing login verification interceptor exception handling data
Overview and research status of graphene photodetectors
NextMicrosoft plans to acquire Blizzard for $69 billion, approved globally, but opposed by Sony
Guess you like
-
S&P Global Sustainability Yearbook 2024: Baidu's Inclusion Highlights the Crucial Role of AI GovernanceDetail
2025-02-19 21:08:50 1
-
Ronshen Refrigerators Lead 2024 Offline Market: Full-Scenario Embedded Refrigerators Drive Consumption UpgradeDetail
2025-02-19 19:12:01 11
-
Lenovo Xiaoxin Pro 2025 Series Unveiled: AI-Powered Evolution for an Upgraded ExperienceDetail
2025-02-19 10:43:34 11
-
The DeepSeek-R1 7B/14B API service is officially launched, offering 1 million free tokens!Detail
2025-02-19 10:18:07 1
-
Baidu's 2024 Financial Report: AI Strategy Drives Revenue Growth, Smart Cloud Leads the Large Model RaceDetail
2025-02-18 19:11:21 1
-
Xiaohongshu's IPO Plans: Rumors of State-Owned Enterprise Investment False, but Valuation Could Reach $20 USD BillionDetail
2025-02-18 10:27:03 1
-
Ulike Launches Three New Hair Removal Devices, Ushering in a New Era of Home Hair RemovalDetail
2025-02-17 22:00:06 11
-
Global Personal Smart Audio Market in 2025: Opportunities and Challenges Amidst Strong GrowthDetail
2025-02-17 15:28:45 1
-
OPPO Find N5: An In-Depth Look at the New Document App and Cross-System ConnectivityDetail
2025-02-17 15:25:26 1
-
Ping An Good Driver's AI-Powered Smart Insurance Planner Wins 2024 Technological Innovation Service Case AwardDetail
2025-02-17 09:36:45 11
- Detail
-
Xiaomi's Electric Vehicles Become a Growth Engine: Over 135,000 Deliveries in 9 Months, Orders Extending 6-7 Months OutDetail
2025-02-16 12:34:46 1
-
Geely Granted Patent for "Smart Charging Robot" Design, Enabling Automated EV ChargingDetail
2025-02-14 16:58:11 1
-
OPPO Find N5: Ushering in the 8mm Era for Foldable Smartphones A Milestone Breakthrough in Chinese Precision ManufacturingDetail
2025-02-14 13:05:02 1
-
Global Semiconductor Market Experiences Strong Growth in 2024: AI-Driven Data Centers Fuel Expansion, Samsung Reclaims Top SpotDetail
2025-02-14 13:00:26 21
-
Douyin's 2025 Spring Festival Consumption Data Report: Livestreaming Significantly Boosts Offline Consumption, Intangible Cultural Heritage and Tourism Emerge as New HighlightsDetail
2025-02-06 10:59:24 11
-
98-inch or 100-inch TV? An In-Depth Analysis of Large-Screen TV Selection ChallengesDetail
2025-02-06 05:24:30 1
-
Hanoi Stadium Drone Disaster: Unveiling the Complex Relationship Between Vietnam and the Sino-Korean Drone MarketDetail
2025-02-05 12:51:51 21
-
Douyin's 2023 Spring Festival Consumption Data Report: A Collision of Robust Consumption and Diversified New Year CustomsDetail
2025-02-05 10:21:17 1
-
Baidu Intelligent Cloud Illuminates China's First Self-Developed 10,000-GPU Cluster, Ushering in a New Era of AI Computing PowerDetail
2025-02-05 09:36:39 11