Spring Boot学习笔记 03

0x01 SpringBoot集成JSP

打开IDEA创建SpringBoot项目后,在src文件夹的main中创建一个新的文件夹webapp来存放web资源(假如原来没有webapp文件夹)。

创建好在模块设置中的模块->Web->Web资源目录添加上面创建的webapp目录,相对与部署根的路径为/,然后点击创建工件,最后点击应用,就完成了webapp的设置,待会在里面创建jsp文件就行了。

由于项目本身对jsp的解析并不支持,所以在pom.xml文件里面要添加对jsp解析的包的依赖:

1
2
3
4
5
6
<!--        引入SpringBoot内嵌Tomcat对jsp的解析包,不添加解析不了jsp-->
<!-- 仅仅只是展示jsp页面,只添加以下一个依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

然后为了使jsp正常编译,还要在pom.xml的____中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
		<resources>
<resource>
<!-- 源文件夹-->
<directory>src/main/webapp</directory>
<!-- 指定编译到META-INF/resources-->
<targetPath>META-INF/resources</targetPath>
<!-- 指定源文件夹中的哪些资源要编译进去-->
<includes>
<!-- 所有东西: *.*-->
<include>*.*</include>
</includes>
</resource>
</resources>

在核心配置文件中添加视图解析器:

1
2
3
#配置视图解析器
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

接下来我们就要设置@Controller了,在Application.java文件的同级目录或下级目录创建一个Controller/IndexController.java,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.springboot.springboot010jsp.web;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class IndexController {

@RequestMapping(value = "/say")
public ModelAndView say() {
ModelAndView mv = new ModelAndView();
mv.addObject("message", "Hello Springboot!");
mv.setViewName("say");
return mv;
}

@RequestMapping(value = "/index")
public String index(Model model) {
model.addAttribute("message", "Hello world");
return "say";
}
}

然后在webapp上创建对应的say.jsp:

1
2
3
4
5
6
7
8
9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>

次jsp用来显示${message}结果:

浏览器输入localhost:8080/say,输出结果为:Hello Springboot!

浏览器输入localhost:8080/index,输出结果为:Hello world

分别对应@Controller里面两个Attribute。

以上步骤缺一不可!

0x02 如何在一个单纯的Maven框架上手动配置SpringBoot

前面我们创建一个SpringBoot项目都是用idea自带的Springboot框架来创建,那我们如何在一个只有pom.xml和Meven文件结构的项目里面自己手动创建一个SPringboot项目呢,这个方法适用于一开始创建SpringBoot项目时网不好的情况。

首先我们在Pom.xml文件里面添加对应的SpringBoot依赖:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 <!--SpringBoot父工程GAV坐标-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!-- SpringBoot框架Web项目起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringBoot框架测试起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!-- SpringBoot项目打包编译的插件-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

这里只给出需要添加的部分,并不是覆盖的意思。

然后文件结构也需要改变:

在src/main/java中创建包com.auspic1ous.springboot

在其中创建一个Application.java(名字随意):

1
2
3
4
5
6
7
8
9
10
11
12
package com.auspic1ous.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//Springboot项目启动入口类
@SpringBootApplication//SpringBoot核心注解,主要用于开启spring自动配置

public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

}

最后还要在src/main/resources中创建如下文件、文件夹:

  • static(文件夹):图标等静态资源放入此文件夹
  • templates(文件夹):模板,前端模板引擎放入此文件夹Thyme leaf.html(百叶箱)
  • application.properties:SpringBoot的核心配置文件

0x03 SpringBoot继承Mybatis

0x0301 添加Mybatis依赖数据库驱动(mysql)

Pom.xml中添加依赖:

1
2
3
4
5
6
7
8
9
10
11
<!--        Mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Mybatis整合SpringBoot框架的起步依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>

0x0302 使用Mybatis提供的逆向工程生成实体Bean,映射文件,BAO接口。

pom.xml添加依赖和插件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<dependencies>
<!-- Mybatis整合SpringBoot框架的起步依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<!-- Mybatis 代码自动生成插件-->
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.5</version>
<configuration>
<!-- 配置文件的位置-->
<configurationFile>GeneratorMapper.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</build>

根目录下新建一个xml文件,文件名为:GeneratorMapper:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 指定连接数据库的JDBC驱动包所在位置,指定到你本机的完整路径-->
<classPathEntry location=""/>
<!-- 配置table表信息内容体,targetRuntime 指定采用Mybatis3的版本-->
<context id="tables" targetRuntime="Mybatis3">
<!-- 抑制生成注释,由于生成的注释都是英文的,可以不让它生成-->
<commentGenerator>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 配置数据库连接信息-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/springboot"
userId="root"
password="admin123456">
</jdbcConnection>
<!-- 生成model类,targetPackage指定model类的包名 ,targetProject指定生成的model放在eclipse的哪个工程下面-->
<javaModelGenerator targetPackage="com.auspic1ous.springboot.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="false"/>
</javaModelGenerator>
<!-- 生成 Mybatis 的 Mapper.xml文件,targetPackage指定mapper.xml 文件的包名,
targetProject指定生成的mapper.xml放在eclipse的哪个工程下面-->
<sqlMapGenerator targetPackage="com.auspic1ous.springboot.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 生成Mybatis 的Mapper接口类文件, targetPackage 指定 Mapper 接口类的包名
,targetProject 指定生成的Mapper接口放在eclipse的哪个工程下面-->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.auspic1ous.springboot.mapper"
targetProject="src/main/java">
<property name="enableSubPackages" value="false"/>
</javaClientGenerator>
<!-- 数据库表名以及对应的Java模型类名-->
<!-- tableName数据库表的名称,domainObjectName为java实体类的名字-->
<table tableName="t_student" domainObjectName="Student"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false"/>
</context>

</generatorConfiguration>

然后在com.auspic1ous.springboot下创建mapper和model两个包。

当我们重新构建该项目后,mapper中就会根据数据库自动生成对应的接口类和映射文件xml,model中就会根据数据库自动生成对应的java模型,这样就节省了 我们手动编写mapper和model两个文件夹里面的内容,非常好用~