zoukankan      html  css  js  c++  java
  • 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标签

  • 相关阅读:
    HOJ 2139 Spiderman's workout(动态规划)
    FZU 2107 Hua Rong Dao(dfs)
    Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
    Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
    Java 第十一届 蓝桥杯 省模拟赛 计算机存储中有多少字节
    Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
    Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
    Java 第十一届 蓝桥杯 省模拟赛 合法括号序列
    Java 第十一届 蓝桥杯 省模拟赛 无向连通图最少包含多少条边
    Java 第十一届 蓝桥杯 省模拟赛 无向连通图最少包含多少条边
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11367776.html
Copyright © 2011-2022 走看看