0%

ssm集成

本文将使用Spring、SpringMVC和Mybatis框架来做一个简单的web项目。
从中,你可以学习到ssm是如何集成的。
本文中使用的数据库SQL如下:

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
CREATE DATABASE /*!32312 IF NOT EXISTS*/`k2502` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */;

USE `k2502`;

/*Table structure for table `grade` */

DROP TABLE IF EXISTS `grade`;

CREATE TABLE `grade` (
`gid` INT NOT NULL AUTO_INCREMENT COMMENT '年级编号',
`gname` VARCHAR(20) NOT NULL COMMENT '年级名称',
PRIMARY KEY (`gid`)
) ENGINE=INNODB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3;

/*Data for the table `grade` */

INSERT INTO `grade`(`gid`,`gname`) VALUES (1,'年级一'),(2,'年级二'),(3,'年级三'),(4,'年级四'),(5,'dddddd'),(7,'年级七');

/*Table structure for table `student` */

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (
`xh` INT NOT NULL COMMENT '学号',
`name` VARCHAR(4) NOT NULL COMMENT '姓名',
`age` TINYINT DEFAULT NULL COMMENT '年龄',
`sex` VARCHAR(4) DEFAULT NULL COMMENT '性别',
`birthday` DATE DEFAULT NULL COMMENT '生日 年月日',
`state` TINYINT DEFAULT '1' COMMENT '在读状态 1在读 0休学',
`address` VARCHAR(50) DEFAULT '不详' COMMENT '地址',
`gid` INT DEFAULT NULL COMMENT '年级编号 外键',
PRIMARY KEY (`xh`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb3;

/*Data for the table `student` */

INSERT INTO `student`(`xh`,`name`,`age`,`sex`,`birthday`,`state`,`address`,`gid`) VALUES (16,'库里猴子',66,'男','2022-06-08',1,'阴间',2),(91,'张',1,'男','2022-05-04',1,'1',1),(101,'张三1',24,'男','2022-04-06',0,'不详',1),(102,'李四',22,NULL,'2022-03-28',0,'湖北武汉汉阳',1),(103,'麻子张',23,'女','2022-04-04',1,'日本',2),(104,'杨过',23,'男','2022-03-29',1,'湖北宜昌',2),(105,'小龙女',18,'男','2022-04-05',1,'湖北孝感',3),(106,'郭靖',19,'男','2022-04-04',1,'不详',2),(107,'黄姐',60,'女','2022-04-04',1,'不详',5),(108,'子健',21,'男','2021-01-01',1,'湖北武汉',1),(109,'张三',24,'男','2022-04-06',0,'不详',1);

1:创建工程

首先,创建一个Maven工程。
image.png
下一步(如图操作)。
image.png
下一步,默认,创建(第一次会从远程下载)。
image.png
初始化完成。

2:配置文件

pom.xml

首先是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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<?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>cn.k2502</groupId>
<artifactId>ssm3</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<!--项目名,保留-->
<name>ssm3 Maven Webapp</name>
<!--下面的都可以复制粘贴-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
<plugins>
<!--使用jdk1.8版本编译代码-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--添加tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration> <!--如果configuration不加,默认端口为8080-->
<uriEncoding>UTF-8</uriEncoding> <!--配置编码方式为UTF-8-->
<path>/</path> <!--path 项目名称-->
<port>8080</port> <!--port 表示端口-->
<server>tomcat7</server> <!--server 表示服务器名称tomcat7-->
</configuration>
</plugin>
<!--mybatis逆向工程插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<!--逆向工程插件的依赖-->
<dependencies>
<!--逆向工程的核心依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
<!--mysql驱动依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
</dependencies>
<configuration>
<!--允许移动生成的文件 -->
<verbose>true</verbose>
<!-- 覆盖生成文件 -->
<overwrite>false</overwrite>
<!-- 定义配置文件 -->
<configurationFile>src/main/resources/generator.xml</configurationFile>
</configuration>
</plugin>
</plugins>
<!--配置相关的资源进行打包-->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
</resources>
</build>

<dependencies>
<!--上传文件依赖-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!--mybatis核心jar包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!--MySQL提供的JDBC驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<!-- jackson依赖处理json格式-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.1</version>
</dependency>
<!--单元测试需要的jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--添加Servlet,监听器,过滤器依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- springMVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
<!-- Spring-thymeleaf整合包-->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
<!-- 分页依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<!-- 德鲁伊数据库连接池组件 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!--AspectJ实现aop操作-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.8</version>
</dependency>
<!-- jdbcTemplate-->
<dependency>
<groupId>.org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<!-- mybatis-spring整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- 加入ServletAPI -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>

<!-- JSTL -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>

</project>

上面都有注释,不需要过多的解释,如果不懂,自行百度。

创建项目结构

image.png
在src/main文件夹上新建目录java和resource(上图直接点击即可)。
image.png
在src上新建文件夹test\java(测试文件夹,如果你不需要也可以不建)。
完成之后的项目结构如下图所示:
image.png
我们接下来把资源文件方在resource目录下。
image.png

jdbc.properties

该文件放数据库链接的配置信息。

1
2
3
4
5
6
7
8
9
10
11
12
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://locahost:3306/k2502?useUnicode=yes&characterEncoding=utf-8&rewriteBatchedStatements=true
jdbc.username=xs
jdbc.password=Aa123456
#初始化连接数
jdbc.initialSize=10
#空闲时间最小连接数
jdbc.minIdle=5
#活动最大连接数
jdbc.maxActive=50
#等待队列最长等待时间
jdbc.maxWait=5000

注意,如你使用MySQL5.X的驱动,请使用com.mysql.jdbc.Driver,而非cj(MySQL8.X建议使用)。

mybatis-config.xml

该文件提供了对于mybatis的配置信息,(已经删除了对于数据库的链接信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置实体类 类型的别名-->
<typeAliases>
<package name="cn.k2502.entity"></package>
</typeAliases>

<!-- 加载sql映射文件 -->
<mappers>
<!--加载指定包下的所有sql映射文件-->
<package name="cn.k2502.mapper"></package>
</mappers>
</configuration>

generator.xml

该文件可以自动生成对应的dao层信息,逆向工程。

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
50
51
<?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>
<!-- 读取外部的配置文件
resource="文件的相对路径写法"。例如:jdbc.properties-->
<properties resource="jdbc.properties"/>
<!--
targetRuntime :执行生成的逆向工程版本
MyBatis3Simple:生成基本的CRUD(清新简洁版)只有增 删 改 查所有、查单条五个条件
MyBatis3:生成带条件的CRUD(奢华尊享版)会生成xxxExample类
-->
<context id="testTables" targetRuntime="MyBatis3">
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="${jdbc.driver}"
connectionURL="${jdbc.url}"
userId="${jdbc.username}"
password="${jdbc.password}">
</jdbcConnection>

<!--javaBean生成策略-->
<javaModelGenerator targetPackage="cn.k2502.entity" targetProject=".\src\main\java">
<!-- enableSubPackages:是否使用子包 -->
<property name="enableSubPackages" value="true"/>
<!-- 解析数据库中的表反向生成的实体类,映射文件
数据库表字段名转换成实体类属性
trimStrings:去除掉字段名前后的空格-->
<property name="trimStrings" value="true"/>
</javaModelGenerator>

<!-- 映射文件生成策略-->
<sqlMapGenerator targetPackage="cn.k2502.mapper" targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>

<!-- mapper接口生成策略 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="cn.k2502.mapper"
targetProject=".\src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--生成具体的表对应的类-->
<table tableName="grade" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false">
</table>

<table tableName="student" enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="true" selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>

请对应需要自动生成的部分,特别是本地的MySQL驱动所在的位置。

springmvc.xml

该文件对是配置了springmvc的信息。

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
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
">
<!--使用component-scan标签扫描springmvc的注解-->
<context:component-scan base-package="cn.k2502.controller"></context:component-scan>


<!--配置视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--视图的前缀-->
<property name="prefix" value="/"></property>
<!--视图的后缀-->
<property name="suffix" value=".jsp"></property>
</bean>

<!--注解驱动-->
<mvc:annotation-driven></mvc:annotation-driven>

<!--允许访问静态资源-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
</beans>

请先在文件夹中创建控制器包。(顺便将其他的包也创建一下)
image.png
配置了springmvc后,一定要记得配置核心控制器,需要配置在webapp/WEB-INF下面的web.xml文件。

web.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
39
40
41
42
43
44
45
46
47
48
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>Archetype Created Web Application</display-name>
<!--核心控制器
1.拦截所有的用户请求,并根据请求的名称分发到用户控制
2.读取sprignmvc配置文件
-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--拦截的请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>

<!--配置过滤器解决乱码问题-->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<!--启动spring容器-->
<!--指定spring配置文件的位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>

建议直接覆盖原来自动生成的文件。

applicationContext.xml

该文件为spring的核心配置文件,提供bean对象的创建和管理。

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
">
<!-- 基于注解的事务控制-->
<!-- 导入命名空间,扫描支持注解组件-->
<!-- 自动扫描,该包下的所有都支持注解-->
<context:component-scan base-package="cn.k2502.service.impl"/>

<!-- 1.将mybatis配置环境集成到spring中,交由Spring托管 -->
<!--引用配置文件里的数据源信息-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!--获取数据源的操作-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 配置初始化大小、最小、最大 -->
<!-- 通常来说,只需要修改initialSize、minIdle、maxActive -->
<property name="initialSize" value="${jdbc.initialSize}"/>
<property name="minIdle" value="${jdbc.minIdle}"/>
<property name="maxActive" value="${jdbc.maxActive}"/>
<property name="testWhileIdle" value="false"/>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${jdbc.maxWait}"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="30000"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
</bean>

<!--2.定义sqlSessionFactory工厂组件--><!--基于mybatis的配置文件进行整合-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--2.1指定数据源--> <!--引用上面的数据源对象-->
<property name="dataSource" ref="dataSource"/>
<!--2.2指定mybatis的配置文件-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>

<!--3.spring接管dao层组件 (理解为创建dao层实现类的对象)-->
<!--MapperScannerConfigurer 就等同于 sqlSession.getMapper(接口的名称.class)-->
<!--注意:一. sql映射的命名空间必需是接口的限定名,持久化操作的id值必需和接口方法中相同-->
<!-- 二. 动态生成实现类的bean对象id值,就是接口名称首字母小写-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!--原本是生成一个接口实现类,封装后生成所有的实现类-->
<!--3.1指定sqlSessionFactory对象--><!--引用上面的工厂组件-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!--3.2扫描dao层接口,动态生成实现类的对象(value放接口的包名)-->
<property name="basePackage" value="cn.k2502.mapper"/>
<!--<bean>相当于就是在容器里生成一个个dao接口实现类对象,id(对象)名是接口名首字母小写</bean>-->
</bean>



<!--配置Spring的事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<constructor-arg ref="dataSource"/>
</bean>
<!-- 下面为配置事务注解驱动,需要绑定上述的事务配置-->
<!--扫描贴有@Transactional注解的方法,底层执行增强类,让方法基于事务执行-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- 启动@AspectJ支持 -->
<aop:aspectj-autoproxy/>
</beans>

目前用该配置即可,如有需要,请自行添加创建bean对象。
以上配置由周总提供。
几个明显的变化:

  • 用插件自动生成,而不是工具类
  • 对generator文件改造,使用相对地址,而非绝对地址
  • 数据源使用druid而非c3p0

总的来说,你无需对他配置进行太大的修改就可以直接上手使用。

3:逆向工程

因为已经替换成插件了,所以我们在插件里面选择构建执行就可以了。
image.png
点击即可,而无需太多的操作。
image.png
一秒后构建完成。
image.png
对应的实体和dao也生成出来了。

4:编写业务

如果我想在首页显示所有的学生信息,那么首先就要写学生的业务。

4.1先写学生业务接口:

1
2
3
4
5
6
7
8
9
10
11
12
package cn.k2502.service;
import cn.k2502.entity.Student;
import java.util.List;
/**
* @author XS
* 学生业务接口
*/
public interface StudentService {
/**获取所有的学生信息,无条件,不分页
* @return list 学生列表*/
List<Student> getAllStudent();
}

4.2再写学生业务实现类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package cn.k2502.service.impl;
import cn.k2502.entity.Student;
import cn.k2502.mapper.StudentMapper;
import cn.k2502.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author XS
* 学生业务实现类
* 自动标记为业务bean对象*/
@Service
public class StudentServiceImpl implements StudentService {
/**自动获取对象*/
@Autowired
private StudentMapper studentMapper;
/**方法具体实现
* @return list学生列表*/
@Override
public List<Student> getAllStudent() {
return studentMapper.selectByExample(null);
}
}

4.3编写控制器:

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
package cn.k2502.controller;
import cn.k2502.entity.Student;
import cn.k2502.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
/**
* @author XS
* 学生业务控制器
* 标记为控制器,自动创建bean对象
*/
@Controller
public class StudentController {
/**自动获取*/
@Autowired
private StudentService studentService;
/**显示所有的学生*/
@RequestMapping("show")
public String show(Model model){
// 调用方法获取学生列表
List<Student> list = studentService.getAllStudent();
// 使用Model对象传递数据(学生列表)
model.addAttribute("list",list);
// 返回名字为index的jsp网页
return "index";
}
}

4.4编写首页index.jsp

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
<%@page language="java" contentType="text/html;utf-8" pageEncoding="utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<body>
<table cellspacing="0" cellpadding="10px" border="1" align="center" bgcolor="#add8e6">
<tr>
<th>学号</th>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>地址</th>
<th>状态</th>
<th>生日</th>
<th>修改</th>
<th>删除</th>
</tr>
<c:forEach items="${list}" var="s">
<tr align="center" bgcolor="#fafad2">
<td>${s.xh}</td>
<td>${s.name}</td>
<td>${s.age}</td>
<td>${s.sex}</td>
<td>${s.address}</td>
<td>
<c:if test="${s.state==0}">
休学
</c:if>
<c:if test="${s.state==1}">
在读
</c:if>
</td>
<td><fmt:formatDate value="${s.birthday}" pattern="yyyy年MM月dd日"/></td>
<td><a href="">修改</a></td>
<td><a href="">删除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>

4.5开启tomcat服务器测试

我们用插件来开启tomcat服务器测试一下。
image.png

GO!阿弥陀佛,一次就过!
image.png

我们去访问项目地址:http://localhost:8080/show测试一下

image.png
OK!成功访问,暂时就是这样啦!