SSM框架整合(Spring+SpringMVC+MyBatis)
生活随笔
收集整理的這篇文章主要介紹了
SSM框架整合(Spring+SpringMVC+MyBatis)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
輸出結(jié)果
1.Maven Web項(xiàng)目創(chuàng)建
之前有寫過Eclipse+Maven創(chuàng)建web項(xiàng)目的帖子,如果需要,請(qǐng)參考這里寫鏈接內(nèi)容
創(chuàng)建好項(xiàng)目之后因?yàn)槿胂聢D:
2.SSM整合
2.1 引入需要的JAR包
pom.xml如下
<properties><!-- spring版本號(hào) --><spring.version>4.0.2.RELEASE</spring.version><!-- mybatis版本號(hào) --><mybatis.version>3.2.6</mybatis.version><!-- log4j日志文件管理包版本 --><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><!-- 表示開發(fā)的時(shí)候引入,發(fā)布的時(shí)候不會(huì)加載此包 --><scope>test</scope></dependency><!-- spring核心包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-oxm</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</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-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</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>${mybatis.version}</version></dependency><!-- mybatis/spring包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- 導(dǎo)入java ee jar 包 --><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version><scope>provided</scope></dependency><!-- 導(dǎo)入Mysql數(shù)據(jù)庫(kù)鏈接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!-- 導(dǎo)入dbcp的jar包,用來在applicationContext.xml中配置數(shù)據(jù)庫(kù) --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!-- JSTL標(biāo)簽類 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志文件管理包 --><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- 格式化對(duì)象,方便輸出日志 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.1.41</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency><!-- log end --><!-- 映入JSON --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- 上傳組件包 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.9</version></dependency></dependencies>
2.2 Spring與MyBatis的整合
2.2.1 建立JDBC屬性文件
jdbc.properties配置文件
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/mydb
username=root
password=root
#定義初始連接數(shù)
initialSize=0
#定義最大連接數(shù)
maxActive=20
#定義最大空閑
maxIdle=20
#定義最小空閑
minIdle=1
#定義最長(zhǎng)等待時(shí)間
maxWait=60000
2.2.2 建立spring-mybatis.xml配置文件
spring-mybatis.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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 自動(dòng)掃描 --><context:component-scan base-package="com.fit.ssm" /><!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties" /></bean><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${driver}" /><property name="url" value="${url}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 初始化連接大小 --><property name="initialSize" value="${initialSize}"></property><!-- 連接池最大數(shù)量 --><property name="maxActive" value="${maxActive}"></property><!-- 連接池最大空閑 --><property name="maxIdle" value="${maxIdle}"></property><!-- 連接池最小空閑 --><property name="minIdle" value="${minIdle}"></property><!-- 獲取連接最大等待時(shí)間 --><property name="maxWait" value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 自動(dòng)掃描mapping.xml文件 --><property name="mapperLocations" value="classpath:mapper/*.xml"></property></bean><!-- DAO接口所在包名,Spring會(huì)自動(dòng)查找其下的類 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.fit.ssm.dao" /><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean><!-- (事務(wù)管理)transaction manager, use JtaTransactionManager for global tx --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean></beans>
2.2.3 配置springMVC配置文件
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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"><!-- 自動(dòng)掃描該包,使SpringMVC認(rèn)為包下用了@controller注解的類是控制器 --><context:component-scan base-package="com.fit.ssm.controller" /><!--避免IE執(zhí)行AJAX時(shí),返回JSON出現(xiàn)下載文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 啟動(dòng)SpringMVC的注解功能,完成請(qǐng)求和注解POJO的映射 --><bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON轉(zhuǎn)換器 --></list></property></bean><!-- 定義跳轉(zhuǎn)的文件的前后綴 ,視圖模式配置--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 這里的配置我的理解是自動(dòng)給后面action的方法return的字符串加上前綴和后綴,變成一個(gè) 可用的url地址 --><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean><!-- 配置文件上傳,如果沒有使用文件上傳可以不用配置,當(dāng)然如果不配,那么配置文件中也不必引入上傳組件包 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 默認(rèn)編碼 --><property name="defaultEncoding" value="utf-8" /> <!-- 文件大小最大值 --><property name="maxUploadSize" value="10485760000" /> <!-- 內(nèi)存中的最大值 --><property name="maxInMemorySize" value="40960" /> </bean> </beans>
2.2.3 Log4j的配置
log4j.properties配置文件
#定義LOG輸出級(jí)別
log4j.rootLogger=INFO,Console,File
#定義日志輸出目的地為控制臺(tái)
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以靈活地指定日志輸出格式,下面一行是指定具體的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n#文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定輸出目錄
log4j.appender.File.File = logs/ssm.log
#定義文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 輸出所以日志,如果換成DEBUG表示輸出DEBUG以上級(jí)別日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
2.2.4 web.xml配置
web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>SSM</display-name><!-- Spring和mybatis的配置文件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mybatis.xml</param-value></context-param><!-- 編碼過濾器 --><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><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><!-- Spring監(jiān)聽器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 防止Spring內(nèi)存溢出監(jiān)聽器 --><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class></listener><!-- Spring MVC servlet --><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:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 此處可以可以配置成*.do,對(duì)應(yīng)struts的后綴習(xí)慣 --><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>/index.jsp</welcome-file></welcome-file-list><!-- 配置SESSION超時(shí),單位是分鐘 --><session-config><session-timeout>15</session-timeout></session-config><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>
3.測(cè)試
3.1 創(chuàng)建表
CREATE TABLE `t_user` (`id` int(11) NOT NULL COMMENT '主鍵',`userName` varchar(255) DEFAULT NULL COMMENT '用戶名',`password` varchar(255) DEFAULT NULL COMMENT '密碼',`age` int(11) DEFAULT NULL COMMENT '年齡',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶信息';
3.2 創(chuàng)建對(duì)應(yīng)實(shí)體
/*** 用戶實(shí)體* * @author zlzhaoe* @version [版本號(hào), 2017-12-26]* @see [相關(guān)類/方法]* @since [產(chǎn)品/模塊版本]*/
public class User {/*** 主鍵*/private Integer id;/*** 用戶名*/private String userName;/*** 密碼*/private String password;/*** 年齡*/private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}
3.3創(chuàng)建DAO層接口
/*** 用戶信息DAO* * @author zlzhaoe* @version [版本號(hào), 2017-12-26]* @see [相關(guān)類/方法]* @since [產(chǎn)品/模塊版本]*/
public interface IUserDao {/*** 通過主鍵查詢用戶信息* @param id* @return User*/User selectByPrimaryKey(Integer id);
}
3.4配置mapper
userMapper.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.fit.ssm.dao.IUserDao" ><resultMap id="BaseResultMap" type="com.fit.ssm.bean.User" ><id column="id" property="id" jdbcType="INTEGER" /><result column="userName" property="userName" jdbcType="VARCHAR" /><result column="password" property="password" jdbcType="VARCHAR" /><result column="age" property="age" jdbcType="INTEGER" /></resultMap><sql id="Base_Column_List" >id, userName, password, age</sql><select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >select <include refid="Base_Column_List" />from t_userwhere id = #{id,jdbcType=INTEGER}</select>
</mapper>
3.5創(chuàng)建service層接口
/*** 用戶信息Service* * @author zlzhaoe* @version [版本號(hào), 2017-12-26]* @see [相關(guān)類/方法]* @since [產(chǎn)品/模塊版本]*/
public interface IUserService {public User getUserById(int userId);
}
3.6創(chuàng)建service層實(shí)現(xiàn)接口
/*** 用戶信息service實(shí)現(xiàn)類* * @author zlzhaoe* @version [版本號(hào), 2017-12-26]* @see [相關(guān)類/方法]* @since [產(chǎn)品/模塊版本]*/
@Service("userService")
public class UserServiceImpl implements IUserService{@Resourceprivate IUserDao userDao;@Overridepublic User getUserById(int userId) {// TODO Auto-generated method stubreturn userDao.selectByPrimaryKey(userId);}
}
3.7創(chuàng)建controller
/*** 用戶信息控制* * @author zlzhaoe* @version [版本號(hào), 2017-12-26]* @see [相關(guān)類/方法]* @since [產(chǎn)品/模塊版本]*/
@Controller
@RequestMapping("/user")
public class UserController {@Resourceprivate IUserService userService;@RequestMapping("/showUser")public String toIndex(HttpServletRequest request,Model model){int userId = Integer.parseInt(request.getParameter("id"));User user = this.userService.getUserById(userId);model.addAttribute("user", user);return "showUser";}
}
3.8 創(chuàng)建頁(yè)面
showUser.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>用戶信息</title></head><body>用戶名:${user.userName}<br>密碼:${user.password}<br>年齡:${user.age}<br></body>
</html>
3.9 運(yùn)行項(xiàng)目,查看結(jié)果
請(qǐng)求http://localhost:8080/SSM_DEMO/user/showUser?id=1
4.0 整合完畢
源碼下載
總結(jié)
以上是生活随笔為你收集整理的SSM框架整合(Spring+SpringMVC+MyBatis)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql根据时间取前后几秒,几分钟,几
- 下一篇: mysql/mariadb centos