2023-09-16
导入的依赖
<dependencies> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.1</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> <version>3.1.0</version> </dependency> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId> <version>3.0.12.RELEASE</version> </dependency> </dependencies>
WebInit
package com.hh.config; 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 javax.servlet.Filter; /** * @author hh * @version 1.0 * @DATE 2023-09-16 11:47:04 */ @Configuration public class WebInit extends AbstractAnnotationConfigDispatcherServletInitializer { @Override //设置一个配置类代替spring的配置文件 protected Class<?>[] getRootConfigClasses() { return new Class[]{SpringConfig.class}; } @Override //设置一个配置类代替springmvc的配置文件 protected Class<?>[] getServletConfigClasses() { return new Class[]{WebConfig.class}; } @Override //设置springmvc的前端控制器DispatcherServlet的url-pattern protected String[] getServletMappings() { return new String[]{"/"}; } @Override //设置当前的过滤器 protected Filter[] getServletFilters() { //创建编码过滤器 CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setEncoding("UTF-8"); characterEncodingFilter.setForceEncoding(true); //创建处理请求方式的过滤器 HiddenHttpMethodFilter hiddenHttpMethodFilter = new HiddenHttpMethodFilter(); return new Filter[]{characterEncodingFilter,hiddenHttpMethodFilter}; } }
WebConfig
package com.hh.config; import com.hh.interceptor.FirstInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.*; import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver; import org.thymeleaf.spring5.SpringTemplateEngine; import org.thymeleaf.spring5.view.ThymeleafViewResolver; import org.thymeleaf.templatemode.TemplateMode; import org.thymeleaf.templateresolver.ITemplateResolver; import org.thymeleaf.templateresolver.ServletContextTemplateResolver; import java.util.List; import java.util.Properties; /** * @author hh * @version 1.0 * @DATE 2023-09-16 11:50:22 */ //将类标识为配置类 @Configuration //扫描组件 @ComponentScan("com.hh.controller") //开启mvc的注解驱动 @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override //默认的servlet处理静态资源 public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } @Override //配置视图解析器 public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); } @Bean //@Bean注解可以将标识的方式的返回值作为bean进行管理 public CommonsMultipartResolver multipartResolver(){ return new CommonsMultipartResolver(); } @Override //配置拦截器 public void addInterceptors(InterceptorRegistry registry) { FirstInterceptor firstInterceptor = new FirstInterceptor(); registry.addInterceptor(firstInterceptor).addPathPatterns("/**"); } @Override //配置异常解析器 public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { SimpleMappingExceptionResolver exceptionResolver = new SimpleMappingExceptionResolver(); Properties prop = new Properties(); prop.setProperty("java.lang.ArithmeticException","error"); exceptionResolver.setExceptionMappings(prop); exceptionResolver.setExceptionAttribute("ex"); resolvers.add(exceptionResolver); } //配置生成模板解析器 @Bean public ITemplateResolver templateResolver(){ WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(webApplicationContext.getServletContext()); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); templateResolver.setCharacterEncoding("UTF-8"); templateResolver.setTemplateMode(TemplateMode.HTML); return templateResolver; } //生成模板引擎并为模板引擎注入模板解析器 @Bean public SpringTemplateEngine templateEngine(ITemplateResolver templateResolver){ SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(templateResolver); return templateEngine; } //生成视图解析器并为解析器注入模板引擎 @Bean public ViewResolver viewResolver(SpringTemplateEngine templateEngine){ ThymeleafViewResolver viewResolver = new ThymeleafViewResolver(); viewResolver.setCharacterEncoding("UTF-8"); viewResolver.setTemplateEngine(templateEngine); return viewResolver; } }
SpringConfig
package com.hh.config; import org.springframework.context.annotation.Configuration; /** * @author hh * @version 1.0 * @DATE 2023-09-16 11:50:09 */ @Configuration public class SpringConfig { }
标签:web,springmvc,WebConfig,springframework,WebInit,import,org,new,public From: https://www.cnblogs.com/isDaHua/p/17706596.html