• springboot学习笔记2:搭建web项目


    再springboot学习期间,使用架构的方式搭建项目,项目创建方式参考重识maven

    创建工程及子工程,并添加层级依赖,项目结构如下:

    common:工具类;mapper:持久层;service:业务层;web:控制层;model:实体类

    然后父工程添加依赖:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.zs.springboot</groupId>
        <artifactId>springboot817</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>model</module>
            <module>service</module>
            <module>mapper</module>
            <module>web</module>
            <module>common</module>
        </modules>
    
        <dependencyManagement>
            <dependencies>
                <!-- 将springboot-parent以jar包的形式导入进来,声明类型为pom文件-->
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-parent</artifactId>
                    <version>1.5.22.RELEASE</version>
                    <type>pom</type>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                    <version>1.5.22.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.mybatis.spring.boot</groupId>
                    <artifactId>mybatis-spring-boot-starter</artifactId>
                    <version>1.3.1</version>
                </dependency>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.45</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-thymeleaf</artifactId>
                    <version>1.5.22.RELEASE</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    
    </project>
    父级pom

    然后给各个子工程添加层级依赖,mapper依赖model,service依赖mapper,common,controller依赖service。

    因为controller,service,都是以来mapper的,因此将jar都放入mapper模块就可以,根据层级依赖的关系,controller,service也能使用jar包。

     <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.zs.springboot</groupId>
                <artifactId>model</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    View Code

    springboot配置mvc

    在之前使用ssm框架时,配置文件都是使用xml文件编辑的,但是springboot的宗旨是干掉xml文件,使用java类来配置,如何使用呢?

    首先看下之前我们的xml配置:

    <mvc:annotation-driven>
            <mvc:message-converters>
                <!--配置编码字符集-->
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <constructor-arg name="defaultCharset" value="utf-8"/>
                </bean>
                <!--格式化json-->
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="prettyPrint" value="true"/>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

    上面的内容使用java配置如下:

    /**
     * 声明这是一个配置文件
     */
    @SpringBootConfiguration
    public class SpringMvcConfig {
    
        /**
         * 配置编码字符集为utf-8,@Bean相当于xml文件中的bean标签
         * @Bean("aaa")就像当于标签的id为aaa
         * @return
         */
        @Bean
        public StringHttpMessageConverter stringHttpMessageConverter() {
            StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("utf-8"));
            return converter;
        }
    
        /**
         * Json数据格式化
         * @return
         */
        @Bean
        public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
            MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
            converter.setPrettyPrint(true);
            return converter;
        }
    }

    效果:

    火狐浏览器请查看原始数据,因为火狐浏览器会自动将json数据格式化

    通过mapper.xml的形式实现mapper接口

    需要在application.properties中进行配置:

    #起别名,也可以不配置
    mybatis.type-aliases-package=com.zs.springboot.model
    #配置xml文件路径
    mybatis.mapper-locations=classpath:mapper/*.xml

    配置mapper扫描器:

    1.接口上添加@Mapper注解,但是如果接口多的话,每个接口都要添加

    2.直接在入口类上添加mapper扫描器:

    使用Thymeleaf写页面

    在springboot官网中,明确表示如果使用springboot作为架构的话,默认不支持jsp,如果非要使用jsp可以手动加载配置实现jsp。

    springboot默认支持Thymeleaf模板,这个模板也是java写的,使用非常方便,相当于jsp

    注意:1.使用thymeleaf模板的话,在开发阶段需要关闭缓存

    #配置thymeleaf关闭缓存
    spring.thymeleaf.cache=false

    2.添加依赖:springboot已经完整把thymeleaf集成进框架中了,可以直接添加使用不需要任何的配置信息

            <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-thymeleaf</artifactId>
                    <version>1.5.22.RELEASE</version>
                </dependency>    

    3.在之前使用jsp,需要在mvc配置文件中配置视图解析器,添加前缀后缀等, 在使用thymeleaf模板的html页面的情况下,默认在resources(相当于classpath)下的templates文件夹中进行加载,不需要配置

    4.如果使用thymeleaf需要更换html的头部信息:

    <html xmlns="http://www.w3.org/1999/xhtml"
                  xmlns:th="http://www.thymeleaf.org"
                  xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">

    5.thymeleaf是一个非常严谨的模板,和普通的html不一样,需要严格按照html的标准来实现:不能出现未闭合标签,如果不按照html的标准会报错

    如果非要不遵循标准来也可以,需要在application.properties中配置: spring.thymeleaf.mode=LEGACYHTML5 导入jar包:

            <dependency>
                    <groupId>net.sourceforge.nekohtml</groupId>
                    <artifactId>nekohtml</artifactId>
                    <version>1.9.21</version>
                </dependency>    

    下面写thymeleaf使用例子:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:th="http://www.thymeleaf.org"
          xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
    <head>
        <meta charset="UTF-8"/>
        <title>Title</title>
    </head>
    <body>
    <table border="1px solid black">
        <thead>
            <tr>
                <th>编号</th>
                <th>图书名</th>
                <th>价格</th>
                <th>类别</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
        <tr th:each="book : ${books}">
            <td th:text="${book.id}"></td>
            <td th:text="${book.title}"></td>
            <td th:text="${book.price}"></td>
            <td th:text="${book.cateId}"></td>
            <td>
                <a href="">修改</a>
                <a href="">删除</a>
            </td>
        </tr>
        </tbody>
    </table>
    </body>
    </html>

    th:each就相当于是jstl的c:forEach标签

  • 相关阅读:
    pgspider 一些ppt 截图
    postgres cassandra_fdw 扩展试用
    使用 postgres s3 fdw + cube.js 分析 csv 数据
    cube.js 集成s3 的一种方法
    postgres s3 fdw 试用
    cube.js 集成 elasticsearch 的一种变通方法
    使用postgres_fdw 串接elasticsearch fdw
    postgres elasticsearch fdw 学习
    使用vcpkg 管理c&&c++ 包
    postgres pg_cron 扩展连接远程pg server
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11367776.html
Copyright © 2020-2023  润新知