`

手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

阅读更多

手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案。标准的MVC设计模式,将整个系统划分为显示层、Controller层、Service层、Dao层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理, MyBatis作为数据对象持久化引擎。

一. 框架详情

  1. Spring 是一个轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

  2. SpringMVC 属于SpringFrameWork的后续产品,分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

  3. MyBatis 是一个基于Java的持久层框架。MyBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java映射成数据库中的记录。

二. 创建Maven项目

  1. Eclipse中用Maven创建项目


     
  2. 按默认Next


     
  3. 找到maven-archetype-webapp后,点击next


     
  4. 填写相应的信息,GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构。ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。Package填了默认给你建一个包,不写也可以。


     
  5. 刚建好的目录如下


     
  6. Maven规定必须添加以下Source Folder:
    src/main/resources
    src/main/java
    src/test/resources
    src/test/java
    在这步之前最好先项目上右键选择properties,然后点击java build path,在Librarys下,编辑JRE System Library,选择workspace default jre。


     

  7. 分别修改输出路径为,对应关系如下:


     
  8. 将项目转换成Dynamic Web Project,在项目上右键Properties,在左侧选择 Project Facets。


     
  9. 设置部署时的文件发布路径,删除test的两项,因为test是测试使用,并不需要部署。
    设置将Maven的jar包发布到lib下。Add -> Java Build Path Entries -> Maven Dependencies -> Finish


     

    三. Maven引入需要的JAR包

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>com.yingjun.test</groupId>
    	<artifactId>TradingState</artifactId>
    	<packaging>war</packaging>
    	<version>2.0.1</version>
    
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
    		<spring.version>3.2.9.RELEASE</spring.version>
    		<mybatis.version>3.1.1</mybatis.version>
    		<mybatisspring.version>1.1.1</mybatisspring.version>
    	</properties>
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-core</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-test</artifactId>
    			<version>${spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>${mybatis.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis-spring</artifactId>
    			<version>${mybatisspring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>5.1.34</version>
    		</dependency>
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.11</version>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>c3p0</groupId>
    			<artifactId>c3p0</artifactId>
    			<version>0.9.1.2</version>
    		</dependency>
    		<dependency>
    			<groupId>org.aspectj</groupId>
    			<artifactId>aspectjweaver</artifactId>
    			<version>1.8.1</version>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>jstl</artifactId>
    			<version>1.2</version>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet</groupId>
    			<artifactId>servlet-api</artifactId>
    			<version>3.0</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>javax.servlet.jsp</groupId>
    			<artifactId>jsp-api</artifactId>
    			<version>2.2</version>
    			<scope>provided</scope>
    		</dependency>
    		<dependency>
    			<groupId>commons-fileupload</groupId>
    			<artifactId>commons-fileupload</artifactId>
    			<version>1.3.1</version>
    		</dependency>
    		<dependency>
    			<groupId>commons-lang</groupId>
    			<artifactId>commons-lang</artifactId>
    			<version>2.6</version>
    		</dependency>
    		<dependency>
    			<groupId>commons-codec</groupId>
    			<artifactId>commons-codec</artifactId>
    			<version>1.9</version>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.httpcomponents</groupId>
    			<artifactId>httpclient</artifactId>
    			<version>4.5</version>
    		</dependency>
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>slf4j-api</artifactId>
    			<version>1.7.10</version>
    		</dependency>
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>slf4j-log4j12</artifactId>
    			<version>1.7.10</version>
    		</dependency>
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.17</version>
    		</dependency>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>fastjson</artifactId>
    			<version>1.1.41</version>
    		</dependency>
    		<dependency>
    			<groupId>org.codehaus.jackson</groupId>
    			<artifactId>jackson-mapper-asl</artifactId>
    			<version>1.9.13</version>
    		</dependency>
    	</dependencies>
    
    	<build>
    		<plugins>
    			<plugin>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<version>2.3.2</version>
    				<configuration>
    					<source>1.7</source>
    					<target>1.7</target>
    				</configuration>
    			</plugin>
    			<plugin>
    				<artifactId>maven-war-plugin</artifactId>
    				<version>2.2</version>
    				<configuration>
    					<version>3.0</version>
    					<failOnMissingWebXml>false</failOnMissingWebXml>
    				</configuration>
    			</plugin>
    		</plugins>
    		<finalName>${project.artifactId}_${project.version}_${maven.build.timestamp}</finalName>
    	</build>
    </project>
    

     

    四. 相关配置文件配置,整合SSM框架

    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/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    	version="2.4">
    
    	<!-- 配置 Spring -->
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:spring.xml</param-value>
    	</context-param>
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
    	<!-- 防止Spring内存溢出监听器 -->
    	<listener>
    		<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    	</listener>
    
    	<!-- 配置springmvc -->
    	<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>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>springMVC</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    	
    	<!-- 字符集过滤器 -->
    	<filter>
    		<filter-name>encodingFilter</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>forceEncoding</param-name>
    			<param-value>true</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>encodingFilter</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    	
    </web-app>

     

    spring.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:mvc="http://www.springframework.org/schema/mvc"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
                http://www.springframework.org/schema/mvc 
                http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
                http://www.springframework.org/schema/context 
                http://www.springframework.org/schema/context/spring-context-3.0.xsd 
                http://www.springframework.org/schema/aop 
                http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
                http://www.springframework.org/schema/tx 
                http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">
    
    	<!-- 扫描service、dao组件 -->
    	<context:component-scan base-package="com.yingjun.test" />
    	<!-- 分解配置 jdbc.properites -->
    	<context:property-placeholder location="classpath:jdbc.properties" />
    	
    	<!-- 数据源c3p0 -->
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="driverClass" value="${jdbc.driverClassName}" />
    		<property name="jdbcUrl" value="${jdbc.url}" />
    		<property name="user" value="${jdbc.username}" />
    		<property name="password" value="${jdbc.password}" />
    		<property name="maxPoolSize" value="${c3p0.pool.size.max}" />
    		<property name="minPoolSize" value="${c3p0.pool.size.min}" />
    		<property name="initialPoolSize" value="${c3p0.pool.size.ini}" />
    		<property name="acquireIncrement" value="${c3p0.pool.size.increment}" />
    	</bean>
    
    
    	<!-- sessionFactory 将spring和mybatis整合 -->
    	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="configLocation" value="classpath:spring-mybatis.xml" />
    		<property name="mapperLocations" value="classpath*:com/yingjun/test/mapping/**/*.xml" />
    	</bean>
    	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<property name="basePackage" value="com,yingjun.test.dao" />
    		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    	</bean>
    
    	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource" />
    	</bean>
    	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
    		<tx:attributes>
    			<tx:method name="add*" propagation="REQUIRED" />
    			<tx:method name="append*" propagation="REQUIRED" />
    			<tx:method name="insert*" propagation="REQUIRED" />
    			<tx:method name="save*" propagation="REQUIRED" />
    			<tx:method name="update*" propagation="REQUIRED" />
    			<tx:method name="modify*" propagation="REQUIRED" />
    			<tx:method name="edit*" propagation="REQUIRED" />
    			<tx:method name="delete*" propagation="REQUIRED" />
    			<tx:method name="remove*" propagation="REQUIRED" />
    			<tx:method name="repair" propagation="REQUIRED" />
    			<tx:method name="delAndRepair" propagation="REQUIRED" />
    
    			<tx:method name="get*" propagation="SUPPORTS" />
    			<tx:method name="find*" propagation="SUPPORTS" />
    			<tx:method name="load*" propagation="SUPPORTS" />
    			<tx:method name="search*" propagation="SUPPORTS" />
    			<tx:method name="datagrid*" propagation="SUPPORTS" />
    
    			<tx:method name="*" propagation="SUPPORTS" />
    		</tx:attributes>
    	</tx:advice>
    	<aop:config>
    		<aop:pointcut id="transactionPointcut" expression="execution(* com.yingjun.test.service..*Impl.*(..))" />
    		<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
    	</aop:config>
    </beans>            

     


    为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。

    spring-mybatis.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    	<!-- 暂时不需要其他配置-->
    </configuration>     

     

    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.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc  
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
    
    	<!-- 默认的注解映射的支持 -->
    	<mvc:annotation-driven />
    
    	<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
    	<context:component-scan base-package="com.yingjun.test.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>
    
    	<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
    	<bean
    		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
    		<property name="prefix" value="/WEB-INF/jsp/" />
    		<property name="suffix" value=".jsp" />
    	</bean>
    
    	<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
    	<bean id="multipartResolver"
    		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    		<!-- 默认编码 -->
    		<property name="defaultEncoding" value="utf-8" />
    		<!-- 文件大小最大值 -->
    		<property name="maxUploadSize" value="10485760000" />
    		<!-- 内存中的最大值 -->
    		<property name="maxInMemorySize" value="40960" />
    	</bean>
    
    </beans>

     

    log4j.properties

    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://192.168.1.194:3306/test?useUnicode=true&characterEncoding=UTF-8
    jdbc.username=root
    jdbc.password=root
    
    c3p0.pool.size.max=20
    c3p0.pool.size.min=5
    c3p0.pool.size.ini=3
    c3p0.pool.size.increment=2


    jdbc.properties

    log4j.rootLogger=info, console, debug, app, error
    
    ###Console ###
    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 = %d %p[%C:%L]- %m%n
    
    ### debug ###  
    log4j.appender.debug = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.debug.File = log/debug.log
    log4j.appender.debug.Append = true
    log4j.appender.debug.Threshold = DEBUG
    log4j.appender.debug.DatePattern='.'yyyy-MM-dd
    log4j.appender.debug.layout = org.apache.log4j.PatternLayout
    log4j.appender.debug.layout.ConversionPattern = %d %p[%c:%L] - %m%n
    
    ### app ###  
    log4j.appender.app = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.app.File = log/app.log
    log4j.appender.app.Append = true
    log4j.appender.app.Threshold = INFO
    log4j.appender.app.DatePattern='.'yyyy-MM-dd
    log4j.appender.app.layout = org.apache.log4j.PatternLayout
    log4j.appender.app.layout.ConversionPattern = %d %p[%c:%L] - %m%n
    
    ### Error ###
    log4j.appender.error = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.error.File = log/error.log
    log4j.appender.error.Append = true
    log4j.appender.error.Threshold = ERROR 
    log4j.appender.error.DatePattern='.'yyyy-MM-dd
    log4j.appender.error.layout = org.apache.log4j.PatternLayout
    log4j.appender.error.layout.ConversionPattern =%d %p[%c:%L] - %m%n

     


    五. 利用MyBatis Generator自动创建实体类、映射文件以及DAO接口

    MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy到项目工程中即可。
    生成代码需要的文件和jar并建立如下目录结构:



    在generatorl.xml中配置相关的数据库连接,已经数据库表:

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE generatorConfiguration  
      PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"  
      "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
      
    <generatorConfiguration>
    	<!-- 数据库驱动 -->
    	<classPathEntry location="mysql-connector-java-5.1.34.jar" />
    	<context id="DB2Tables" targetRuntime="MyBatis3">
    		<commentGenerator>
    			<property name="suppressDate" value="true" />
    			<!-- 是否去除自动生成的注释 true:是 : false:否 -->
    			<property name="suppressAllComments" value="true" />
    		</commentGenerator>
    		<!--数据库链接URL,用户名、密码 -->
    		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
    			connectionURL="jdbc:mysql://192.168.1.194:3306/noc" 
    			userId="root" password="root">
    		</jdbcConnection>
    		<javaTypeResolver>
    			<property name="forceBigDecimals" value="false" />
    		</javaTypeResolver>
    		<!-- 生成模型的包名和位置 -->
    		<javaModelGenerator targetPackage="com.yingjun.test.model"
    			targetProject="src">
    			<property name="enableSubPackages" value="true" />
    			<property name="trimStrings" value="true" />
    		</javaModelGenerator>
    		<!-- 生成映射文件的包名和位置 -->
    		<sqlMapGenerator targetPackage="com.yingjun.test.mapping"
    			targetProject="src">
    			<property name="enableSubPackages" value="true" />
    		</sqlMapGenerator>
    		<!-- 生成DAO的包名和位置 -->
    		<javaClientGenerator type="XMLMAPPER" targetPackage="com.yingjun.test.dao" 
    			 targetProject="src">
    			 <property name="enableSubPackages" value="true" />
    		</javaClientGenerator>
    		<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
    		<table tableName="other_list" domainObjectName="OtherList"
    			enableCountByExample="fasle" enableUpdateByExample="false"
    			enableDeleteByExample="false" enableSelectByExample="false"
    			selectByExampleQueryId="false" >
    		</table>
    	</context>
    </generatorConfiguration>  
    打开CMD窗口 进入该目录结构,输入命令行:

    java -jar mybatis-generator-core-1.3.2.jar -configfile generator.xml -overwrite

    运行完成后会生成相应的dao mapper 和model,是不是很爽。
     

    六. 建立Service层以及conrorller层

    package com.yingjun.test.service;
    
    public interface OtherServiceI {
    	
    	public String getOterList();
    
    }
    

     

    package com.yingjun.test.service;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    import com.yingjun.test.dao.OtherListMapper;
    import com.yingjun.test.model.OtherList;
    import com.yingjun.test.model.OtherListDomain;
    @Service
    public class OtherServiceImpl implements OtherServiceI {
    
    	
    	@Autowired
    	private OtherListMapper otherListMapper;
    	
    	@Override
    	public String getOterList() {
    		Set<String> set=new HashSet<String>();
    		List<OtherList> list=otherListMapper.selectAll();
    		List<OtherListDomain> jsonList=new ArrayList<OtherListDomain>();
    		for(OtherList other:list){
    			String title=other.getTitle();
    			if(set.contains(title)){
    				continue;
    			}else{
    				List<OtherList> t_list=new ArrayList<OtherList>();
    				for(OtherList data:list){
    					if(title.equals(data.getTitle())){
    						t_list.add(data);
    					}
    				}
    				OtherListDomain domain=new OtherListDomain();
    				domain.setTitle(title);
    				domain.setItems(t_list);
    				jsonList.add(domain);
    				set.add(other.getTitle());
    			}
    		}
    		return JSON.toJSONString(jsonList, SerializerFeature.WriteMapNullValue);
    	}
    
    }
    

     

    package com.yingjun.test.controller;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.alibaba.fastjson.JSON;
    import com.yingjun.test.service.OtherServiceI;
    import com.yingjun.test.service.StockStatusServiceI;
    @Controller
    @RequestMapping(value = "/")
    public class TSSController {
    	
    	@Autowired
    	private OtherServiceI otherService;
    	
    	@RequestMapping(value="/getOtherList",produces="text/html;charset=UTF-8" ) 
    	@ResponseBody
    	private String getOtherList(){
    		String json=otherService.getOterList();
    		return json;
    	}
    }
    

     

    七. 建立测试类

    import java.util.List;
    
    import org.apache.log4j.LogManager;
    import org.apache.log4j.Logger;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    
    
    
    @RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration(locations = {"classpath:spring.xml"})
    public class TestMybatis {
    
    	@Autowired
    	private OtherServiceI service;
    
    	@Test
    	public void test() {
    	       String list=service.getOterList();
    	       logger.info(list);
    	}
    	
    }
    

     

    八. 通过浏览器进行验证

    http://localhost:8080/TzyjStateService/getOtherList

     

     至此,测试成功,SSM三大框架的整合就完成了,有什么其他需求可以在此基础继续添加。

4
3
分享到:
评论
2 楼 shuimuyuexiao 2016-12-14  
哥们 你也好好检查下 你写的东西 log4j.properties 和 jdbc.properties 反了
1 楼 liuzidong 2016-07-24  

相关推荐

    SpringMVC精品资源--手把手教你整合最简洁的SSM框架:SpringMVC + Spring + MyBatis.zip

    SpringMVC、Spring和MyBatis是Java Web开发中非常流行的三大开源框架,它们共同构建了所谓的"SSM"框架组合。SpringMVC作为表现层框架,负责处理HTTP请求并返回响应;Spring作为核心容器,提供了依赖注入和面向切面...

    java版ss源码-SpringMvcMybatis:SpringMvcMybatis项目框架整合,加入bruid数据库连接池

    [手把手教程][JavaWeb]优雅的SpringMvc+Mybatis整合之路 手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 前面网友说我为啥很久不更新博客了,我告诉他们我准备潜修.其实是我的博客被人批评是在记流水账...

    SSM+Maven(框架整合)jar包齐全

    SSM+Maven框架整合是Java开发中常见的一种技术栈,它由Spring、SpringMVC和MyBatis三个核心组件组成。本资源包含了完整的jar包,适用于初学者或开发者进行框架学习与实践。 首先,Spring作为Java企业级应用的核心...

    ssm:Spring,SpringMVC,Mybatis介绍案例

    关于项目测试环境后端:spring+mybatis+springmvc 前端:bootstrap+Font Awesome图标集测试环境:IDEA + tomcat8 + mysql5.7 + jdk8 + maven项目功能1. 实现用户登录功能2. 实现客户信息的增删改查功能3. 实现分页...

    手把手教你 SSM 整合.pdf

    《手把手教你SSM整合》是一份详细的教程,旨在帮助初学者或开发者了解如何将Spring、Spring MVC和Mybatis这三大主流Java框架整合在一起,构建一个完整的Web应用程序。以下是对这个整合过程的详细阐述。 首先,...

    手把手教你开发一个SSM系统.docx

    SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,由Spring框架作为基础,SpringMVC负责处理HTTP请求和响应,MyBatis则作为持久层框架,方便数据库操作。本教程将指导你一步步地开发一个基于SSM...

    SSM整合开发教程

    SSM整合开发教程是针对Java Web开发者的一项重要技能,它结合了Spring、SpringMVC和MyBatis三个框架,以实现高效、灵活的后端应用开发。本教程将通过实战项目和详细的步骤指导,帮助你深入理解并掌握SSM集成的技术...

    权限管理系统-项目实战

    本课程是基于SSM+Maven框架的权限管理系统,非常详细,包含...技术采用:Spring+SpringMVC+MyBatis+MySql+easyUI+Ajax+Maven,都是现实市场主流技术。通过本课程的学习能够掌握并快速熟悉企业级的java web项目的开发。

    java图书馆管理系统源码下载ssm图书管理系统图书借阅管理系统源码编程.zip

    Java图书馆管理系统是一款基于SSM(Spring、SpringMVC、MyBatis)框架开发的应用软件,主要用于实现图书馆的日常管理功能,如图书的入库、出库、借阅、归还等操作,同时也支持对读者信息的管理和查询。SSM框架是Java...

    基于SSM框架的人力资源管理后台系统+源代码+文档说明+数据库

    # Java SSM练手小项目-手把手带你搭建一个基于SSM框架的人力资源管理后台系统 ## 前言 相信很多小伙伴在学习完SSM三大架构以后,不知道该如何找到一个简单容易上手的项目进行实战训练,经常在博客上看到一个不错的...

    基于SSM的电子商城项目源码(1).zip

    SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,广泛应用于构建企业级电子商务系统。这个"基于SSM的电子商城项目源码(1)"是一个实战项目,可以帮助开发者深入理解SSM框架的实际应用以及电商...

    2023顺平java从入门到精通151G 视频教程 下载

    SpringMVC(上)│ ├─主流框架【4】- SpringMVC(下)│ ├─主流框架【5】- MyBatis│ └─主流框架【6】- SSM│├─5-微服务│ │ 分布式 微服务资料.zip│ │ 分布式 微服务更资料.zip│ │ │ ├─分布式 微服务...

    202=java从入门到精通151G 视频教程 下载

    SpringMVC(上)│ ├─主流框架【4】- SpringMVC(下)│ ├─主流框架【5】- MyBatis│ └─主流框架【6】- SSM│├─5-微服务│ │ 分布式 微服务资料.zip│ │ 分布式 微服务更资料.zip│ │ │ ├─分布式 微服务...

Global site tag (gtag.js) - Google Analytics