| <dependencies> |
| <dependency> |
| <groupId>javax.servlet</groupId> |
| <artifactId>javax.servlet-api</artifactId> |
| <version>3.1.0</version> |
| <scope>provided</scope> |
| </dependency> |
| <dependency> |
| <groupId>org.springframework</groupId> |
| <artifactId>spring-webmvc</artifactId> |
| <version>5.2.10.RELEASE</version> |
| </dependency> |
| <dependency> |
| <groupId>com.fasterxml.jackson.core</groupId> |
| <artifactId>jackson-databind</artifactId> |
| <version>2.9.0</version> |
| </dependency> |
| </dependencies> |
| public class Book { |
| |
| private String name; |
| |
| private double price; |
| |
| public String getName() { |
| return name; |
| } |
| |
| public void setName(String name) { |
| this.name = name; |
| } |
| |
| public double getPrice() { |
| return price; |
| } |
| |
| public void setPrice(double price) { |
| this.price = price; |
| } |
| |
| @Override |
| public String toString() { |
| return "Book{" + |
| "书名='" + name + '\'' + |
| ", 价格=" + price + |
| '}'; |
| } |
| |
| } |
| @RestController |
| @RequestMapping("/books") |
| public class BookController { |
| |
| @PostMapping |
| public String save(@RequestBody Book book){ |
| System.out.println("book save..." + book); |
| return "{'module':'book save'}"; |
| } |
| |
| @DeleteMapping("/{id}") |
| public String delete(@PathVariable Integer id){ |
| System.out.println("book delete..." + id); |
| return "{'module':'book delete'}"; |
| } |
| |
| @PutMapping |
| public String update(@RequestBody Book book){ |
| System.out.println("book update..."+book); |
| return "{'module':'book update'}"; |
| } |
| |
| @GetMapping("/{id}") |
| public String getById(@PathVariable Integer id){ |
| System.out.println("book getById..."+id); |
| return "{'module':'book getById'}"; |
| } |
| |
| @GetMapping |
| public String getAll(){ |
| System.out.println("book getAll..."); |
| return "{'module':'book getAll'}"; |
| } |
| |
| } |
| @Configuration |
| @ComponentScan({"com.itheima.controller"}) |
| @EnableWebMvc |
| public class SpringMvcConfig { |
| |
| } |
| public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer { |
| |
| protected Class<?>[] getRootConfigClasses() { |
| return new Class[0]; |
| } |
| |
| protected Class<?>[] getServletConfigClasses() { |
| return new Class[]{SpringMvcConfig.class}; |
| } |
| |
| protected String[] getServletMappings() { |
| return new String[]{"/"}; |
| } |
| |
| |
| @Override |
| protected Filter[] getServletFilters() { |
| CharacterEncodingFilter filter = new CharacterEncodingFilter(); |
| filter.setEncoding("UTF-8"); |
| return new Filter[]{filter}; |
| } |
| |
| } |
| @Component |
| |
| |
| public class ProjectInterceptor implements HandlerInterceptor { |
| |
| @Override |
| |
| |
| public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { |
| System.out.println("preHandle..."+contentType); |
| return true; |
| } |
| |
| @Override |
| |
| public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { |
| System.out.println("postHandle..."); |
| } |
| |
| @Override |
| |
| public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { |
| System.out.println("afterCompletion..."); |
| } |
| |
| } |
SpringMvcConfig需要能够扫描到拦截器
| @Configuration |
| @ComponentScan({"com.itheima.controller"}) |
| @EnableWebMvc |
| public class SpringMvcConfig { |
| |
| } |
| @Configuration |
| public class SpringMvcSupport extends WebMvcConfigurationSupport { |
| |
| |
| @Autowired |
| private ProjectInterceptor projectInterceptor; |
| |
| |
| @Override |
| protected void addResourceHandlers(ResourceHandlerRegistry registry) { |
| registry.addResourceHandler("/pages/**").addResourceLocations("/pages/"); |
| } |
| |
| |
| @Override |
| protected void addInterceptors(InterceptorRegistry registry) { |
| |
| registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*"); |
| } |
| |
| } |
SpringMvcConfig配置类中需要能够扫描到配置类
| @Configuration |
| @ComponentScan({"com.itheima.controller","com.itheima.config"}) |
| @EnableWebMvc |
| public class SpringMvcConfig { |
| |
| } |
| # 删除SpringMvcSupport |
| |
| # springmvc配置类实现WebMvcConfigurer接口 |
| @Configuration |
| @ComponentScan({"com.itheima.controller"}) |
| @EnableWebMvc |
| public class SpringMvcConfig implements WebMvcConfigurer { |
| |
| @Autowired |
| private ProjectInterceptor projectInterceptor; |
| |
| @Override |
| public void addInterceptors(InterceptorRegistry registry) { |
| |
| registry.addInterceptor(projectInterceptor).addPathPatterns("/books","/books/*"); |
| } |
| |
| } |
| |
| # 这是mvc配置类不需要再扫描SpringMvcSupport类 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?