http://www.open-open.com/lib/view/open1392252233301.html
springMVC+mybatis框架搭建
首先我们先要弄清搭建项目的一般流程,需要注意哪些方面,想要什么样的效果,自己的功能有哪些?
(假设效果:项目目录结构清晰,能够查询到本地数据库中的内容。。)
1. 工程目录结构整理清楚
在src/main/java文件夹中,新建包cn.springmvc.model(存放javabean),
cn.springmvc.dao(存放spring与mybatis连接接口),
cn.springmvc.service(service接口),
cn.springmvc.service.impl(service接口的实现),
cn.springmvc.controller(存放控制层controller)
在src/main/resource文件夹中,新建包conf(存放配置文件),
mapper(mybatis的mapper文件)
在src/test/java文件夹中,新建包cn.springmvc.test(存放测试文件)
在WEB-INF文件夹下新建jsp文件夹(存放jsp文件)
这样项目结构基本完成了
2. 引入依赖包
打开maven的pom文件,对本次开发所需使用的架包依次导入(maven项目管理的优势)
查找依赖结构有个不错的网站,http://search.maven.org/ 只要输入包名即可查找引来关系
pom.xml(包依赖)
001 | < project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
002 | xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > |
003 | < modelVersion >4.0.0</ modelVersion > |
004 | < groupId >eyas.springmvc</ groupId > |
005 | < artifactId >springmvc</ artifactId > |
006 | < packaging >war</ packaging > |
007 | < version >0.0.1-SNAPSHOT</ version > |
008 | < name >springmvc Maven Webapp</ name > |
009 | < url >http://maven.apache.org</ url > |
012 | < spring.version >3.2.4.RELEASE</ spring.version > |
014 | < mybatis.version >3.2.4</ mybatis.version > |
016 | < slf4j.version >1.6.6</ slf4j.version > |
017 | < log4j.version >1.2.9</ log4j.version > |
023 | < groupId >org.springframework</ groupId > |
024 | < artifactId >spring-core</ artifactId > |
025 | < version >${spring.version}</ version > |
029 | < groupId >org.springframework</ groupId > |
030 | < artifactId >spring-web</ artifactId > |
031 | < version >${spring.version}</ version > |
035 | < groupId >org.springframework</ groupId > |
036 | < artifactId >spring-oxm</ artifactId > |
037 | < version >${spring.version}</ version > |
041 | < groupId >org.springframework</ groupId > |
042 | < artifactId >spring-tx</ artifactId > |
043 | < version >${spring.version}</ version > |
047 | < groupId >org.springframework</ groupId > |
048 | < artifactId >spring-jdbc</ artifactId > |
049 | < version >${spring.version}</ version > |
053 | < groupId >org.springframework</ groupId > |
054 | < artifactId >spring-webmvc</ artifactId > |
055 | < version >${spring.version}</ version > |
059 | < groupId >org.springframework</ groupId > |
060 | < artifactId >spring-aop</ artifactId > |
061 | < version >${spring.version}</ version > |
065 | < groupId >org.springframework</ groupId > |
066 | < artifactId >spring-context-support</ artifactId > |
067 | < version >${spring.version}</ version > |
071 | < groupId >org.springframework</ groupId > |
072 | < artifactId >spring-aop</ artifactId > |
073 | < version >${spring.version}</ version > |
077 | < groupId >org.springframework</ groupId > |
078 | < artifactId >spring-test</ artifactId > |
079 | < version >${spring.version}</ version > |
085 | < groupId >org.mybatis</ groupId > |
086 | < artifactId >mybatis</ artifactId > |
087 | < version >${mybatis.version}</ version > |
091 | < groupId >org.mybatis</ groupId > |
092 | < artifactId >mybatis-spring</ artifactId > |
093 | < version >1.2.2</ version > |
097 | < groupId >mysql</ groupId > |
098 | < artifactId >mysql-connector-java</ artifactId > |
099 | < version >5.1.29</ version > |
103 | < groupId >junit</ groupId > |
104 | < artifactId >junit</ artifactId > |
105 | < version >4.11</ version > |
110 | < groupId >com.alibaba</ groupId > |
111 | < artifactId >druid</ artifactId > |
112 | < version >1.0.2</ version > |
117 | < groupId >org.codehaus.jackson</ groupId > |
118 | < artifactId >jackson-mapper-asl</ artifactId > |
119 | < version >1.9.13</ version > |
125 | < groupId >log4j</ groupId > |
126 | < artifactId >log4j</ artifactId > |
127 | < version >${log4j.version}</ version > |
130 | < groupId >org.slf4j</ groupId > |
131 | < artifactId >slf4j-api</ artifactId > |
132 | < version >${slf4j.version}</ version > |
135 | < groupId >org.slf4j</ groupId > |
136 | < artifactId >slf4j-log4j12</ artifactId > |
137 | < version >${slf4j.version}</ version > |
142 | < finalName >springmvc</ finalName > |
3. 配置数据库连接属性
conf/ jdbc.properties(jdbc配置文件)
1 | jdbc_driverClassName=com.mysql.jdbc.Driver |
4. 配置spring配置文件
conf/spring.xml(spring配置文件的扫描)
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < beans xmlns = "http://www.springframework.org/schema/beans" |
03 | xmlns:context = "http://www.springframework.org/schema/context" |
04 | xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
05 | xsi:schemaLocation="http://www.springframework.org/schema/beans |
06 | http://www.springframework.org/schema/beans/spring-beans-3.0.xsd |
07 | http://www.springframework.org/schema/context |
08 | http://www.springframework.org/schema/context/spring-context.xsd"> |
11 | < context:property-placeholder location = "classpath:conf/jdbc.properties" /> |
14 | < context:component-scan base-package = "cn.springmvc.service" /> |
conf/spring-mybatis.xml(spring与mybatis连接属性)
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < beans xmlns = "http://www.springframework.org/schema/beans" |
03 | xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
04 | xmlns:p = "http://www.springframework.org/schema/p" |
05 | xmlns:context = "http://www.springframework.org/schema/context" |
06 | xmlns:aop = "http://www.springframework.org/schema/aop" |
07 | xmlns:tx = "http://www.springframework.org/schema/tx" |
08 | xmlns:util = "http://www.springframework.org/schema/util" |
09 | xsi:schemaLocation="http://www.springframework.org/schema/beans |
10 | http://www.springframework.org/schema/beans/spring-beans-3.2.xsd |
11 | http://www.springframework.org/schema/context |
12 | http://www.springframework.org/schema/context/spring-context-3.2.xsd |
13 | http://www.springframework.org/schema/tx |
14 | http://www.springframework.org/schema/tx/spring-tx-3.2.xsd |
15 | http://www.springframework.org/schema/aop |
16 | http://www.springframework.org/schema/aop/spring-aop-3.2.xsd |
17 | http://www.springframework.org/schema/util |
18 | http://www.springframework.org/schema/util/spring-util-3.2.xsd"> |
20 | < bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" init-method = "init" |
21 | destroy-method = "close" > |
22 | < property name = "driverClassName" > |
23 | < value >${jdbc_driverClassName}</ value > |
26 | < value >${jdbc_url}</ value > |
28 | < property name = "username" > |
29 | < value >${jdbc_username}</ value > |
31 | < property name = "password" > |
32 | < value >${jdbc_password}</ value > |
35 | < property name = "maxActive" > |
39 | < property name = "initialSize" > |
43 | < property name = "maxWait" > |
47 | < property name = "maxIdle" > |
51 | < property name = "minIdle" > |
55 | < property name = "removeAbandoned" > |
59 | < property name = "removeAbandonedTimeout" > |
63 | < property name = "connectionProperties" > |
64 | < value >clientEncoding=UTF-8</ value > |
69 | < bean id = "sqlSessionFactory" |
70 | class = "org.mybatis.spring.SqlSessionFactoryBean" |
71 | p:dataSource-ref = "dataSource" |
72 | p:configLocation = "classpath:conf/mybatis-config.xml" |
73 | p:mapperLocations = "classpath:mapper/*.xml" /> |
76 | < bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" |
77 | p:basePackage = "cn.springmvc.dao" |
78 | p:sqlSessionFactoryBeanName = "sqlSessionFactory" /> |
81 | < bean id = "transactionManager" |
82 | class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" |
83 | p:dataSource-ref = "dataSource" /> |
5. java代码编写(model,dao,service层代码)
cn.springmvc.model/User.java(用户基本信息)
01 | package cn.springmvc.model; |
11 | private String nickname; |
15 | public void setId( int id) { |
18 | public int getState() { |
21 | public void setState( int state) { |
24 | public String getNickname() { |
27 | public void setNickname(String nickname) { |
28 | this .nickname = nickname; |
cn.springmvc.dao/UserDAO.java(dao操作接口)
01 | package cn.springmvc.dao; |
03 | import cn.springmvc.model.User; |
06 | public interface UserDAO { |
13 | public int insertUser(User user); |
cn.springmvc.service/UserService.java(service层接口)
1 | package cn.springmvc.service; |
3 | import cn.springmvc.model.User; |
6 | public interface UserService { |
8 | public int insertUser(User user); |
cn.springmvc.service.impl/UserServiceImpl.java(service层接口实现)
01 | package cn.springmvc.service.impl; |
03 | import org.springframework.beans.factory.annotation.Autowired; |
04 | import org.springframework.stereotype.Service; |
06 | import cn.springmvc.dao.UserDAO; |
07 | import cn.springmvc.model.User; |
08 | import cn.springmvc.service.UserService; |
12 | public class UserServiceImpl implements UserService{ |
15 | private UserDAO userDAO; |
18 | public int insertUser(User user) { |
20 | return userDAO.insertUser(user); |
6. mybatis配置
conf/mybatis-config.xml(mybatis配置的基本文件)
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | <!DOCTYPE configuration |
03 | PUBLIC "-//mybatis.org//DTD Config 3.0//EN" |
04 | "http://mybatis.org/dtd/mybatis-3-config.dtd"> |
08 | < typeAlias alias = "User" type = "cn.springmvc.model.User" /> |
mapper/UserMapper.xml(mybatis的实现)
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
03 | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" |
04 | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
05 | < mapper namespace = "cn.springmvc.dao.UserDAO" > |
07 | < insert id = "insertUser" parameterType = "User" keyProperty = "id" > |
08 | insert into days_user( |
这样就完成了基本插入用户的功能!
7. junit测试插入功能
cn.springmvc.test/UserTest.java(用户测试模块)
01 | package cn.springmvc.test; |
03 | import org.junit.Before; |
05 | import org.springframework.context.ApplicationContext; |
06 | import org.springframework.context.support.ClassPathXmlApplicationContext; |
08 | import cn.springmvc.model.User; |
09 | import cn.springmvc.service.UserService; |
13 | public class UserTest { |
15 | private UserService userService; |
19 | @SuppressWarnings ( "resource" ) |
20 | ApplicationContext context = new ClassPathXmlApplicationContext( new String[]{ "classpath:conf/spring.xml" |
21 | , "classpath:conf/spring-mybatis.xml" }); |
22 | userService = (UserService) context.getBean( "userServiceImpl" ); |
26 | public void addUser(){ |
27 | User user = new User(); |
28 | user.setNickname( "你好" ); |
30 | System.out.println(userService.insertUser(user)); |
测试结果如图:
即完成插入功能!
8. springMVC模块搭建
web.xml(web功能配置)
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
03 | xmlns = "http://java.sun.com/xml/ns/javaee" xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" |
04 | xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" |
05 | id = "WebApp_ID" version = "2.5" > |
06 | < display-name >Archetype Created Web Application</ display-name > |
10 | < param-name >contextConfigLocation</ param-name > |
11 | < param-value >classpath:conf/spring.xml; |
12 | classpath:conf/spring-mybatis.xml |
17 | < param-name >webAppRootKey</ param-name > |
18 | < param-value >springmvc.root</ param-value > |
24 | < filter-name >SpringEncodingFilter</ filter-name > |
25 | < filter-class >org.springframework.web.filter.CharacterEncodingFilter</ filter-class > |
27 | < param-name >encoding</ param-name > |
28 | < param-value >UTF-8</ param-value > |
31 | < param-name >forceEncoding</ param-name > |
32 | < param-value >true</ param-value > |
36 | < filter-name >SpringEncodingFilter</ filter-name > |
37 | < url-pattern >/*</ url-pattern > |
43 | < param-name >log4jConfigLocation</ param-name > |
44 | < param-value >classpath:conf/log4j.properties</ param-value > |
48 | < param-name >log4jRefreshInterval</ param-name > |
49 | < param-value >6000</ param-value > |
52 | < listener-class >org.springframework.web.util.Log4jConfigListener</ listener-class > |
56 | < listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class > |
61 | < servlet-name >spring</ servlet-name > |
62 | < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > |
64 | < param-name >contextConfigLocation</ param-name > |
65 | < param-value >classpath:conf/spring-mvc.xml</ param-value > |
67 | < load-on-startup >2</ load-on-startup > |
70 | < servlet-name >spring</ servlet-name > |
71 | < url-pattern >*.do</ url-pattern > |
75 | < welcome-file >index.jsp</ welcome-file > |
81 | < error-code >404</ error-code > |
82 | < location >/WEB-INF/errorpage/404.jsp</ location > |
86 | < error-code >405</ error-code > |
87 | < location >/WEB-INF/errorpage/405.jsp</ location > |
91 | < error-code >500</ error-code > |
92 | < location >/WEB-INF/errorpage/500.jsp</ location > |
conf/spring-mvc.xml(mvc配置文件)
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < beans xmlns = "http://www.springframework.org/schema/beans" |
03 | xmlns:p = "http://www.springframework.org/schema/p" |
04 | xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" |
05 | xmlns:context = "http://www.springframework.org/schema/context" |
06 | xmlns:mvc = "http://www.springframework.org/schema/mvc" |
08 | http://www.springframework.org/schema/beans |
09 | http://www.springframework.org/schema/beans/spring-beans-3.2.xsd |
10 | http://www.springframework.org/schema/context |
11 | http://www.springframework.org/schema/context/spring-context-3.2.xsd |
12 | http://www.springframework.org/schema/mvc |
13 | http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> |
16 | < context:component-scan base-package = "cn.springmvc.controller" /> |
19 | < bean id = "jacksonMessageConverter" class = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" > |
20 | < property name = "supportedMediaTypes" > |
22 | < value >text/html;charset=UTF-8</ value > |
28 | < bean id = "viewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver" |
29 | p:prefix = "/WEB-INF/jsp/" p:suffix = ".jsp" /> |
9. log4j日志记录搭建
conf/log4j.properties(日志记录的配置文件)
02 | #log4j.rootLogger = debug , stdout , D , E |
03 | log4j.rootLogger = debug , stdout , D |
05 | ### output to the console ### |
06 | log4j.appender.stdout = org.apache.log4j.ConsoleAppender |
07 | log4j.appender.stdout.Target = System.out |
08 | log4j.appender.stdout.layout = org.apache.log4j.PatternLayout |
09 | #log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n |
10 | log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n |
12 | ### Output to the log file ### |
13 | log4j.appender.D = org.apache.log4j.DailyRollingFileAppender |
14 | log4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/log.log |
15 | log4j.appender.D.Append = true |
16 | log4j.appender.D.Threshold = DEBUG |
17 | log4j.appender.D.layout = org.apache.log4j.PatternLayout |
18 | log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n |
20 | ### Save exception information to separate file ### |
21 | log4j.appender.D = org.apache.log4j.DailyRollingFileAppender |
22 | log4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/error.log |
23 | log4j.appender.D.Append = true |
24 | log4j.appender.D.Threshold = ERROR |
25 | log4j.appender.D.layout = org.apache.log4j.PatternLayout |
26 | log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n |
10. 测试运行
WEB-INF/jsp/index.jsp(测试文件)
01 | <%@ page language= "java" contentType= "text/html; charset=UTF-8" |
02 | pageEncoding= "UTF-8" %> |
03 | <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > |
06 | <meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" > |
07 | <title>Insert title here</title> |
cn.springmvc.controller/UserComtroller.java(controller层控制)
01 | package cn.springmvc.controller; |
03 | import org.springframework.stereotype.Controller; |
04 | import org.springframework.web.bind.annotation.RequestMapping; |
08 | public class UserController { |
10 | @RequestMapping ( "index" ) |
11 | public String index(){ |
将该项目部署到本地tomcat6中
右击该项目选择Run as,选择Run on Server
选择自己建立的tomcat6运行如图:
控制台打印出日志如图(启动成功):
在浏览器中输入:http://localhost:8080/springmvc/index.do 进行测试
效果如图(返回成功):