- 首先编写相当于web.xml的配置类
| package com.powernode.springmvc.config; |
| |
| import jakarta.servlet.Filter; |
| import org.springframework.context.annotation.Configuration; |
| import org.springframework.web.filter.CharacterEncodingFilter; |
| import org.springframework.web.filter.HiddenHttpMethodFilter; |
| import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; |
| |
| import java.nio.charset.CharacterCodingException; |
| |
| |
| @Configuration |
| public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { |
| @Override |
| protected Class<?>[] getRootConfigClasses() { |
| return new Class[0]; |
| } |
| |
| @Override |
| protected Class<?>[] getServletConfigClasses() { |
| return new Class[]{SpringmvcConfig.class}; |
| } |
| |
| @Override |
| protected String[] getServletMappings() { |
| return new String[]{"/"}; |
| } |
| |
| @Override |
| protected Filter[] getServletFilters() { |
| |
| CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter("UTF-8"); |
| |
| characterEncodingFilter.setForceResponseEncoding(true); |
| characterEncodingFilter.setForceRequestEncoding(true); |
| |
| HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter(); |
| return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter}; |
| } |
| } |
- 编写spring配置文件的类
| package com.powernode.springmvc.config; |
| |
| |
| import com.powernode.springmvc.interceptors.MyInterceptor; |
| import org.springframework.context.ApplicationContext; |
| import org.springframework.context.annotation.Bean; |
| import org.springframework.context.annotation.ComponentScan; |
| import org.springframework.context.annotation.Configuration; |
| import org.springframework.web.servlet.HandlerExceptionResolver; |
| import org.springframework.web.servlet.config.annotation.*; |
| import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; |
| import org.thymeleaf.spring6.SpringTemplateEngine; |
| import org.thymeleaf.spring6.templateresolver.SpringResourceTemplateResolver; |
| import org.thymeleaf.spring6.view.ThymeleafViewResolver; |
| import org.thymeleaf.templatemode.TemplateMode; |
| import org.thymeleaf.templateresolver.ITemplateResolver; |
| |
| import java.util.List; |
| import java.util.Properties; |
| |
| |
| @Configuration |
| @ComponentScan("com.powernode.springmvc.controller") |
| |
| @EnableWebMvc |
| public class SpringmvcConfig implements WebMvcConfigurer { |
| |
| @Bean |
| public ThymeleafViewResolver getViewResolver(SpringTemplateEngine springTemplateEngine){ |
| ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver(); |
| thymeleafViewResolver.setTemplateEngine(springTemplateEngine); |
| thymeleafViewResolver.setCharacterEncoding("UTF-8"); |
| thymeleafViewResolver.setOrder(1); |
| return thymeleafViewResolver; |
| } |
| |
| @Bean |
| public SpringTemplateEngine templateEngine(ITemplateResolver iTemplateResolver){ |
| SpringTemplateEngine springTemplateEngine = new SpringTemplateEngine(); |
| springTemplateEngine.setTemplateResolver(iTemplateResolver); |
| return springTemplateEngine; |
| } |
| |
| @Bean |
| public ITemplateResolver templateResolver(ApplicationContext applicationContext){ |
| SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver(); |
| springResourceTemplateResolver.setApplicationContext(applicationContext); |
| springResourceTemplateResolver.setPrefix("/WEB-INF/templates/"); |
| springResourceTemplateResolver.setSuffix(".html"); |
| springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML); |
| springResourceTemplateResolver.setCharacterEncoding("utf-8"); |
| springResourceTemplateResolver.setCacheable(false); |
| return springResourceTemplateResolver; |
| } |
| |
| |
| @Override |
| public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { |
| configurer.enable(); |
| } |
| |
| |
| @Override |
| public void addViewControllers(ViewControllerRegistry registry) { |
| registry.addViewController("/test").setViewName("Test"); |
| } |
| |
| |
| @Override |
| public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { |
| |
| SimpleMappingExceptionResolver simpleMappingExceptionResolver = new SimpleMappingExceptionResolver(); |
| |
| Properties properties = new Properties(); |
| properties.setProperty("java.lang.Exception","tip"); |
| simpleMappingExceptionResolver.setExceptionMappings(properties); |
| |
| simpleMappingExceptionResolver.setExceptionAttribute("exception"); |
| |
| resolvers.add(simpleMappingExceptionResolver); |
| } |
| |
| @Override |
| public void addInterceptors(InterceptorRegistry registry) { |
| MyInterceptor myInterceptor = new MyInterceptor(); |
| registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/test"); |
| } |
| } |
- 编写Controller类
| package com.powernode.springmvc.controller; |
| |
| import org.springframework.stereotype.Controller; |
| import org.springframework.web.bind.annotation.RequestMapping; |
| import org.springframework.web.bind.annotation.RequestMethod; |
| |
| @Controller |
| public class HelloController { |
| @RequestMapping(value = "/hello") |
| public String hello(){ |
| System.out.println("hello方法"); |
| return "hello"; |
| } |
| } |
-
编写hello.html页面,启动tomcat,访问localhost/hello测试

-
编写配置Interceptor
| package com.powernode.springmvc.interceptors; |
| |
| import jakarta.servlet.http.HttpServletRequest; |
| import jakarta.servlet.http.HttpServletResponse; |
| import org.springframework.context.annotation.ComponentScan; |
| import org.springframework.stereotype.Component; |
| import org.springframework.web.servlet.HandlerInterceptor; |
| import org.springframework.web.servlet.ModelAndView; |
| |
| @Component |
| public class MyInterceptor implements HandlerInterceptor { |
| @Override |
| public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { |
| System.out.println("preHandle执行了"); |
| return true; |
| } |
| |
| @Override |
| public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { |
| |
| |
| } |
| |
| @Override |
| public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { |
| |
| |
| } |
| } |
- 设置拦截规则

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)