Maven搭建SpringMVC+MyBatis+Json项目(多模块项目)

一、开发环境

Eclipse:eclipse-jee-luna-SR1a-win32;

JDK:jdk-8u121-windows-i586.exe;

MySql:MySQL Server 5.5;

 

二、创建Maven项目

1.创建父项目

NEW->PROJECT->MAVEN->Maven Project,点击next>进入下一步,可以看到New Maven Project界面,

 

点击Next >进入下一步,进入Select an Archetype界面,在Filter:输入simple,选择org.apache.maven.archetypes,

点击next>,进入Enter a group id for the artifact界面,

填写好Group Id和Artifact Id,我这里在ssm分组下创建了一个parent项目。点击Finish。

2.创建子项目

选中parent项目,右键,选择new->project->maven->maven Module,点击Next,进入Enter a module name界面,

填写Module Name,点击next>,进入Select an Archetype界面,

 

 在Filter输入start,选择maven-archetype-quickstart,点击next>,进入Specify Archetype parameters界面,

修改Package,点击Finish。就会创建parent项目下的一个子项目dao。

 

打开parent项目的pom.xml

可以看到有个<moduls><module>dao</module></modules>,这说明dao已经是parent项目的子项目了。

接着我们按照上述方法继续创建子项目service和model。

创建web子项目时,在进入Select an Archetype界面,在Filter填写web,选择org.apache.maven.archetypes.

点击next>,修改package,最后点击Finish。

这样,我们的父项目和所有子项目就已经创建完了。如下图:

右键web子项目(其他子项目操作相同),build path->configure build path,打开Java Build Path,点击Libraies页,

如图,删除JRE System Lirary[J2SE-1.5],重新选择你自己的jdk;

三、添加Springmvc+MyBatis依赖的jar包

在父类的pom.xml中添加SpringMvc+MyBatis所有依赖包

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4     <modelVersion>4.0.0</modelVersion>
  5 
  6     <groupId>ssm</groupId>
  7     <artifactId>parent</artifactId>
  8     <version>1</version>
  9     <packaging>pom</packaging>
 10 
 11     <distributionManagement>
 12         <site>
 13             <id>website</id>
 14             <url>scp://webhost.company.com/www/website</url>
 15         </site>
 16     </distributionManagement>
 17 
 18     <properties>
 19         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 20           <!-- spring版本号 -->
 21         <spring.version>4.0.2.RELEASE</spring.version>
 22          <!-- mybatis版本号 -->
 23         <mybatis.version>3.2.6</mybatis.version>
 24          <!-- log4j日志文件管理包版本 -->
 25         <slf4j.version>1.7.7</slf4j.version>
 26         <log4j.version>1.2.17</log4j.version>
 27     </properties>
 28     <modules>
 29         <module>dao</module>
 30         <module>web</module>
 31         <module>service</module>
 32         <module>model</module>
 33     </modules>
 34     
 35     
 36     
 37     <!--   <dependencyManagement> -->
 38   <dependencies>
 39     <dependency>
 40         <groupId>junit</groupId>
 41         <artifactId>junit</artifactId>
 42         <version>4.11</version>
 43          <!-- 表示开发的时候引入,发布的时候不会加载此包 -->
 44         <scope>test</scope>
 45     </dependency>
 46     <!-- spring核心包 -->
 47     <dependency>
 48         <groupId>org.springframework</groupId>
 49         <artifactId>spring-core</artifactId>
 50         <version>${spring.version}</version>
 51     </dependency>
 52     <dependency>
 53         <groupId>org.springframework</groupId>
 54         <artifactId>spring-web</artifactId>
 55         <version>${spring.version}</version>
 56     </dependency>
 57     <dependency>
 58         <groupId>org.springframework</groupId>
 59         <artifactId>spring-oxm</artifactId>
 60         <version>${spring.version}</version>
 61     </dependency>
 62     <dependency>
 63         <groupId>org.springframework</groupId>
 64         <artifactId>spring-tx</artifactId>
 65         <version>${spring.version}</version>
 66     </dependency>
 67     <dependency>
 68         <groupId>org.springframework</groupId>
 69         <artifactId>spring-jdbc</artifactId>
 70         <version>${spring.version}</version>
 71     </dependency>
 72     <dependency>
 73         <groupId>org.springframework</groupId>
 74         <artifactId>spring-webmvc</artifactId>
 75         <version>${spring.version}</version>
 76     </dependency>
 77     <dependency>
 78         <groupId>org.springframework</groupId>
 79         <artifactId>spring-aop</artifactId>
 80         <version>${spring.version}</version>
 81     </dependency>
 82     <dependency>
 83         <groupId>org.springframework</groupId>
 84         <artifactId>spring-context-support</artifactId>
 85         <version>${spring.version}</version>
 86     </dependency>
 87     <dependency>
 88         <groupId>org.springframework</groupId>
 89         <artifactId>spring-test</artifactId>
 90         <version>${spring.version}</version>
 91     </dependency>
 92      <!-- mybatis核心包 -->
 93     <dependency>
 94         <groupId>org.mybatis</groupId>
 95         <artifactId>mybatis</artifactId>
 96         <version>${mybatis.version}</version>
 97     </dependency>
 98       <!-- mybatis/spring包 -->
 99     <dependency>
