SpringBootprovidesauto-configurationforSpringMVCthatworkswellwithmostapplications.(大多场景我们都无需自定义配置)Theauto-configurationaddsthefollowingfeaturesontopofSpring’sdefaults:
原理:静态映射/**。请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面
默认无前缀可以通过以下代码改变前缀
spring:mvc:static-path-pattern:/res/**当前项目+static-path-pattern+静态资源名=静态资源文件夹下找即localhost:8080/res/1.jpg
pom.xml
●静态资源路径下index.html○可以配置静态资源路径○但是不可以配置静态资源的访问前缀。否则导致index.html不能被默认访问spring:#mvc:#static-path-pattern:/res/**这个会导致welcomepage功能失效resources:static-locations:[classpath:/haha/]●controller能处理/index2.3、自定义Favicon(访问标签小图标)把文件重命名为favicon.ico放在静态资源目录下即可。
spring:#mvc:#static-path-pattern:/res/**这个会导致Favicon功能失效2.4、静态资源配置原理(**)●SpringBoot启动默认加载xxxAutoConfiguration类(自动配置类)●SpringMVC功能的自动配置类WebMvcAutoConfiguration,生效
@Configuration(proxyBeanMethods=false)@ConditionalOnWebApplication(type=Type.SERVLET)@ConditionalOnClass({Servlet.class,DispatcherServlet.class,WebMvcConfigurer.class})@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE+10)@AutoConfigureAfter({DispatcherServletAutoConfiguration.class,TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})publicclassWebMvcAutoConfiguration{}●给容器中配了什么。
@RequestAttribute:获取request域属性关于矩阵变量:/cars/{path}xxx=xxx&aaa=cccqueryString查询字符串可以通过@RequestParam实现/cars/sell;low=34;brand=byd,audi,yd;矩阵变量如果在页面开发中,cookie禁用了,session里面的内容怎么使用?session.set(a,b)--->jsessionid--->cookie----〉每次发请求携带。可以通过url重写:/abc;jsesssionid=xxxx把cookie的值使用矩阵变量的方式进行传递./boss/1/2/boss/1;age=20/2;age=20
新建ParameterTestController获取params想获取多个inters使用@RequestParamMultiValueMap
@Configuration(proxyBeanMethods=false)publicclassWebConfigimplementsWebMvcConfigurer{@OverridepublicvoidconfigurePathMatch(PathMatchConfigurerconfigurer){UrlPathHelperurlPathHelper=newUrlPathHelper();//不移除;后面的内容,矩阵变量功能就可以生效urlPathHelper.setRemoveSemicolonContent(false);configurer.setUrlPathHelper(urlPathHelper);}}方式二
index.html
@Override publicbooleansupportsParameter(MethodParameterparameter){ Class<>paramType=parameter.getParameterType(); return(WebRequest.class.isAssignableFrom(paramType)|| ServletRequest.class.isAssignableFrom(paramType)|| MultipartRequest.class.isAssignableFrom(paramType)|| HttpSession.class.isAssignableFrom(paramType)|| (pushBuilder!=null&&pushBuilder.isAssignableFrom(paramType))|| Principal.class.isAssignableFrom(paramType)|| InputStream.class.isAssignableFrom(paramType)|| Reader.class.isAssignableFrom(paramType)|| HttpMethod.class==paramType|| Locale.class==paramType|| TimeZone.class==paramType|| ZoneId.class==paramType); }1.3、复杂参数:Map、Model(map、model里面的数据会被放在request的请求域request.setAttribute)、Errors/BindingResult、RedirectAttributes(重定向携带数据)、ServletResponse(response)、SessionStatus、UriComponentsBuilder、ServletUriComponentsBuilder
可以自动类型转换与格式化,可以级联封装。
/***姓名:
*年龄:
*生日:
*宠物姓名:
*宠物年龄: