写点什么

Java 开发之 SSM 框架整合配置知识分享

  • 2022 年 1 月 05 日
  • 本文字数:6354 字

    阅读完需:约 21 分钟

​一、基本环境搭建


1、新建一个 Maven 项目,不使用模板


2、在 pom.xml 文件中设置打包格式为 war


<packaging>war</packaging>


3、在 Project Structure -> Modules 中设置 webapp 目录以及 web.xml 文件位置java培训


4、导入相关的依赖


<!-- Servlet - jsp --><dependency>  <groupId>javax.servlet</groupId>    <artifactId>servlet-api</artifactId>    <version>2.5</version></dependency><dependency>  <groupId>javax.servlet.jsp</groupId>    <artifactId>jsp-api</artifactId>    <version>2.2</version></dependency><dependency>  <groupId>javax.servlet</groupId>    <artifactId>jstl</artifactId>    <version>1.2</version></dependency>
<!-- MyBatis --><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version></dependency><dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.2</version></dependency>
<!-- Spring --><dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.9.RELEASE</version></dependency>
复制代码


<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.1.9.RELEASE</version></dependency></dependencies>


5、在 pom.xml 中设置过滤器,使静态资源可以导出


<build><resources><resource><directory>src/main/java</directory><includes><include>/*.properties</include><include>/.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>


6、在 Edit Configuration 中配置 Tomcat


7、建立基本结构和框架配置



mybatis-config.xml MyBatis 配置文件<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configuration PUBLIC="-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3config.dtd"><configuration>


<!-- 配置数据源,交给Spring去做 -->
<!-- 给包起别名 --><typeAliases> <package name="com.banmao.pojo"/></typeAliases>
<mappers> <mapper resource="com/wzy/dao/BooksMapper.xml"/></mappers>
复制代码


</configuration>


applicationContext.xml 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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<import resource="spring-dao.xml"/><import resource="spring-service.xml"/><import resource="spring-mvc.xml"/>
复制代码


</beans>


二、整合 MyBatis


1、数据库配置文件:database.properties


jdbc.driver=com.mysql.jdbc.Driver

如果使用的是 MySQL8.0+ 增加一个时区的配置:&serverTimezone=Asia/Shanghai

jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8jdbc.username=rootjdbc.password=root


2、pojo 包下:Books 实体类


public class Books {private Integer bookID;private String bookName;private Integer bookCounts;private String detail;


// getter & setter 方法// toString方法
复制代码


}


3、dao 包下:BookMapper 接口


public interface BookMapper {// 增加一本书 int addBook(Books books);


// 删除一本书int deleteBookById(int id);
// 更新一本书int updateBook(Books books);
// 查询一本书Books queryBookById(int id);
// 查询所有书List<Books> queryAllBooks();
复制代码


}


4、dao 包下:BookMapper.xml


<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE mapper PUBLIC="-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.wzy.dao.BookMapper">


<insert id="addBook" parameterType="Books">  insert into books (bookName, bookCounts, detail)    values (#{bookName}, #{bookCounts}, #{detail})</insert>
<delete id="deleteBookById" parameterType="int"> delete from books where bookID = #{id}</delete>
复制代码


</mapper>


5、service 包下:BookService 接口


public interface BookService {// 增加一本书 int addBook(Books books);


// 删除一本书int deleteBookById(int id);
// 更新一本书int updateBook(Books books);
// 查询一本书Books queryBookById(int id);
// 查询所有书List<Books> queryAllBooks();
复制代码


}


6、service 包下:BookServiceImpl 实现类


public class BookServiceImpl implements BookService {// service 层调 dao 层:组合 DAOprivate BookMapper bookMapper;public void setBookMapper(BookMapper bookMapper) {this.bookMapper = bookMapper;}


public int addBook(Books books) {    return bookMapper.addBook(books);}
public int deleteBookById(int id) { return bookMapper.deleteBookById(id);}
public int updateBook(Books boooks) {return bookMapper.updateBook(books);}
public Books queryBookById(int id) { return bookMapper.queryBookById(id);}
public List<Books> queryAllBooks() { return bookMapper.queryAllBooks();}
复制代码


}


三、整合 Spring


此处非常重点,建议背诵(开玩笑,直接复制就行了


1、配置 Spring 整合 MyBatis,数据源使用 c3p0 连接池


2、编写 Spring 整合 Mybatis 的相关配置文件:spring-dao.xml


<?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"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">


<!-- 1.关联数据库配置文件 --><context:property-placeholder location="classpath:database.properties"/>

<!-- 2.连接池 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/>

<!-- c3p0连接池的私有属性 --> <property name="maxPoolSize" value="30"/> <property name="minPoolSize" value="10"/> <!-- 关闭连接后不自动commit --> <property name="autoCommitOnClose" value="false"/> <!-- 获取连接超时时间 --> <property name="checkoutTimeout" value="10000"/> <!-- 当获取连接失败重试次数 --> <property name="acquireRetryAttempts" value="2"/></bean>

<!-- 3.sqlSessionFactory --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource"/> <!-- 配置MyBatis全局配置文件 mybatis-cinfig.xml --> <property name="configLocation" value="classpath:mybatis-config.xml"/></bean>

<!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 --><!-- 解释:http://www.cnblog.com/jpfss/7799806.html--><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 要扫描的dao包 --> <property name="basePackage" value="com.banmao.dao"/></bean>
复制代码


</beans>


3、Spring 整合 service 层


<?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"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">


<!-- 1.扫描service下的包 --><context:component-scan base-package="com.banmao.service"/>

<!-- 2.将我们的所有业务类,注入到Spring,可以通过配置,或者注解实现 --><bean id="BookServiceImpl" class="com.banmao.service.impl.BookServiceImpl"> <property name="bookMapper" ref="bookMapper"/></bean>

<!-- 3.声明式事务配置 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据源 --> <property name="dataSource" ref="dataSource"/></bean>

<!-- 4.aop事务支持!-->
复制代码


</beans>


Spring 就是个大杂烩!!!!


四、整合 Spring MVC


1、web.xml


<?xml version="1.0" encoding="UTF-8"?><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">


<!-- DispatchServlet --><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:applicationContext.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>encodingFilter</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>encodingFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>

<!-- Session过期时间 --><session-config> <session-timeout>15</session-timeout></session-config>
复制代码


</web-app>


2、spring-mvc.xml


<?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:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd">


<!-- 1.注解驱动 --><mvc:annotation-driven/><!-- 2.静态资源过滤 --><mvc:default-servlet-handler/><!-- 3.扫描包:controller --><context:component-scan base-package="com.banmao.controller"/><!-- 4.视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/jsp/"/>    <property name="suffix" value=".jsp"/></bean>
复制代码


</beans>


3、Spring 配置整合文件:applicationContext.xml


import 导入即可


<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<import resource="spring-dao.xml"/><import resource="spring-service.xml"/><import resource="spring-mvc.xml"/>
复制代码


</beans>


五、整合 Controller 层和视图层


以下内容为前后端不分离,返回的数据直接显示在 JSP 页面上


1、BookController 类编写,方法一:查询所有书籍


@Controller@RequestMapping("/book")public class BookController {


@Autowired@Qualifier("BookServiceImpl")private BookService bookService;


@RequestMapping("/allBooks")public String list(Model model) {List<Books> list = bookService.queryAllBooks();model.addAttribute("list", list);return "allBooks";}}


2、编写首页 JSP:index.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><!DOCTYPE HTML><html><head><title>首页</title></head><body>


<h3><a href="${pageContext.request.contextPath}/book/allBook">点击进入列表页</a></h3></body></html>


3、书籍列表页面:allBooks.jsp


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>书籍列表</title><meta name="viewport" content="width=device-width, initial-scale=1.0">


</head><body><div><div><table><thead><tr><th>书籍编号</th><th>书籍名字</th><th>书籍数量</th><th>书籍详情</th><th>操作</th></tr></thead>


           <tbody>           <c:forEach var="book" items="${requestScope.get('list')}">               <tr>                   <td>${book.getBookID()}</td>                   <td>${book.getBookName()}</td>                   <td>${book.getBookCounts()}</td>                   <td>${book.getDetail()}</td>                   <td>                       <a href="${pageContext.request.contextPath}/book/toUpdateBook?id=${book.getBookID()}">更改</a> |                       <a href="${pageContext.request.contextPath}/book/del/${book.getBookID()}">删除</a>                   </td>               </tr>           </c:forEach>           </tbody>       </table>   </div>
复制代码


</div></div>


其余方法可自己实现,不再赘述!


六、总结


实际上,Spring 的配置整合能够托管许多东西,其中涵盖了 MyBatis 的数据源配置、Filter 的乱码问题解决配置等等,这些都是机械化的配置操作,并不需要太多改变就可以复用。


因此可以将所有配置包装成模板,每次生成 SSM 框架项目时都可以直接使用。


但是!一定要学会 Spring 的理念和其与 Mybatis 以及 Service、MVC 整合的过程!


用户头像

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
Java开发之SSM框架整合配置知识分享