四、Web开发

    xiaoxiao2022-07-04  114

    ## 1、简介

    使用SpringBoot;

    **1)、创建SpringBoot应用,选中我们需要的模块;**

    **2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来**

    **3)、自己编写业务代码;**

    **自动配置原理?**

    这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx

    ``` xxxxAutoConfiguration:帮我们给容器中自动配置组件; xxxxProperties:配置类来封装配置文件的内容;

    ```

    ## 2、SpringBoot对静态资源的映射规则;

    ```java @ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false) public class ResourceProperties implements ResourceLoaderAware {   //可以设置和静态资源有关的参数,缓存时间等 ```

    ```java     WebMvcAuotConfiguration:         @Override         public void addResourceHandlers(ResourceHandlerRegistry registry) {             if (!this.resourceProperties.isAddMappings()) {                 logger.debug("Default resource handling disabled");                 return;             }             Integer cachePeriod = this.resourceProperties.getCachePeriod();             if (!registry.hasMappingForPattern("/webjars/**")) {                 customizeResourceHandlerRegistration(                         registry.addResourceHandler("/webjars/**")                                 .addResourceLocations(                                         "classpath:/META-INF/resources/webjars/")                         .setCachePeriod(cachePeriod));             }             String staticPathPattern = this.mvcProperties.getStaticPathPattern();               //静态资源文件夹映射             if (!registry.hasMappingForPattern(staticPathPattern)) {                 customizeResourceHandlerRegistration(                         registry.addResourceHandler(staticPathPattern)                                 .addResourceLocations(                                         this.resourceProperties.getStaticLocations())                         .setCachePeriod(cachePeriod));             }         }

            //配置欢迎页映射         @Bean         public WelcomePageHandlerMapping welcomePageHandlerMapping(                 ResourceProperties resourceProperties) {             return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),                     this.mvcProperties.getStaticPathPattern());         }

           //配置喜欢的图标         @Configuration         @ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)         public static class FaviconConfiguration {

                private final ResourceProperties resourceProperties;

                public FaviconConfiguration(ResourceProperties resourceProperties) {                 this.resourceProperties = resourceProperties;             }

                @Bean             public SimpleUrlHandlerMapping faviconHandlerMapping() {                 SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();                 mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);                   //所有  **/favicon.ico                  mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",                         faviconRequestHandler()));                 return mapping;             }

                @Bean             public ResourceHttpRequestHandler faviconRequestHandler() {                 ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();                 requestHandler                         .setLocations(this.resourceProperties.getFaviconLocations());                 return requestHandler;             }

            }

    ```

    ==1)、所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;==

    ​    webjars:以jar包的方式引入静态资源;

    http://www.webjars.org/

    localhost:8080/webjars/jquery/3.3.1/jquery.js

    ```xml <!--引入jquery-webjar-->在访问的时候只需要写webjars下面资源的名称即可         <dependency>             <groupId>org.webjars</groupId>             <artifactId>jquery</artifactId>             <version>3.3.1</version>         </dependency> ```

    ==2)、"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射==

    ``` "classpath:/META-INF/resources/",  "classpath:/resources/", "classpath:/static/",  "classpath:/public/"  "/":当前项目的根路径 ```

    localhost:8080/abc ===  去静态资源文件夹里面找abc

    ==3)、欢迎页; 静态资源文件夹下的所有index.html页面;被"/**"映射;==

    ​    localhost:8080/   找index页面

    ==4)、所有的 **/favicon.ico  都是在静态资源文件下找;==

    ## 3、模板引擎

    JSP、Velocity、Freemarker、Thymeleaf

    ![](images/template-engine.png)

    SpringBoot推荐的Thymeleaf;

    语法更简单,功能更强大;

    ### 1、引入thymeleaf;

    ```xml         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-thymeleaf</artifactId>               2.1.6         </dependency> 切换thymeleaf版本 <properties>         <thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>         <!-- 布局功能的支持程序  thymeleaf3主程序  layout2以上版本 -->         <!-- thymeleaf2   layout1-->         <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>   </properties> ```

    ### 2、Thymeleaf使用

    ```java @ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties {

        private static final Charset DEFAULT_ENCODING = Charset.forName("UTF-8");

        private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html");

        public static final String DEFAULT_PREFIX = "classpath:/templates/";

        public static final String DEFAULT_SUFFIX = ".html";       // ```

    只要我们把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染;

    使用:

    1、导入thymeleaf的名称空间

    ```xml <html lang="en" xmlns:th="http://www.thymeleaf.org"> ```

    2、使用thymeleaf语法;

    ```html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head>     <meta charset="UTF-8">     <title>Title</title> </head> <body>     <h1>成功!</h1>     <!--th:text 将div里面的文本内容设置为 -->     <div th:text="${hello}">这是显示欢迎信息</div> </body> </html>

    最新回复(0)