MyEclipse SSM(Spring+SpringMVC+MyBatis)框架搭建

1、maven引入需要使用的jar

pom.xml

<properties>  
        <!-- spring版本号 -->  
        <spring.version>4.0.2.RELEASE</spring.version>  
        <!-- mybatis版本号 -->  
        <mybatis.version>3.2.6</mybatis.version>  
        <!-- log4j日志文件管理包版本 -->  
        <slf4j.version>1.7.7</slf4j.version>  
        <log4j.version>1.2.17</log4j.version>  
    </properties>
  <dependencies>
 		<!-- junit 测试包 -->
   		<dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.9</version>
       </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>  
       <!-- 导入java ee jar 包 -->  
       <dependency>  
           <groupId>javax</groupId>  
           <artifactId>javaee-api</artifactId>  
           <version>7.0</version>  
       </dependency>  
       <!-- 导入Mysql数据库链接jar包 -->  
       <dependency>  
           <groupId>mysql</groupId>  
           <artifactId>mysql-connector-java</artifactId>  
           <version>5.1.30</version>  
       </dependency>  
       <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->  
       <dependency>  
           <groupId>commons-dbcp</groupId>  
           <artifactId>commons-dbcp</artifactId>  
           <version>1.2.2</version>  
       </dependency>  
       <!-- JSTL标签类 -->  
       <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>  
         
         
       <!-- 格式化对象,方便输出日志 -->  
       <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、建立jdbc属性文件 jdbc.properties

#============================================================================
# MySQL
#============================================================================
jdbc.mysql.driver=com.mysql.jdbc.Driver
jdbc.mysql.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8
jdbc.mysql.username=root
jdbc.mysql.password=root
#============================================================================
# common settings
#============================================================================
jdbc.initialSize=5
jdbc.minIdle=5
jdbc.maxIdle=20
jdbc.maxActive=100
jdbc.maxWait=100000
jdbc.defaultAutoCommit=false
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=600
jdbc.testWhileIdle=true
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.numTestsPerEvictionRun=20
jdbc.minEvictableIdleTimeMillis=300000

3、建立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">  
    <!-- 自动扫描 -->  
    <context:component-scan base-package="com.henry" />  
    <!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:/henry/config/jdbc.properties" />  
    </bean>  
  
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.mysql.driver}" />  
        <property name="url" value="${jdbc.mysql.url}" />  
        <property name="username" value="${jdbc.mysql.username}" />  
        <property name="password" value="${jdbc.mysql.password}" />  
        <!-- 初始化连接大小 -->  
        <property name="initialSize" value="${jdbc.initialSize}"></property>  
        <!-- 连接池最大数量 -->  
        <property name="maxActive" value="${jdbc.maxActive}"></property>  
        <!-- 连接池最大空闲 -->  
        <property name="maxIdle" value="${jdbc.maxIdle}"></property>  
        <!-- 连接池最小空闲 -->  
        <property name="minIdle" value="${jdbc.minIdle}"></property>  
        <!-- 获取连接最大等待时间 -->  
        <property name="maxWait" value="${jdbc.maxWait}"></property>  
    </bean>  
  
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
        <property name="configLocation" 
        	value="classpath:/henry/mybatis/SqlMapConfig.xml" />
        <property name="dataSource" ref="dataSource" />
    </bean>    
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
        <constructor-arg index="0" ref="sqlSessionFactory" /> 
    </bean> 
  
    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.henry.dao" />  
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>  
    </bean>  
  
    <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
    <bean id="transactionManager"  
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource" />  
    </bean>  
  
</beans>  


4、建立SqlMapConfig.xml  放置实体对应的xml文件

<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
	<mappers>
		<mapper resource="com/henry/mapping/blogUserMapper.xml"/>
	</mappers>
</configuration>


5、log4j的配置 log4j.properties

log4j.rootLogger=INFO,Console,File  
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  
  
log4j.appender.File = org.apache.log4j.RollingFileAppender  
log4j.appender.File.File = logs/ssm.log  
log4j.appender.File.MaxFileSize = 10MB  

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  


以上我们已经完成了spring+mybatis的配置了。可以适当的自己测试一下spring+mybatis是否配置成功。暂时这里不做测试 继续配置springMVC


6、spring-mav.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">  
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->  
    <context:component-scan base-package="com.henry.controller" />  
    <!--避免IE执行AJAX时,返回JSON出现下载文件 -->  
    <bean id="mappingJacksonHttpMessageConverter"  
        class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
        <property name="supportedMediaTypes">  
            <list>  
                <value>text/html;charset=UTF-8</value>  
            </list>  
        </property>  
    </bean>
    <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->  
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
                <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->  
            </list>
        </property>
    </bean>
    <!-- 定义跳转的文件的前后缀 ,视图模式配置-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
        <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->  
        <property name="prefix" value="/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>  
      
</beans>  

7、配置web.xml文件

这里面对spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合

<?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" version="3.0">
  <display-name>Archetype Created Web Application</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:/henry/config/spring-mybatis.xml</param-value>
  </context-param>
  <!-- 不拦截静态文件 -->  
    <servlet-mapping>  
        <servlet-name>default</servlet-name>  
        <url-pattern>/js/*</url-pattern>  
        <url-pattern>/css/*</url-pattern>  
        <url-pattern>/jsp/*</url-pattern>  
        <url-pattern>/images/*</url-pattern>  
        <url-pattern>/fonts/*</url-pattern>  
    </servlet-mapping>
  <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>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  </listener>
  <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:/henry/config/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>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>/login.jsp</welcome-file>
  </welcome-file-list>
</web-app>


至此已经完成了SSM框架的整合了,接下来就是测试咯,如果成功了那么恭喜你,如果失败了。就继续调试吧,座位程序猿就是要不停的和bug做斗争啊!


8、建立loginController类

loginController.java 控制器

package com.henry.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.henry.bean.BlogUser;
import com.henry.service.blogUserService;

@Controller
@RequestMapping("login")
public class loginController {
	@Resource
	private blogUserService blogUser;
	
	@RequestMapping("/login")
    public String toIndex(HttpServletRequest request,Model model,BlogUser user){  
        user = this.blogUser.checkLogin(user);
        if(user != null){
            return "index";
        }
        //model.addAttribute("user", user);
        return "";
    }  
}

9、建立blogUserServiceImpl

blogUserServiceImpl.java

package com.henry.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.henry.bean.BlogUser;
import com.henry.dao.blogUserMapper;
import com.henry.service.blogUserService;

@Service
public class blogUserServiceImpl implements blogUserService{
	@Resource(name = "blogUserMapping")
	private blogUserMapper blogUser;
	
	/**
     * 验证用户是否存在
     * */
	public BlogUser checkLogin(BlogUser user){
		return blogUser.checkLogin(user);
	}
}


抛出俩层  dao自己去写吧, 自己测试吧!


最后抛出一张项目层级图


版权声明:本文为hanwenyi520原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。