一步步详解SSM架构(Spring、Spring MVC与MyBatis集成)的搭建流程
最编程
2024-02-20 17:39:46
...
第三章 SSM整合开发
- SSM 编程,即 SpringMVC + Spring + MyBatis 整合,是当前最为流行的 JavaEE 开发技术架 构。其实 SSM 整合的实质,仅仅就是将 MyBatis整合入 Spring。因为 SpringMVC原本就是 Spring 的一部分,不用专门整合。
- SSM 整合的实现方式可分为两种:基于 XML 配置方式,基于注解方式。
3.1 搭建SSM开发环境
3.1.1 添加pom.xml依赖
<!--servlet依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- jsp依赖 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2.1-b03</version> <scope>provided</scope> </dependency> <dependency> <!--springMVC依赖--> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--SpringM处理事务的依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--spring处理数据库连接的依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.5.RELEASE</version> </dependency> <!--将数据转换为json格式的依赖--> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <!--spring整合mybatis的依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <!--mybatis的依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <!--数据库连接驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.9</version> </dependency> <!--数据路连接池依赖--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> 复制代码
3.1.2 配置web.xml
(1)注册ContextLoaderListenter监听器
- 注册 ServletContext 监听器的实现类 ContextLoaderListener,用于创建 Spring 容器及将创 建好的 Spring 容器对象放入到 ServletContext 的作用域中。
(2) 注册字符集处理器
- 注册字符集过滤器,用于解决请求参数中携带中文时产生乱码问题。
(3)配置*调度器
- 配置*调度器时需要注意,SpringMVC的配置文件名与其它 Spring配置文件名不相同。 这样做的目的是 Spring 容器创建管理 Spring 配置文件中的 bean, SpringMVC 容器中负责视 图层 bean 的初始。
3.2 SSM整合注解开发
项目:ssm
需求:完成学生注册和信息浏览。
3.2.1 建表 Student
3.2.2 新建 Web 工程
工程名称 ssm
3.2.3 maven 依赖
- 添加项目搭建的时候哪些依赖即可。
3.2.4 定义包,组织程序的结构
3.2.5 编写配置文件
(1) Jdbc 属性配置文件 jdbc.properties
jdbc.url=jdbc:mysql://localhost:3306/school jdbc.username=root jdbc.password=567cybtfboys 复制代码
(2) 配置web.xml
- 配置*调度器。将SpringMVC配置文件中的对象(Controller)全部加载到SpringMVC容器中。
- 配置监听器。将Spring配置文件中的全部对象(Dao、Service)全部加载到Spring容器中。
- 配置过滤器。解决post请求中的中文乱码问题。
- web.xml可以加载出Spring.xml以及SpringMVC.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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 注册*调度器,创建SpringMVC容器对象 将SpringMVC配置文件中的所有被@Controller注解的类为Servlet对象 --> <servlet> <servlet-name>myWeb</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/SpringMVC.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>myWeb</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- 注册监听器,创建Spring容器对象,创建Spring.xml的配置文件中的所有对象。 监听器加载spring主配置文件的路径是: /WEB-INF/spring.xml(Spring主配置文件) 我们此时修改为自己的保存spring.xml的路径。 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:conf/Spring.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--注册声明过滤器,解决中文乱码问题--> <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> <!--强制请求对象(HttpServletRequest)使用encoding编码的值,也就是上边声明的这个 utf-8--> <init-param> <param-name>forceRequestEncoding</param-name> <param-value>true</param-value> </init-param> <!--设置应答对象(HttpServletResponse)使用encoding编码的值,也就是上边声明的这个 utf-8--> <init-param> <param-name>forceResponseEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <!-- /* : 表示强制所有的请求先通过过滤器处理。 --> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> 复制代码
(3) Spring配置文件 applicationContext.xml
- Spring主配置文件组件扫描器扫描的是Dao、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"> <!--Spring配置文件:声明service,dao,工具类等对象--> <!--声明数据库配置文件的位置--> <context:property-placeholder location="classpath:conf/jdbc.properties" /> <!--声明数据源,连接数据库--> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!--上一篇: 快速建立SSM项目的起始架构指南