当前位置: 首页 > news >正文

免费源码资源源码站入口杨园建设社区网站

免费源码资源源码站入口,杨园建设社区网站,个人网站建设培训,网站管理系统改不了的web场景#xff0c;默认配置#xff1a; 包含了 ContentNegotiatingViewResolver 和 BeanNameViewResolver 组件#xff0c;方便视图解析默认的静态资源处理机制#xff1a; 静态资源放在 static 文件夹下即可直接访问自动注册了 Converter,GenericConverter,Formatter组件…web场景默认配置 包含了 ContentNegotiatingViewResolver 和 BeanNameViewResolver 组件方便视图解析默认的静态资源处理机制 静态资源放在 static 文件夹下即可直接访问自动注册了 Converter,GenericConverter,Formatter组件适配常见数据类型转换和格式化需求支持 HttpMessageConverters可以方便返回json等数据类型注册 MessageCodesResolver方便国际化及错误消息处理支持 静态 index.html自动使用ConfigurableWebBindingInitializer实现消息处理、数据绑定、类型转化、数据校验等功能 Web开发的方式 如果想保持 boot mvc 的默认配置并且自定义更多的 mvc 配置如interceptors, formatters, view controllers 等。可以使用Configuration注解添加一个 WebMvcConfigurer 类型的配置类并不要标注 EnableWebMvc如果想保持 boot mvc 的默认配置但要自定义核心组件实例比如RequestMappingHandlerMapping, RequestMappingHandlerAdapter, 或ExceptionHandlerExceptionResolver给容器中放一个 WebMvcRegistrations 组件即可如果想全面接管 Spring MVCConfiguration 标注一个配置类并加上 EnableWebMvc注解实现 WebMvcConfigurer 接口 web开发有三种方式 方式用法效果全自动直接编写控制器逻辑全部使用自动配置默认效果手自一体Configuration 配置WebMvcConfigurer配置 WebMvcRegistrations不要标注EnableWebMvc保留自动配置效果手动设置部分功能 定义MVC底层组件全手动Configuration 配置WebMvcConfigurer标注EnableWebMvc禁用自动配置效果全手动设置 如果有定制化需求给容器中写一个配置类在配置类上加上Configuration注解并不要标注EnableWebMvc让这个配置类实现WebMvcConfigurer接口就可以实现手自一体的效果 WebMvcAutoConfiguration WebMvcAutoConfiguration会给项目配置两个Filter HiddenHttpMethodFilter 用于页面表单提交Rest请求GET、POST、PUT、DELETEFormContentFilter 表单内容FilterGET数据放URL后面、POST数据放请求体请求可以携带数据PUT、DELETE 的数据会被忽略。配置了FormContentFilter 后PUT、DELETE的数据就不会被忽略WebMvcAutoConfiguration给容器中放了WebMvcConfigurer组件给SpringMVC添加各种定制功能用手自一体方式开发时会派上用场 WebMvcConfigurer接口提供了SpringMVC底层的所有组件入口所有的功能最终会和配置文件进行绑定 WebMvcProperties和 spring.mvc配置绑定WebProperties和 spring.web 配置绑定 静态资源 静态资源规则 规则一访问 /webjars/**路径就去 classpath:/META-INF/resources/webjars/下找资源.规则二访问 /**路径就去 静态资源默认的四个位置找资源 classpath:/META-INF/resources/classpath:/resources/classpath:/static/classpath:/public/规则三静态资源默认都有缓存规则的设置 如果浏览器访问了一个静态资源会将其缓存如果服务器中这个资源没有发生变化下次访问时可以直接使用其浏览器中的该静态资源的缓存而不用给服务器发请求。有几个关于缓存的配置直接通过配置文件spring.web cachePeriod缓存周期即多久不用找服务器再请求该静态资源。默认没有缓存周期以秒为单位。cacheControlHTTP缓存即会存储与请求相关联的响应并将存储的响应复用于后续请求useLastModified是否使用最后一次修改的资源配合HTTP缓存使用默认为true。即以最后一次修改资源的时间和使用其缓存资源进行对比来判断是否要再次请求。 欢迎页规则 欢迎页规则在 WebMvcAutoConfiguration 中进行了定义 在静态资源目录下找 index.html没有就在 templates下找index模板页 Favicon Favicon是代表浏览器标签页的图标的浏览器会到服务器静态资源目录下找 favicon.ico再以其资源作为标签页的图标 自定义静态资源规则 在配置文件中自定义静态资源规则 #1、spring.web # 1.配置国际化的区域信息 # 2.静态资源策略(开启、处理链、缓存)#开启静态资源映射规则 spring.web.resources.add-mappingstrue#设置缓存 spring.web.resources.cache.period3600 ##缓存详细合并项控制覆盖period配置 ## 浏览器第一次请求服务器服务器告诉浏览器此资源缓存7200秒7200秒以内的所有此资源访问不用发给服务器请求7200秒以后发请求给服务器 spring.web.resources.cache.cachecontrol.max-age7200 ## 共享缓存 spring.web.resources.cache.cachecontrol.cache-publictrue #使用资源 last-modified 时间来对比服务器和浏览器的资源是否相同没有变化。相同返回 304 spring.web.resources.cache.use-last-modifiedtrue#自定义静态资源文件夹位置 spring.web.resources.static-locationsclasspath:/a/,classpath:/b/,classpath:/static/#2、 spring.mvc ## 2.1. 自定义webjars路径前缀 spring.mvc.webjars-path-pattern/wj/** ## 2.2. 静态资源访问路径前缀 spring.mvc.static-path-pattern/static/**在配置类中自定义静态资源规则第一种写法 Configuration//这是一个配置类 public class MyConfig implements WebMvcConfigurer {Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) { //保留以前规则 //自己写新的规则。 registry.addResourceHandler(/static/**).addResourceLocations(classpath:/a/,classpath:/b/).setCacheControl(CacheControl.maxAge(1180, TimeUnit.SECONDS));} }第二种写法 Configuration //这是一个配置类,给容器中放一个 WebMvcConfigurer 组件就能自定义底层 public class MyConfig /*implements WebMvcConfigurer*/ {Beanpublic WebMvcConfigurer webMvcConfigurer(){return new WebMvcConfigurer() {Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler(/static/**).addResourceLocations(classpath:/a/, classpath:/b/).setCacheControl(CacheControl.maxAge(1180, TimeUnit.SECONDS));}};}}容器中只要有一个 WebMvcConfigurer 组件。配置的底层行为都会生效 WebMvcAutoConfiguration 是一个自动配置类它里面有一个 EnableWebMvcConfigurationEnableWebMvcConfiguration继承于 DelegatingWebMvcConfiguration这两个都生效DelegatingWebMvcConfiguration利用 DI 把容器中 所有 WebMvcConfigurer 注入进来当调用 DelegatingWebMvcConfiguration的方法配置底层规则而DelegatingWebMvcConfiguration调用所有 WebMvcConfigurer的配置底层方法。 路径匹配 Ant风格路径用法AntPathMatcher Ant 风格的路径模式语法具有以下规则 *表示任意数量的字符。?表示任意一个字符。**表示任意数量的目录。{}表示一个命名的模式占位符。[]表示字符集合例如[a-z]表示小写字母[a-z]表示任意个小写字符要为{}中的路径变量指定字符集合可以使用{路径变量:[字符集合]} PathPatternParser PathPatternParser比起Ant效率更高兼容 AntPathMatcher语法并支持更多类型的路径模式即使用PathPatternParser路径匹配时还能继续使用Ant的语法规则但是有一点有改变 PathPatternParser用**表示任意层目录时只能将**放在最末尾如果要将**放在路径中间而不是末尾需要将路径匹配改回Ant改回Ant配置方式如下 # 改变路径匹配策略 # ant_path_matcher 老版策略 # path_pattern_parser 新版策略 spring.mvc.pathmatch.matching-strategyant_path_matcherSpringBoot3默认是PathPatternParser的匹配规则 内容协商 内容协商能让一套系统适配多端数据返回 多端内容适配 SpringBoot 多端内容适配。 基于请求头内容协商默认开启 客户端向服务端发送请求携带HTTP标准的Accept请求头。 Accept: application/json、text/xml、text/yaml服务端根据客户端请求头期望的数据类型进行动态返回基于请求参数内容协商需要开启 发送请求 GET /projects/spring-boot?formatjson匹配到 GetMapping(/projects/spring-boot)根据参数协商优先返回 json 类型数据【需要开启参数匹配设置】发送请求 GET /projects/spring-boot?formatxml,优先返回 xml 类型数据 如果要返回xml数据格式 导入支持写出xml内容的依赖 dependency groupIdcom.fasterxml.jackson.dataformat/groupId artifactIdjackson-dataformat-xml/artifactId /dependency在对应实体类上标注JacksonXmlElement注解 JacksonXmlRootElement // 可以写出为xml文档 Data public class Person { private Long id; private String userName; private String email; private Integer age; }开启基于请求参数的内容协商 # 开启基于请求参数的内容协商功能。 默认参数名format。 默认此功能不开启 spring.mvc.contentnegotiation.favor-parametertrue # 指定内容协商时使用的参数名。默认是 format spring.mvc.contentnegotiation.parameter-nametype内容协商原理 可以通过定制HttpMessageConverter类来实现多端内容协商通过编写WebMvcConfigurer提供的configureMessageConverters底层来修改底层的MessageConverter以实现定制多端内容协商。 ResponseBody注解由HttpMessageConverter处理 请求来到DispatcherServlet的doDispatch方法进行处理在HandlerMapping中校验成功后来到HandlerAdapter利用HandlerAdapter调用handler方法使用反射的方法invokeHandlerMethod()来执行目标方法目标方法执行之前准备好了HandlerMethodArgumentResolver和HandlerMethodReturnValueHandler HandlerMethodArgumentResolver参数解析器确定目标方法的每个参数值HandlerMethodReturnValueHandler返回值处理器确定目标方法的返回值怎么处理invokeAndHandler方法真正执行目标方法目标方法执行完成会返回返回值对象找到返回值处理器HandlerMethodReturnValueHandler最终找到RequestResponseBodyMethodProcessor能处理标注了RequestBody注解的方法RequestResponseBodyMethodProcessor调用writeWithMessageConverters利用MessageConverter将返回值写出去HttpMessageConverter会先进行内容协商 遍历所有的MessageConverter找到目标内容类型的数据要返回json形式的数据的话MappingJackson2HttpMessageConverter支持写出json数据最后写出数据 几种默认HttpMessageConverters WebMvcAutoConfiguration提供几种默认HttpMessageConverters EnableWebMvcConfiguration通过 addDefaultHttpMessageConverters添加了默认的MessageConverter如下 ByteArrayHttpMessageConverter 支持字节数据读写StringHttpMessageConverter 支持字符串读写ResourceHttpMessageConverter支持资源读写ResourceRegionHttpMessageConverter: 支持分区资源写出AllEncompassingFormHttpMessageConverter支持表单xml/json读写MappingJackson2HttpMessageConverter 支持请求响应体Json读写 系统提供默认的MessageConverter 功能有限仅用于json或者普通返回数据。额外增加新的内容协商功能必须增加新的HttpMessageConverter 自定义内容返回 以导入yaml格式为例 导入依赖 dependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-yaml/artifactId /dependency将要返回的对象以yaml形式写出 Person person new Person();person.setId(1L);person.setUserName(张三);person.setEmail(aaaqq.com);person.setAge(18);//取消文档的开始标记disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER)YAMLFactory factory new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER);ObjectMapper mapper new ObjectMapper(factory);String s mapper.writeValueAsString(person);编写配置 #新增一种媒体类型 spring.mvc.contentnegotiation.media-types.yamltext/yaml配置类方式 自定义Converter public class MyYamlHttpMessageConverter extends AbstractHttpMessageConverterObject {private ObjectMapper objectMapper null;public MyYamlHttpMessageConverter(){ //告诉SpringBoot这个MessageConverter支持哪种媒体类型 super(new MediaType(text,yaml, Charset.forName(UTF-8)));YAMLFactory factory new YAMLFactory().disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER);this.objectMapper new ObjectMapper(factory);}Overrideprotected boolean supports(Class? clazz) {//是否支持指定类型的转化 //可以在方法内进行类型判断返回相应的true和false return true;}Override//指定请求中的数据如何转化 protected Object readInternal(Class? clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {return null;}Override//指定响应中的数据如何转化 protected void writeInternal(Object o, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {try (OutputStream body outputMessage.getBody()){this.objectMapper.writeValue(body,o);}} }最后在WebMvcConfigurer配置类中配置其Converter即可 Bean public WebMvcConfigurer webMvcConfigurer(){return new WebMvcConfigurer() {Override //配置一个能把对象转为yaml的messageConverterpublic void configureMessageConverters(ListHttpMessageConverter? converters{converters.add(new MyYamlHttpMessageConverter());}}; } 配置步骤 配置媒体类型支持:编写对应的HttpMessageConverter要告诉Boot这个支持的媒体类型把MessageConverter组件加入到底层 容器中放一个WebMvcConfigurer 组件并配置底层的MessageConverter
http://www.zqtcl.cn/news/841478/

