SSM——> SpringMVC + Spring + Mybatis
因为 Spring MVC 是 Spring 框架中的一个子模块,所以 Spring 与 SpringMVC 之间不存在整合的问题。实际上,SSM 框架的整合只涉及 Spring 与 MyBatis 的整合以及 Spring MVC 与 MyBatis 的整合。
实现 SSM 框架的整合首先需要准备 3 个框架的 JAR 包以及其他整合所需要的 JAR 包。
基础包的导入
servlet、lombok
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>provided</scope>
</dependency>
一、创建Maven Web项目
详情参考:https://blog.csdn.net/weixin_42067873/article/details/114265889
二、SpringMVC部分
1、导jar包
在pom.xml文件下,导入所需要的jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
2、在web.xml文件下配置DispatcherServlet
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfigLocation配置后可以修改springmvc配置文件的路径 -->
<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>charsetFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetFilter</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
注:src目录下的 resources目录 和 java目录本质上是同一个目录,在开发阶段表面上它们是两个不同的目录,但是在运行阶段,target中会将这两个目录合并为同一个目录,成为classes目录,所有classpath指的是运行期间代指这两个目录(resources、java)
3、配置springmvc的配置文件(springmvc.xml)
(1)导入视图解析器需要使用到的jstl包
配置文件中需要配置视图解析器,所以需要导入 jstl 包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
(2)配置文件
<!-- 开启注解驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 扫描Controller所在的包 -->
<context:component-scan base-package="com.hanmh.controller"></context:component-scan>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
</bean>
注:<context:component-scan base-package="com.hanmh"></context:component-scan>
只有在IOC中扫包时,才能扫描出对应的子包内容
至此,可以先写一个简单的测试Controller,测试下SpringMVC环境搭建的情况
三、Spring部分
注:Spring在扫包时,放的是父包的话,会扫描对应包下所有的子包
即:<context:component-scan base-package="com.hanmh"></context:component-scan>
1、配置文件创建(resources目录下)
在resources目录下,创建Spring配置文件,行业内一般起名为applicationContext.xml
2、配置监听器(web.xml中配置)
首先,现在web.xml文件中配置监听器,使得在服务器刚启动后就加载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>
四、Mybatis集成到Spring中
1、导包
需要导入 mybatis、mybatis-spring、druid、mysql 包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
(1)spring和mybatis集成还需要导入 spring-orm 包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
2、在spring配置文件中配置相关信息(applicationContext.xml)
<!-- 连接池 -->
<bean id="datasource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/aaa?useUnicode=true&charasetEncoding=UTF8"></property>
<property name="username" value="root"></property>
<property name="password" value="hanmenghao"></property>
<!-- 初始状态创建的连接数量 最小值 -->
<property name="minIdle" value="10"></property>
<!-- 支持连接的最大数-->
<property name="maxActive" value="20"></property>
</bean>
<!-- 配置SqlsessionFactry ref:对象赋值-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource"></property>
<!-- 别名包 在加载value对应下的类时,不需要加前面的com.hanmh.pojo -->
<property name="typeAliasesPackage" value="com.hanmh.pojo"></property>
</bean>
<!-- 配置扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描接口所在的包 此处必须配置为dao下 -->
<property name="basePackage" value="com.hanmh.dao"></property>
</bean>
五、导入工具包(duracloud)
该工具包提供日志输出功能,方便查看问题的出处
<dependency>
<groupId>org.duracloud</groupId>
<artifactId>common</artifactId>
<version>7.0.0</version>
</dependency>