SSM整合例子:课程信息查询
一、创建一个maven项目
二、导入maven依赖
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!--springmvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Mybatis核心 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!--mybatis和spring的整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>
<!-- junit测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<!-- log4j日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- ServletAPI -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- Spring5和Thymeleaf整合包 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
<!--自动生产setter和getter-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
</dependencies>
定义版本号:
<spring.version>5.3.1</spring.version>
点击下载依赖:
三、配置Web.xml文件
①进入项目结构这里,创建web.xml文件
定义web.xml的路径,在项目名后插入\src\main\webapp , 然后点Apply ,以及OK
然后就发现有了web.xml文件:
②配置web.xml文件
在web.xml文件中插入过滤器以及主要servlet:爆红没关系,因为有文件还没创建。
<filter>
<filter-name>CharacterEncodingFilter</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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
四、创建并配置springmvc.xml文件
在resource
根目录下鼠标右键创建springmvc.xml
文件。
在springmvc.xml
文件里配置:爆红不要紧,将鼠标移到爆红的地方Alt
+Enter
,
<context:component-scan base-package="com.ssm.controller"/>
<!-- 配置Thymeleaf视图解析器 -->
<bean id="viewResolver"
class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine">
<bean class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<!-- 视图前缀 -->
<property name="prefix" value="/WEB-INF/templates/"/>
<!-- 视图后缀 -->
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8" />
</bean>
</property>
</bean>
</property>
</bean>
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<mvc:view-controller path="/" view-name="input"/>
<bean class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
五、创建课程实体类:
先在MySQL数据库创建一个表:
建表代码如下:
create table course(
c_id int(11) not null auto_increment,
c_name varchar(10),
teacher varchar(10),
c_hour int(4),
credit int(4),
primary key(c_id)
)DEFAULT CHARSET=utf8;
insert into course(c_name,teacher,c_hour,credit)
values("JavaEE实验","肖帮主",16,1);
insert into course(c_name,teacher,c_hour,credit)
values("刑法与法律","张三",48,5);
insert into course(c_name,teacher,c_hour,credit)
values("Java基础","肖老师",32,3);
insert into course(c_name,teacher,c_hour,credit)
values("JavaEE","郭标",32,2.5);
对应的实体类代码如下:
代码如下:
package com.ssm.pojo;
public class Clazz {
private Integer cId; //课程id
private String cName; //课程名
private String teacher; //课程教师
private Integer cHour; //学时
private Integer credit; //学分
public Clazz() {
}
public Clazz(Integer cId, String cName, String teacher, Integer cHour, Integer credit) {
this.cId = cId;
this.cName = cName;
this.teacher = teacher;
this.cHour = cHour;
this.credit = credit;
}
public Integer getcId() {
return cId;
}
public void setcId(Integer cId) {
this.cId = cId;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public Integer getcHour() {
return cHour;
}
public void setcHour(Integer cHour) {
this.cHour = cHour;
}
public Integer getCredit() {
return credit;
}
public void setCredit(Integer credit) {
this.credit = credit;
}
@Override
public String toString() {
return "Clazz{" +
"cId=" + cId +
", cName='" + cName + '\'' +
", teacher='" + teacher + '\'' +
", cHour=" + cHour +
", credit=" + credit +
'}';
}
}
六、创建Mapper接口和xml文件:
我们分别在根目录java
和resource
下创建有相同com.ssm.mapper
包名的mapper:
注意:
java
中com.ssm.mapper
的CourseMapper是接口
resource
中com.ssm.mappe
的CourseMapper.xml是xml
文件
代码如下:
CourseMapper
接口:
package com.ssm.mapper;
import com.ssm.pojo.Clazz;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface CourseMapper {
List<Clazz> getClazzByMoHu(@Param("cname")String uname);
}
CourseMapper.xml
文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.mapper.CourseMapper">
<select id="getClazzByMoHu" resultType="com.ssm.pojo.Clazz">
select * from course where c_name like concat('%',#{cname},'%')
</select>
</mapper>
七、创建配置文件
①创建Mybatis配置文件
在resource
根目录下创建mybatis-config.xml
配置文件,然后填下下面代码:
代码如下所示:
<?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>
<settings>
<!--将下划线映射为驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<!--按需加载-->
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
</configuration>
②创建jdbc数据库信息文件
创建数据库连接信息文件jdbc.properties
代码如下:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm
jdbc.username=root
jdbc.password=root
因为我使用的是MySQL5.7版本,如果用的是MySQL8.0以上版本的话,需要在url后加上?serverTimezone=UTC
,如下所示:
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssm?serverTimezone=UTC
jdbc.username=root
jdbc.password=root
③创建日志配置文件
创建log4j的日志配置文件,用于输出相应的日志信息:有红色报错不要紧,可以运行。
代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
</layout>
</appender>
<logger name="java.sql">
<level value="debug" />
</logger>
<logger name="org.apache.ibatis">
<level value="info" />
</logger>
<root>
<level value="debug" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
④创建Spring核心配置文件
配置Spring核心配置文件:
代码如下所示:
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--扫描组件(除了控制层)-->
<context:component-scan base-package="com.ssm">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!--引入数据库配置文件-->
<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}"/>
</bean>
<!--配置事务管理-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--开启事务注解驱动
将使用注解@Transactional标识的方法或类中所有的方法进行事务管理
-->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!--配置SqlSessionFactoryBean,可以直接在Spring的IOC中获取SqlSessionFactory对象.-->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--设置MyBatis核心配置文件-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--设置数据源-->
<property name="dataSource" ref="dataSource"/>
<!--设置类型别名-->
<property name="typeAliasesPackage" value="com.ssm.pojo"/>
<!--设置类名别名所对应的包,当接口与Maper文件路径不一致时设置-->
<property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"/>
</bean>
<!--扫描mapper接口,获取所有mapper接口的代理实现类对象,并且将这写对象交给ioc容器管理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ssm.mapper"/>
</bean>
</beans>
八、创建Service层
在ssm
目录下创建service
包,接着在该包下创建CourseService
接口,以及CourseService接口的实现类CourseServiceImpl
代码如下:
CourseService:
package com.ssm.service;
import com.ssm.pojo.Clazz;
import java.util.List;
public interface CourseService {
/**
* 根据课程名进行模糊查询
* @param uname
* @return
*/
List<Clazz> getClazzByMoHu(String cname);
}
CourseServiceImpl:
package com.ssm.service;
import com.ssm.mapper.CourseMapper;
import com.ssm.pojo.Clazz;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
@Transactional
public class CourseServiceImpl implements CourseService{
@Autowired
private CourseMapper courseMapper;
/**
* 根据课程名进行模糊查询
* @param uname
* @return
*/
@Override
public List<Clazz> getClazzByMoHu(String uname) {
List<Clazz> ClazzByMoHu = courseMapper.getClazzByMoHu(uname);
return ClazzByMoHu;
}
}
九、创建Controller控制层
在java
根目录这里鼠标右键创建一个控制层包名com.ssm.controller
然后在这个包下创建CourseController
课程表控制器类
CourseController
代码如下所示:
package com.ssm.controller;
import com.ssm.pojo.Clazz;
import com.ssm.service.CourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PostMapping;
import java.util.List;
@Controller
public class CourseController {
@Autowired
private CourseService courseService;
@PostMapping("/search/coursename")
public String searchUsername( String coursename, Model model) {
List<Clazz> list = courseService.getClazzByMoHu(coursename);
model.addAttribute("list",list);
return "course_list";
}
}
十、创建Html显示页面
在webapp
下的WEB-INF
目录下创建templates
目录,该目录包含两个html文件:
分别是查询课程页面input.html
以及查询结果页面course_list.html
代码如下所示:
input.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>查询课程</title>
</head>
<body>
<h1>模糊查询课程名</h1>
<form th:action="@{/search/coursename}" method="post">
课程名:<input type="text" name="coursename"/><br>
<input type="submit" value="提交"/>
</form>
</body>
</html>
course_list.html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>课程列表</title>
<!-- <link rel="stylesheet" th:href="@{/static/css/index_work.css}">-->
</head>
<body>
<div id="app">
<table>
<tr>
<th colspan="6">查询到的课程信息列表</th>
</tr>
<tr>
<th>课程ID</th>
<th>课程名</th>
<th>任教老师</th>
<th>学时</th>
<th>学分</th>
</tr>
<tr th:each="clazz,status : ${list}">
<td th:text="${status.count}"></td>
<td th:text="${clazz.cName}"></td>
<td th:text="${clazz.teacher}"></td>
<td th:text="${clazz.cHour}"></td>
<td th:text="${clazz.credit}"></td>
</tr>
</table>
</div>
</body>
</html>
十一、配置Tomcat
点击这里Add Configuration
接着点击+
找到Tomcat,选择Local
接着点击Deployment
:
继续点击+
以及Artifact
选择第二个并点击OK:
最后点击Apply
和OK
即可
十二、启动项目
点击启动
弹出页面:
输入Java点击提交进行查询,得到如下所示:
大功告成!!!谢谢阅读,如有错误,请指正,谢谢啦!!