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】!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM