查看网站 vps,sem是什么分析方法,地方旅游网站建设必要性,建站易分类#xff1a; 中央转发器(DispatcherServlet)控制器视图解析器静态资源访问消息转化器格式化静态资源管理 中央转发器#xff1a; 中央转发器被 SpringBoot 自动接管#xff0c;不需要我们在 web.xml 中配置#xff1a; servletservlet-namechapter2 中央转发器(DispatcherServlet)控制器视图解析器静态资源访问消息转化器格式化静态资源管理 中央转发器 中央转发器被 SpringBoot 自动接管不需要我们在 web.xml 中配置 servletservlet-namechapter2/servlet-nameservlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-classload-on-startup1/load-on-startup
/servlet
servlet-mappingservlet-namechapter2/servlet-nameurl-pattern//url-pattern
/servlet-mapping 中央转发器被 SpringBoot 自动接管不需要我们在 web.xml 中配置我们现在的项目也不是 web 项目也不存在 web.xml查看 DispatcherServlet org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration/ 控制器 控制器 Controller 在 SpringBoot 的注解扫描范围内自动管理 视图解析器自动管理 Inclusion of ContentNegotiatingViewResolver and BeanNameViewResoler BeansContentNegotiatingViewResoler组合所有的视图解析器无需再配置曾经的配置文件 bean idde classorg.springframework.web.servlet.view.InternalResourceViewResolverproperty nameprefix value/WEB-INF/jsp//propertyproperty namesuffix value*.jsp/property
bean 源码 public ContentNegotiatingViewResolver viewResolver(BeanFactory beanFactory) {ContentNegotiatingViewResolver resolver new ContentNegotiatingViewResolver();resolver.setContentNegotiationManager((ContentNegotiationManager)beanFactory.getBean(ContentNegotiationManager.class));resolver.setOrder(-2147483648);return resolver;
}} 当我们做文件上传的时候 multpartResolver 是自动被配置好的页面 页面 form action/upload methodpost enctypemultipart/form-datainput namepic typefileinput typesubmit
form Controller ResponseBody
RequestMapping(/upload)
public String upload(RequestParam(pic)MultipartFile file, HttpServletRequest request){String contentType file.getContentType();String fileName file.getOriginalFilename();
/*System.out.println(fileName-- fileName);
System.out.println(getContentType-- contentType);*///String filePath request.getSession().getServletContext().getRealPath(imgupload/);String filePath D:/imgup/;try {this.uploadFile(file.getBytes(), filePath, fileName);} catch (Exception e) {// TODO: handle exception}return success;
}public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {File targetFile new File(filePath);if(!targetFile.exists()){targetFile.mkdirs();}FileOutputStream out new FileOutputStream(filePathfileName);out.write(file);out.flush();out.close();
}; 文件上传可以通过配置来修改 打开 application.properties默认限制是 10 MB可以任意修改 消息转换和格式化 SpringBoot 自动配置了消息转换器格式转换器的自动注册时间类型可以修改 欢迎页面的自动装配 SpringBoot 自动指定 resources 下的 index.html SpringBoot 扩展 SpringMVC 通过实现 WebMvcConfigurer 接口来扩展 public interface WebMvcConfigurer {default void configurePathMatch(PathMatchConfigurer configurer) {}default void configureContentNegotiation(ContentNegotiationConfigurer configurer) {}default void configureAsyncSupport(AsyncSupportConfigurer configurer) {}default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {}default void addFormatters(FormatterRegistry registry) {}default void addInterceptors(InterceptorRegistry registry) {}default void addResourceHandlers(ResourceHandlerRegistry registry) {}default void addCorsMappings(CorsRegistry registry) {}default void addViewControllers(ViewControllerRegistry registry) {}default void configureViewResolvers(ViewResolverRegistry registry) {}default void addArgumentResolvers(ListHandlerMethodArgumentResolver resolvers) {}default void addReturnValueHandlers(ListHandlerMethodReturnValueHandler handlers) {}default void configureMessageConverters(ListHttpMessageConverter? converters) {}default void extendMessageConverters(ListHttpMessageConverter? converters) {}default void configureHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) {}default void extendHandlerExceptionResolvers(ListHandlerExceptionResolver resolvers) {}Nullabledefault Validator getValidator() {return null;}Nullabledefault MessageCodesResolver getMessageCodesResolver() {return null;}
} 在容器中注册视图控制器(请求转发) 创建一个 MyMvcConfig 实现 WebMvcConfigurer 接口实现 addViewController 方法完成通过 /tx 访问转发到 success.html 的工作 Configuration
public class MyMVCCofnig implements WebMvcConfigurer {Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController(/tx).setViewName(success);}
} 注册格式化器 用来可以对请求过来的日期格式化的字符串来做指定化通过 application.properties 配置也可以办到 Override
public void addFormatters(FormatterRegistry registry) {registry.addFormatter(new FormatterDate() {Overridepublic String print(Date date, Locale locale) {return null;}Overridepublic Date parse(String s, Locale locale) throws ParseException {return new SimpleDateFormat(yyyy-MM-dd).parse(s);}});
} 消息转换器扩展 fastjson 在 pom.xml 中引入 fastjson dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.47/version
/dependency 配置消息转换器添加 fastjson Overridepublic void configureMessageConverters(ListHttpMessageConverter? FastJsonHttpMessageConverter fc
converters) {new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); fc.setFastJsonConfig(fastJsonConfig); converters.add(fc); 在实体类中控制 public class User {private String username;private String password;private int age;private int score;private int gender;JSONField(format yyyy-MM-dd)private Date date;
} 拦截器注册 创建拦截器 public class MyInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(前置拦截);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(后置拦截);}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println(最终拦截);}
} 注册拦截器 Override
public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns(/**).excludePathPatterns(/hello2);
}