100         <groupId>org.mybatis</groupId>
101         <artifactId>mybatis-spring</artifactId>
102         <version>1.2.2</version>
103     </dependency>
104       <!-- 导入java ee jar 包 -->
105     <dependency>
106         <groupId>javax</groupId>
107         <artifactId>javaee-api</artifactId>
108         <version>7.0</version>
109         <scope>provided</scope>
110         <exclusions> 
111             <exclusion>  
112                 <groupId>javax</groupId>  
113                 <artifactId>javaee-api</artifactId>  
114             </exclusion>  
115         </exclusions>  
116     </dependency>  
117 
118 
119       <!-- 导入Mysql数据库链接jar包 -->
120     <dependency>
121         <groupId>mysql</groupId>
122         <artifactId>mysql-connector-java</artifactId>
123         <version>5.1.30</version>
124     </dependency>
125     <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
126     <dependency>
127         <groupId>commons-dbcp</groupId>
128         <artifactId>commons-dbcp</artifactId>
129         <version>1.2.2</version>
130     </dependency>
131       <!-- JSTL标签类 -->
132     <dependency>
133         <groupId>jstl</groupId>
134         <artifactId>jstl</artifactId>
135         <version>1.2</version>
136     </dependency>
137      <!-- 日志文件管理包 -->
138     <!-- log start -->
139     <dependency>
140         <groupId>log4j</groupId>
141         <artifactId>log4j</artifactId>
142         <version>${log4j.version}</version>
143     </dependency>
144     <!-- 格式化对象,方便输出日志 -->
145     <dependency>
146         <groupId>com.alibaba</groupId>
147         <artifactId>fastjson</artifactId>
148         <version>1.1.41</version>
149     </dependency>
150     <dependency>
151         <groupId>org.slf4j</groupId>
152         <artifactId>slf4j-api</artifactId>
153         <version>${slf4j.version}</version>
154     </dependency>
155     <dependency>
156         <groupId>org.slf4j</groupId>
157         <artifactId>slf4j-log4j12</artifactId>
158         <version>${slf4j.version}</version>
159     </dependency>
160     <!-- log end -->
161     <!-- 映入JSON -->
162     <dependency>
163         <groupId>org.codehaus.jackson</groupId>
164         <artifactId>jackson-mapper-asl</artifactId>
165         <version>1.9.13</version>
166     </dependency>
167        <!-- 上传组件包 -->
168     <dependency>
169         <groupId>commons-fileupload</groupId>
170         <artifactId>commons-fileupload</artifactId>
171         <version>1.3.1</version>
172     </dependency>
173     <dependency>
174         <groupId>commons-io</groupId>
175         <artifactId>commons-io</artifactId>
176         <version>2.4</version>
177     </dependency>
178     <dependency>
179         <groupId>commons-codec</groupId>
180         <artifactId>commons-codec</artifactId>
181         <version>1.9</version>
182     </dependency>
183     <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core自动创建代码 -->
184 <dependency>
185     <groupId>org.mybatis.generator</groupId>
186     <artifactId>mybatis-generator-core</artifactId>
187     <version>1.3.5</version>
188 </dependency>
189 <dependency>  
190     <groupId>com.fasterxml.jackson.dataformat</groupId>  
191     <artifactId>jackson-dataformat-xml</artifactId>  
192     <version>2.3.2</version>  
193 </dependency>  
194 <dependency>  
195     <groupId>com.fasterxml.jackson.core</groupId>  
196     <artifactId>jackson-databind</artifactId>  
197     <version>2.3.2</version>  
198 </dependency>  
199 <dependency>  
200     <groupId>com.fasterxml.jackson.core</groupId>  
201     <artifactId>jackson-annotations</artifactId>  
202     <version>2.3.2</version>  
203 </dependency>  
204 
205 <dependency>  
206     <groupId>com.fasterxml.jackson.core</groupId>  
207     <artifactId>jackson-core</artifactId>  
208     <version>2.3.2</version>  
209 </dependency>  
210 
211 </dependencies>
212 <!--  </dependencyManagement> -->
213     
214     
215     
216 </project>
pom.xml

