简单介绍一下SSM具体指的是SpringMvc、Spring、Mybatis或者MybatisPlus这三大框架,其中Spring是最核心的框架,其他两个框架都要集成在Spring上让其进行统一管理。由于整合过程中需要导入很多jar包所以为了方便管理使用项目管理工具Maven来进行依赖jar包的管理,需要什么jar包就导入什么jar包的坐标,使用起来及其方便。
SpringMvc框架其实就是之前讲的servlet中视图层和控制层的进一步封装,通过SpringMvc的核心前端控制器(DispatcherServlet)来请求、响应、渲染视图对象并展示。Spring框架其实就是之前讲的servlet中的逻辑业务层的封装,通过Spring的核心容器应用上下文(spring context),创建bean对象并对其进行统一管理。Mybatis或者MybatisPlus框架其实就是之前讲的servlet中的数据持久层的进一步封装,使用Mapper映射文件来编写SQL实现对数据库的相关操作。由于实际项目开发中这三个框架都会使用到,所以接下来就来具体整合这三个框架。
为了展示效果首先需要创建一个javaweb项目,其次需要使用IDEA连接上数据源,点击右上角的Database选择MySql数据库输入你的用户名和密码和选择的数库名连接成功后如下图:
选中其中的表使用MybatisX插件反向生成实体对象类和service层及mapper映射文件模板,操作如图:
接下来在反向生成的包结构下创建一个名为controller的包,并新建一个名为×××Controller的java类,结构创建完毕。
接下来在Maven中导入整合所需要的相关jar包:
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.1</version>
</dependency>
<!-- <dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>-->
<dependency>
<groupId>org.singledog</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.24</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.24</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.28</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.14.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<!--文件下载-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
</dependencies>
因为javaweb项目在启动时,最先扫描的就是web.xml文件里的内容,所以要先配置。先配置spring的编码过滤器以及编码过滤器的映射,使所有路径的编码方式都为UTF-8。
<!-- 配置spring的编码过滤器-->
<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>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<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>
<!-- 配置spring的编码过滤器的映射-->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
再配置SpringMvc的前端控制器以及前端控制器映射,使项目启动时去扫描加载对应位置的配置文件。
<!-- 配置SpringMVC的前端控制器 -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 设置SpringMVC的配置文件的位置和名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springMVC.xml</param-value>
</init-param>
<!--将DispatcherServlet的初始化提前的服务启动时-->
<load-on-startup>1</load-on-startup>
</servlet>
<!--配置映射-->
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
最后在web.xml文件中配置Spring监听器和Spring配置文件的位置,让项目启动时扫描加载对应的配置文件信息。
<!-- 设置Spring的配置文件的位置和名称 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
<!-- 配置Spring的监听器 在服务启动时加载spring的配置文件-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
到此web.xml文件就配置完毕,接下来到资源目录下配置对应的xml文件。
资源目录配置,在resource目录下创建如下结构的文件:
首先配置最简单的mybatis-config.xml文件和jdbc.properties数据库配置文件。mybatis-config.xml文件只需要配置最简单的将表中字段的下划线自动转换为驼峰命名格式即可:
而jdbc.properties中则配置一下你要连接的数据库的信息即可:
接下来是对SpringMvc.xml文件的配置,配置控制层扫描组件,注意的是扫描的包结构必须与项目结构层次相同否则配置不生效。
然后配置视图解析器,配置视图的位置和后缀类型和开启注解:
<!--配置视图解析器 默认的-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 视图前缀 -->
<property name="prefix" value="/view"/>
<!-- 视图后缀 -->
<property name="suffix" value=".jsp"/>
</bean>
<mvc:annotation-driven>
</mvc:annotation-driven>
最后配置最重要的applicationContext.xml文件,主要是整合mybatis相关的配置,整合mybatis第一步要导入jdbc.properties配置文件,
<!--1.导入配置文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
第二步把相关参数配置到数据源中,
<!--2.配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
第三部是配置sqlSessionFactory工场,用来创建sqlSession对象执行sql,这里由于我配置的是mybatisplus的所以导入的包略有不同,
<!--3.配置sqlSessionFactory工场-->
<bean class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<!--映射数据源-->
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--设置映射文件的路径 ,若映射文件所在路径和mapper接口所在路径一致,则不需要设置-->
<property name="mapperLocations" value="classpath:mapper/*/*Mapper.xml"/>
<property name="plugins">
<array>
<bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"></bean>
</array>
</property>
</bean>
第四步是配置mapper代理,扫描加载配置层次下的mapper映射文件
<!--4.配置mapper代理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.cdtu.*.mapper"/>
</bean>
再配置一下service的包扫描和开启注解即可:
<!--配置service层的包扫描-->
<context:component-scan base-package="com.cdtu.*.service"/>
<!-- 开启注解 -->
<tx:annotation-driven></tx:annotation-driven>
这样SSM三大框架的整合就到此完毕,整合完测试一下是否能跑通,建一个简单的页面,实现业务跳转,看是否能完成简单的业务逻辑。测试页面如下:
后台代码如下:
数据库数据如下:
启动项目如果点击页面上的a标签跳转后在控制台打印出对应数据代表SSM框架正确整合,整合后效果如图:
标签:xml,Maven,框架,spring,配置,springframework,SSM,mybatis,org From: https://blog.51cto.com/u_15101214/7149340