相关文章:

  • cms 做网站用模板网站做h5宣传页多少钱
  • 坪山网站建设行业现状官方建网站有哪些步骤
  • 软件下载网站模版单页网站开发实例下载
  • 张家口网站建设vewanseo实战技术培训
  • 机加工网站室内设计联盟论坛
  • 汕头装修接单网站wordpress php加密
  • 重庆网站建设推广设置wordpress静态主页
  • 科技设计公司网站模板下载网站建设计划 文库
  • 建设美食网站做的好的阅读类的网站有哪些
  • 全屏网站模板制作教程吴江建设局房产网站
  • 浠水网站建设漳州找人做网站要求哪些
  • 做网站需要前台和后台吗公众号制作要求
  • 做一个网站 如何盈利模式招聘网站排行榜2021
  • 免费做网站网站有人哪些c 网站开发网易云课堂百度云下载
  • 高端品牌网站设计欣赏扬中网站建设包括哪些
  • 手机怎么访问微网站网络运营商电话
  • 怎么成立网站战争局势最新消息
  • 嘉定网站设计制作报价crm系统营销
  • 一个网站做几个关键词怎么样子做网站
  • 关于做网站的创新创业策划书怎么进网站后台管理系统
  • 品牌型网站开发wap网站开发工具
  • 网站改版设计微信淘宝购物券网站是怎么做的
  • 网站建设基本流程心得网站设计开发报价
  • 泉州网站建设网站制作电商网站建设需要
  • 沈阳工程建设信息网深圳seo网站排名优化
  • wordpress仿dz长沙seo网站优化
  • 西宁做网站公司电话关键词快速排名怎么做
  • 昆山网站建设秦皇岛淘宝关键词推广
  • 建设娱乐网站的要求微网站开发多少钱
  • 海港区网站快排seo网站怎么添加流量