[Java Spring MVC] Introduction to interceptors
2023-09-14 08:59:13 时间
Interceptor jump in before controller. So request may not reach controller if Pre-process is not ok.
Demo:
package com.test.hplus.interceptors; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; public class LoggingInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //get all cookies //log session id: //log the request path String sessionId = null; if(null!=request.getCookies()){ for(Cookie cookie: request.getCookies()){ if("JSESSIONID".equals(cookie.getName())){ sessionId = cookie.getValue(); } } } System.out.println("Incoming request data log: session: "+sessionId+ " at "+ new Date()+" for "+request.getRequestURI()); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("in post handle"); } }
Add inteceptor to conifg:
@Configuration @ComponentScan(basePackages = "com.test.hplus") public class ApplicationConfig extends WebMvcConfigurationSupport { ... @Override protected void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoggingInterceptor()).addPathPatterns("/*"); } }
For each requests, login interceptor will jump in.
Forwarding request from login controller to profile controller:
@PostMapping("/login") public String login(@ModelAttribute("login")Login login){ User user = userRepository.searchByName(login.getUsername()); if(user==null){ throw new ApplicationException("User not found"); } return "forward:/userprofile"; }
@Controller public class UserProfileController { @PostMapping("/userprofile") public String getUserProfile(@SessionAttribute("login")Login login, Model model){ System.out.println("in user profile controller"); System.out.println("username from session: "+login.getUsername()); //call to userrepository to get all the user information model.addAttribute("username", login.getUsername()); return "profile"; } }
相关文章
- 深入java面向对象五:Java的内存管理
- ssh(Spring+Spring mvc+hibernate)——DeptServiceImpl.java
- ssh(Spring+Spring mvc+hibernate)——IDeptService.java和IEmpService.java
- sh(Spring+Spring mvc+hibernate)——BaseDao.java
- spring boot: java @interface注解
- Java实现 LeetCode 125 验证回文串
- Java实现LeetCode_0026_RemoveDuplicatesFromSortedArray
- Java实现 蓝桥杯VIP 算法训练 打印下述图形
- java 网络编程 UDP TCP
- Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错
- java 11 标准Java异步HTTP客户端
- [Java Spring MVC] Paging and sorting DTOs
- [Java Spring MVC] @PathVariable, @Vallidated, @PostMapping & @ResponseStatus
- [Java Spring] JPA CrudRepository query language
- Spring异常解决 java.lang.NullPointerException,配置spring管理hibernate时出错
- Java SpringBoot 应用使用命令行 mvn spring-boot run 启动的原理
- Atitit java rest mvc微服务原理以及框架选型 目录 第一节 Mvc原理 model controler view1 第二章 Spark 最简单1 第一节 Sprbt to
- Java 多线程(一)并发、并行、线程、多线程、进程
- Mongodb3.0.5副本集搭建及spring和java连接副本集配置
- 详解jvm之java类加载机制和类加载器(ClassLoader) 深入理解Java类加载器(ClassLoader) 如何自定义类加载器 深入说明双亲委派 双亲委派模型的破坏者-线程上下文类加载器
- Java一流的施工顺序
- Spring实战——通过Java代码装配bean
- 每天五个java相关面试题(8)--spring篇
- JAX-RS介绍——Java API forRESTful WebServices,JAX-RS的目标是Web Services开发(这与HTML Web应用不同)而Spring MVC的目标则是Web应用开发
- Java:openjdk: error: Student is abstract; cannot be instantiated;java编译环境
- 【java】Spring Boot -- Spring AOP原理及简单实现
- JAVA开发讲义(二)-Java程序设计之数据之谜四