四,自动生成代码

1.创建数据库和表

 

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50521
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50521
File Encoding         : 65001

Date: 2017-03-28 11:11:09
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `user_t`
-- ----------------------------
DROP TABLE IF EXISTS `user_t`;
CREATE TABLE `user_t` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_name` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user_t
-- ----------------------------
INSERT INTO `user_t` VALUES ('1', '张三', '123', '22');

2.利用mybatis-generator-core-1.3.5.jar自动创建代码

1.在本地创建一个文件夹(我在D盘创建了一个generator文件夹);

2.在generator文件夹下创建一个src文件夹,

3.添加2个jar包mybatis-generator-core-1.3.5.jar和mysql-connector-java-5.1.30.jar

4.在创建一个generatorConfig.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE generatorConfiguration
 3 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 4 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 5 <generatorConfiguration>
 6     <!-- 数据库驱动 -->
 7     <classPathEntry location="mysql-connector-java-5.1.30.jar" />
 8     <context id="DB2Tables" targetRuntime="MyBatis3">
 9         <commentGenerator>
10             <property name="suppressDate" value="true" />
11             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
12             <property name="suppressAllComments" value="true" />
13         </commentGenerator>
14         <!--数据库链接URL,用户名、密码 -->
15         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
16             connectionURL="jdbc:mysql://127.0.0.1:3306/test" userId="root"
17             password="root">
18         </jdbcConnection>
19         <javaTypeResolver>
20             <property name="forceBigDecimals" value="false" />
21         </javaTypeResolver>
22         <!-- 生成模型的包名和位置 -->
23         <javaModelGenerator targetPackage="com.gwx.model"
24             targetProject="src">
25             <property name="enableSubPackages" value="true" />
26             <property name="trimStrings" value="true" />
27         </javaModelGenerator>
28         <!-- 生成映射文件的包名和位置 -->
29         <sqlMapGenerator targetPackage="com.gwx.mapping"
30             targetProject="src">
31             <property name="enableSubPackages" value="true" />
32         </sqlMapGenerator>
33         <!-- 生成DAO的包名和位置 -->
34         <javaClientGenerator type="XMLMAPPER"
35             targetPackage="com.gwx.dao" targetProject="src">
36             <property name="enableSubPackages" value="true" />
37         </javaClientGenerator>
38         <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
39         <table tableName="user_t" domainObjectName="User"
40             enableCountByExample="false" enableUpdateByExample="false"
41             enableDeleteByExample="false" enableSelectByExample="false"
42             selectByExampleQueryId="false"></table>
43     </context>
44 </generatorConfiguration>
generatorConfig.xml

5创建一个start.bat

1 set current_path="%cd%"
2 java -jar mybatis-generator-core-1.3.5.jar -configfile generatorConfig.xml -overwrite
3 pause
4 exit
start.bat

整体目录结构如下:

然后运行start.bat(双击),则自动生成了dao,mapping,model代码

五、添加子项目之间的依赖

1.给web子项目添加service子项目的依赖

打开web项目的pom.xml

给<dependencies>下添加

<dependency>
<groupId>ssm</groupId>
<artifactId>service</artifactId>
<version>1</version>
</dependency>

完整web/pom.xml如下:

 1 <?xml version="1.0"?>
 2 <project
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <groupId>ssm</groupId>
 8         <artifactId>parent</artifactId>
 9         <version>1</version>
10     </parent>
11     <artifactId>web</artifactId>
12     <packaging>war</packaging>
13     <dependencies>
14         <dependency>
15             <groupId>junit</groupId>
16             <artifactId>junit</artifactId>
17             <version>3.8.1</version>
18             <scope>test</scope>
19         </dependency>
20         <dependency>
21             <groupId>ssm</groupId>
22             <artifactId>service</artifactId>
23             <version>1</version>
24         </dependency>
25     </dependencies>
26     <build>
27         <finalName>web</finalName>
28         <plugins>
29             <plugin>
30                 <groupId>org.apache.tomcat.maven</groupId>
31                 <artifactId>tomcat7-maven-plugin</artifactId>
32                 <version>2.2</version>
33             </plugin>
34         </plugins>
35     </build>
36 </project>
web/pom.xml

2.给service子项目添加dao子项目的依赖

打开service项目的pom.xml

给<dependencies>下添加

<dependency>
<groupId>ssm</groupId>
<artifactId>dao</artifactId>
<version>1</version>
</dependency>

完整service/pom.xml如下:

 1 <?xml version="1.0"?>
 2 <project
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <groupId>ssm</groupId>
 8         <artifactId>parent</artifactId>
 9         <version>1</version>
10     </parent>
11     <artifactId>service</artifactId>
12     <name>service</name>
13     <url>http://maven.apache.org</url>
14     <properties>
15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16     </properties>
17     <dependencies>
18         <dependency>
19             <groupId>junit</groupId>
20             <artifactId>junit</artifactId>
21             <version>3.8.1</version>
22             <scope>test</scope>
23         </dependency>
24         <dependency>
25             <groupId>ssm</groupId>
26             <artifactId>dao</artifactId>
27             <version>1</version>
28         </dependency>
29     </dependencies>
30 </project>
service/pom.xml

3.给dao子项目添加model子项目的依赖

打开dao项目的pom.xml

给<dependencies>下添加

<dependency>
<groupId>ssm</groupId>
<artifactId>model</artifactId>
<version>1</version>
</dependency>

完整dao/pom.xml如下:

 1 <?xml version="1.0"?>
 2 <project
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
 4     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <groupId>ssm</groupId>
 8         <artifactId>parent</artifactId>
 9         <version>1</version>
10     </parent>
11     <artifactId>dao</artifactId>
12     <name>dao</name>
13     <url>http://maven.apache.org</url>
14     <properties>
15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16     </properties>
17     <dependencies>
18         <dependency>
19             <groupId>junit</groupId>
20             <artifactId>junit</artifactId>
21             <version>3.8.1</version>
22             <scope>test</scope>
23         </dependency>
24         <dependency>
25             <groupId>ssm</groupId>
26             <artifactId>model</artifactId>
27             <version>1</version>
28         </dependency>
29     </dependencies>
30 </project>
dao/pom.xml

整个项目依赖关系添加完毕:web依赖service,service依赖dao,dao依赖model,parent是父项目

六、添加代码

1.model子项目创建com.gwx.model包,将上面第四节自动生成model目录下的代码复制到com.gwx.model包下;

2.dao子项目src/main/java下创建com.gwx.dao和在src/main/resources下创建mapping包,将上面第四节自动生成dao目录下的的代码复制到

com.gwx.dao包下,将mapping目录下自动生成的代码复制到mapping包下;

3.service子项目创建com.gwx.service包和com.gwx.service.impl包,在com.gwx.service包下创建接口IUserService

1 package com.gwx.service;
2 
3 import com.gwx.model.User;
4 
5 public interface IUserService {
6     User getUserById(int id);
7 
8 }
IUserService.java

在com.gwx.service.impl包下创建UserService

 1 package com.gwx.service.impl;
 2 
 3 import javax.annotation.Resource;
 4 
 5 import org.springframework.stereotype.Service;
 6 
 7 import com.gwx.dao.UserMapper;
 8 import com.gwx.model.User;
 9 import com.gwx.service.IUserService;
10 
11 
12 
13 @Service("userService")
14 public class UserService implements IUserService {
15 
16     @Resource
17     private UserMapper userDao;
18 
19     public User getUserById(int userId) {
20         return this.userDao.selectByPrimaryKey(userId);
21     }
22 
23 }
UserService

七、Spring与MyBatis的整合

1.在子项目web项目中的resources目录下创建jdbc.properties

 1 driver=com.mysql.jdbc.Driver
 2 url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
 3 username=root
 4 password=root
 5 #定义初始连接数
 6 initialSize=0
 7 #定义最大连接数
 8 maxActive=20
 9 #定义最大空闲
10 maxIdle=20
11 #定义最小空闲
12 minIdle=1
13 #定义最长等待时间
14 maxWait=60000
jdbc.properties

 2.Log4j的配置(可有可无)

在你需要查看日志的子项目的resources目录下创建log4j.properties

 1 #定义LOG输出级别
 2 log4j.rootLogger=INFO,Console,File
 3 #定义日志输出目的地为控制台
 4 log4j.appender.Console=org.apache.log4j.ConsoleAppender
 5 log4j.appender.Console.Target=System.out
 6 #可以灵活地指定日志输出格式,下面一行是指定具体的格式
 7 log4j.appender.Console.layout = org.apache.log4j.PatternLayout
 8 log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
 9 
10 #文件大小到达指定尺寸的时候产生一个新的文件
11 log4j.appender.File = org.apache.log4j.RollingFileAppender
12 #指定输出目录
13 log4j.appender.File.File = logs/web/log.log
14 #定义文件最大大小
15 log4j.appender.File.MaxFileSize = 10MB
16 #输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
17 log4j.appender.File.Threshold = ALL
18 log4j.appender.File.layout = org.apache.log4j.PatternLayout
19 log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
log4j.properties

3.在子项目dao层的resources目录下创建spring-mybatis.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans  
 7                         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd  
 8                         http://www.springframework.org/schema/context  
 9                         http://www.springframework.org/schema/context/spring-context-4.0.xsd  
10                         http://www.springframework.org/schema/mvc  
11                         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
12 <!--     自动扫描 -->
13     <context:component-scan base-package="com.gwx.dao" />
14     <context:component-scan base-package="com.gwx.service" />
15     <context:component-scan base-package="com.gwx.service.impl" />
16     <context:component-scan base-package="com.gwx.controller" />
17     <!-- 引入配置文件 -->
18     <bean id="propertyConfigurer"
19         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
20         <property name="location" value="classpath:jdbc.properties" />
21     </bean>
22 
23     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
24         destroy-method="close">
25         <property name="driverClassName" value="${driver}" />
26         <property name="url" value="${url}" />
27         <property name="username" value="${username}" />
28         <property name="password" value="${password}" />
29         <!-- 初始化连接大小 -->
30         <property name="initialSize" value="${initialSize}"></property>
31         <!-- 连接池最大数量 -->
32         <property name="maxActive" value="${maxActive}"></property>
33         <!-- 连接池最大空闲 -->
34         <property name="maxIdle" value="${maxIdle}"></property>
35         <!-- 连接池最小空闲 -->
36         <property name="minIdle" value="${minIdle}"></property>
37         <!-- 获取连接最大等待时间 -->
38         <property name="maxWait" value="${maxWait}"></property>
39     </bean>
40     <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
41     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
42         <property name="dataSource" ref="dataSource" />
43         <!-- 自动扫描mapping.xml文件 -->
44         <property name="mapperLocations" value="classpath:mapping/*.xml"></property>
45     </bean>
46     <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
47     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
48         <property name="basePackage" value="com.gwx.dao" />
49         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
50     </bean>
51     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
52     <bean id="transactionManager"
53         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
54         <property name="dataSource" ref="dataSource" />
55     </bean>
56 </beans>
spring-mybatis.xml

4.Junit测试

 先将parent/pom.xml,model/pom.xml,dao/pom.xml,service/pom.xml中的

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- <scope>test</scope> -->
</dependency>

删除;将web/pom.xml

中的修改为

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<!-- <scope>test</scope> -->
</dependency>

再右键web项目->properties->Java Compiler->修改为和你当前jdk版本一致;(我本地的jdk版本为1.8)如图

在web项目中的src/main/java包下创建com/gwx/test包,创建TestMyBatis.java

 1 package com.gwx.test;
 2 import javax.annotation.Resource;
 3 
 4 import org.junit.Test;
 5 import org.junit.runner.RunWith;
 6 import org.springframework.test.context.ContextConfiguration;
 7 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 8 
 9 import com.gwx.model.User;
10 import com.gwx.service.IUserService;
11 
12 @RunWith(SpringJUnit4ClassRunner.class) // 表示继承了SpringJUnit4ClassRunner类
13 @ContextConfiguration(locations = { "classpath:spring-mybatis.xml" })
14 
15 public class TestMyBatis {
16     @Resource
17     private IUserService userService;
18 
19     @Test
20     public void test() {
21         User user = userService.getUserById(1);
22          System.out.println(user.getUserName());
23     }
24 }
TestMyBatis.java

运行。控制台出现'张三'则表示整合成功!

八、SpringMVC整合

在web子项目的resources下创建spring-mvc.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans  
 7                             http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
 8                             http://www.springframework.org/schema/context  
 9                             http://www.springframework.org/schema/context/spring-context-3.1.xsd  
10                             http://www.springframework.org/schema/mvc  
11                             http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
12 
13     <!--避免IE执行AJAX时,返回JSON出现下载文件 -->
14     <bean id="stringHttpMessageConverter"
15     class="org.springframework.http.converter.StringHttpMessageConverter">
16         <property name="supportedMediaTypes">
17             <list>
18                 <value>text/plain;charset=UTF-8</value>
19                 <value>application/json;charset=UTF-8</value>
20             </list>
21         </property>
22     </bean>
23     <!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
24     <!-- Jackson 是Spring 自带的功能 -->
25     <bean id="mappingJackson2HttpMessageConverter"
26         class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
27         <property name="supportedMediaTypes">
28             <list>
29                 <value>application/json;charset=UTF-8</value>
30                 <value>application/xml;charset=UTF-8</value>
31                 <value>text/html;charset=UTF-8</value>
32                 <value>text/plain;charset=UTF-8</value>
33                 <value>text/xml;charset=UTF-8</value>
34                 <value>text/javascript;charset=UTF-8</value>
35             </list>
36         </property>
37     </bean>
38 
39     <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
40     <bean
41         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
42         <property name="messageConverters">
43             <list>
44                 <!-- JSON转换器 -->
45                 <ref bean="mappingJackson2HttpMessageConverter" />
46             </list>
47         </property>
48     </bean>
49 
50     <!-- 对静态资源的访问 -->
51     <!-- <mvc:resources mapping="/js/**" location="/js/" /><mvc:resources mapping="/css/**" 
52         location="/css/" /> -->
53 
54     <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
55     <context:component-scan base-package="com.gwx.controller" />
56 
57     <!-- 添加注解驱动 -->
58     <mvc:annotation-driven enable-matrix-variables="true" >
59      <mvc:message-converters>
60             <ref bean="stringHttpMessageConverter" />
61             <ref bean="mappingJackson2HttpMessageConverter" />
62         </mvc:message-converters>
63      </mvc:annotation-driven>
64     <!-- 允许对静态资源文件的访问 -->
65 
66     <mvc:default-servlet-handler />
67 
68     <!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
69     <bean
70         class="org.springframework.web.servlet.view.InternalResourceViewResolver">
71         <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
72         <property name="prefix" value="/WEB-INF/jsp/" />
73         <property name="suffix" value=".jsp" />
74     </bean>
75 
76     <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
77     <bean id="multipartResolver"
78         class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
79         <!-- 默认编码 -->
80         <property name="defaultEncoding" value="utf-8" />
81         <!-- 文件大小最大值 -->
82         <property name="maxUploadSize" value="10485760000" />
83         <!-- 内存中的最大值 -->
84         <property name="maxInMemorySize" value="40960" />
85     </bean>
86 </beans>
spring-mvc.xml

再配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 5     version="3.0">
 6     <display-name>Archetype Created Web Application</display-name>
 7 
 8     <!-- Spring和mybatis的配置文件 -->
 9     <context-param>
10         <param-name>contextConfigLocation</param-name>
11         <param-value>classpath:spring-mybatis.xml</param-value>
12     </context-param>
13 
14     <!-- 编码过滤器 -->
15     <filter>
16         <filter-name>encodingFilter</filter-name>
17         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
18         <async-supported>true</async-supported>
19         <init-param>
20             <param-name>encoding</param-name>
21             <param-value>UTF-8</param-value>
22         </init-param>
23     </filter>
24     <filter-mapping>
25         <filter-name>encodingFilter</filter-name>
26         <url-pattern>/*</url-pattern>
27     </filter-mapping>
28 
29     <!-- Spring监听器 -->
30     <listener>
31         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
32     </listener>
33 
34     <!-- 防止Spring内存溢出监听器 -->
35     <listener>
36         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
37     </listener>
38 
39     <!-- Spring MVC servlet -->
40     <servlet>
41         <servlet-name>SpringMVC</servlet-name>
42         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
43         <init-param>
44             <param-name>contextConfigLocation</param-name>
45             <param-value>classpath:spring-mvc.xml</param-value>
46         </init-param>
47         <load-on-startup>1</load-on-startup>
48         <async-supported>true</async-supported>
49     </servlet>
50     <servlet-mapping>
51         <servlet-name>SpringMVC</servlet-name>
52         <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
53         <url-pattern>/</url-pattern>
54     </servlet-mapping>
55 
56     <welcome-file-list>
57         <welcome-file>/index.html</welcome-file>
58         <welcome-file>/index.jsp</welcome-file>
59     </welcome-file-list>
60 </web-app>
web.xml

在web子项目的 Java Resources下创建package com.gwx.controller,在com.gwx.controller下面创建UserController.java

 1 package com.gwx.controller;
 2 
 3 import javax.annotation.Resource;
 4 import javax.servlet.http.HttpServletRequest;
 5 
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.ui.Model;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.ResponseBody;
10 
11 import com.gwx.model.User;
12 import com.gwx.service.IUserService;
13 import com.gwx.util.JacksonUtil;
14 
15 @Controller
16 @RequestMapping("/user")
17 public class UserController {
18 
19     @Resource
20     private IUserService userService;
21 
22     @RequestMapping("/showUser")
23     public String toIndex(HttpServletRequest request, Model model) {
24         User user = this.userService.getUserById(1);
25         model.addAttribute("user", user);
26         return "User";
27     }
28     @RequestMapping("/showJson")
29     @ResponseBody
30     public String showJson(int id) {
31         User user = this.userService.getUserById(id);
32         String jSon = JacksonUtil.toJSon(user);
33         return jSon;
34     }
35 }
UserController

在model子项目下创建package  com.gwx.util,在com.gwx.util下面创建JacksonUtil.java和httpModel.java

 1 package com.gwx.util;
 2 
 3 import java.io.Serializable;
 4 
 5 public class HttpModel implements Serializable{
 6 
 7     /**
 8      * 
 9      */
10     private static final long serialVersionUID = -7484615771443870211L;
11 
12     private int code = 0;
13     private Object object;
14     public int getCode() {
15         return code;
16     }
17     public void setCode(int code) {
18         this.code = code;
19     }
20     public Object getObject() {
21         return object;
22     }
23     public void setObject(Object object) {
24         this.object = object;
25     }
26     
27 }
HttpModel.java
  1 package com.gwx.util;
  2 
  3 import java.util.UUID;
  4 
  5 import com.fasterxml.jackson.core.type.TypeReference;
  6 import com.fasterxml.jackson.databind.ObjectMapper;
  7 
  8 
  9 /**
 10  * The class JacksonUtil
 11  *
 12  * json字符与对像转换
 13  * 
 14  * @version: $Revision$ $Date$ $LastChangedBy$
 15  *
 16  */
 17 public final class JacksonUtil {
 18 
 19     public static ObjectMapper objectMapper;
 20 
 21     /**
 22      * 使用泛型方法,把json字符串转换为相应的JavaBean对象。
 23      * (1)转换为普通JavaBean:readValue(json,Student.class)
 24      * (2)转换为List,如List<Student>,将第二个参数传递为Student
 25      * [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List
 26      * 
 27      * @param jsonStr
 28      * @param valueType
 29      * @return
 30      */
 31     public static <T> T readValue(String jsonStr, Class<T> valueType) {
 32         if (objectMapper == null) {
 33             objectMapper = new ObjectMapper();
 34         }
 35 
 36         try {
 37             return objectMapper.readValue(jsonStr, valueType);
 38         } catch (Exception e) {
 39             e.printStackTrace();
 40         }
 41 
 42         return null;
 43     }
 44     
 45     /**
 46      * json数组转List
 47      * @param jsonStr
 48      * @param valueTypeRef
 49      * @return
 50      */
 51     public static <T> T readValue(String jsonStr, TypeReference<T> valueTypeRef){
 52         if (objectMapper == null) {
 53             objectMapper = new ObjectMapper();
 54         }
 55 
 56         try {
 57             return objectMapper.readValue(jsonStr, valueTypeRef);
 58         } catch (Exception e) {
 59             e.printStackTrace();
 60         }
 61 
 62         return null;
 63     }
 64 
 65     /**
 66      * 把JavaBean转换为json字符串
 67      * 
 68      * @param object
 69      * @return
 70      */
 71     public static String toJSon(Object object) {
 72         if (objectMapper == null) {
 73             objectMapper = new ObjectMapper();
 74         }
 75 
 76         try {
 77             return objectMapper.writeValueAsString(object);
 78         } catch (Exception e) {
 79             e.printStackTrace();
 80         }
 81 
 82         return null;
 83     }
 84     
 85     /**
 86      * 生成手机令牌
 87      * @return
 88      */
 89     public final static String generateToken() {
 90         return UUID.randomUUID().toString().replace("-", "");
 91     }
 92     
 93     public static String toHttpJson(int code,Object object)
 94     {
 95         HttpModel model = new HttpModel();
 96         model.setCode(code);
 97         model.setObject(object);
 98         return JacksonUtil.toJSon(model);
 99     }
100 
101 }
JacksonUtil.java

在web项目的src/main/webapp/WEB-INF下创建jsp文件夹,然后创建User.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>姓名</title>
 8 </head>
 9 <body>${user.userName}
10 </body>
11 </html>
User.jsp

此时,springmvc和json都已经整合完成!

开始运行web项目—>右键web->Run as->Run configurations->

左侧选择Maven Build

右侧在Name出填写你的name

在Main页的Base directory出选择web项目,在Goals出输入 tomcat7:run

在JRE页选择你自己的jdk

然后切换到Main页,点击Run。

如果没有报错或者异常,应该就没问题了!

然后springmvc测试

在浏览器上输入网址http://localhost:8080/web/user/showUser?id=1就会返回到User.jsp页面。如图:

json测试:输入网址http://localhost:8080/web/user/showJson?id=1返回结果:

OK!

九、总结

以上就是最近整合的springmvc+mybatis+json的Maven管理一整套项目!是我亲自一步步搭建成功!

如果大家发现有什么问题,欢迎指正批评!

如果想要转载,请加载转载地址【http://www.cnblogs.com/gwx238044/articles/6633252.html】!

posted @ 2017-03-28 16:36  、Berserker  阅读(3793)  评论(0编辑  收藏  举报