Spring+SpringMVC+MyBatis框架整合,数据库使用MySql,实例不涉及到真实业务。
在真实业务中,项目用maven进行管理,分页使用插件,登录等使用对应的拦截器处理,
如果涉及到分布式,可以使用rmi,webservice,http等技术,根据实际情况,这里只是将
Spring,SpringMVC,Mybatis单纯的进行整合。
关于Spring使用注解还是XML形式,官方文档中回答了其问题,告诉我们两者结合使用,
也可单独使用,仁者见仁,智者见智。
关于MyBatis是使用注解还是XML形式,还是根据实际情况,使用注解着实简单,
但是维护sql费劲,使用XML维护sql方便,但是结构相对复杂。一般推荐简单
sql查询等用注解,对于长篇大论的sql还是用XML形式,维护相对轻松。
实例项目环境配置:
操作系统: windows7 64位
web基本环境: eclipse +jdk1.8.0_91 + apache-tomcat-7.0.56
数据库: mysql-5.7.14-winx64
spring版本: Spring+SpringMVC 4.1.8
MyBatis和Spring整合: mybatis-3.2.7.jar + mybatis-spring-1.2.2.jar
Memcached做缓存技术
实例均通过注解完成
一 实例项目结构
项目整体结构:
java文件包结构:
config配置文件结构:
二 项目jar包
关于jar包的简单分析,其中存在技术共用jar包的情况,jar包交互等情况,只写在了某一处:
Spring+springMVC的jar包以及技术aop:
aopalliance-1.0.jar
spring-aop-4.1.8.RELEASE.jar
spring-aspects-4.1.8.RELEASE.jar
spring-beans-4.1.8.RELEASE.jar
spring-context-4.1.8.RELEASE.jar
spring-context-support-4.1.8.RELEASE.jar
spring-core-4.1.8.RELEASE.jar
spring-expression-4.1.8.RELEASE.jar
spring-instrument-4.1.8.RELEASE.jar
spring-instrument-tomcat-4.1.8.RELEASE.jar
spring-jdbc-4.1.8.RELEASE.jar
spring-jms-4.1.8.RELEASE.jar
spring-messaging-4.1.8.RELEASE.jar
spring-orm-4.1.8.RELEASE.jar
spring-oxm-4.1.8.RELEASE.jar
spring-test-4.1.8.RELEASE.jar
spring-tx-4.1.8.RELEASE.jar
spring-web-4.1.8.RELEASE.jar
spring-webmvc-4.1.8.RELEASE.jar
spring-webmvc-portlet-4.1.8.RELEASE.jar
commons-logging.jar ------Spring依赖
数据库连接池:
dbcp:
commons-collections.jar
commons-dbcp.jar
commons-pool.jar
c3p0:
c3p0-0.9.1.2.jar
MyBatis和Spring整合jar:
mybatis-3.2.7.jar
mybatis-spring-1.2.2.jar
MySql数据库驱动jar:
mysql-connector-java-5.1.21.jar
json处理,包括SpringMVC配置或自己通过json-lib包写json处理类:
Jackson:
jackson-all-1.8.1.jar
jackson-annotations-2.3.0.jar
jackson-core-2.3.0.jar
jackson-core-asl-1.9.9.jar
jackson-core-lgpl-1.9.6.jar
jackson-databind-2.3.0.jar
jackson-mapper-asl-1.9.6.jar
json:
json-lib-2.4-jdk15.jar
文件上传:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-beanutils-1.7.0.jar
动态代理:
cglib-nodep-2.1_3.jar
Memcached相关jar:
java_memcached-release_2.6.6.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
log4j-1.2.15.jar
commons-pool.jar(与连接池等其他技术共用)
jstl标准标签库相关必须jar:
jstl.jar
standard.jar
单元测试:
junit-4.4.jar
xml文件读取:
dom4j-1.6.1.jar
servlet:
servlet-api.jar
三 spring的applicationContext.xml配置
文件中配置内容:
1. 扫描配置
2. 注解配置
3. 数据库连接池配置,参考spring数据源配置
4. MyBatis与Spring整合配置
5. 数据库注解事物管理
classpath:developer-jdbc.properties
${jdbc.driver}
${jdbc.url}
${jdbc.username}
${jdbc.password}
四 SpringMVC的spring-mvc.xml配置
配置内容:
1. 注解驱动,使用注解的前提配置
2. Controller层应该扫描的文件位置
3. 视图解析器,视图跳转的位置
4. 使用Jackson处理json的配置
5. 文件上传配置
text/html;charset=UTF-8
application/json;charset=UTF-8
五 MyBatis的mybatis-config.xml配置
文件配置内容:
1. 实体别名
2. Sql映射文件位置
注意: MyBatis可以配置数据源以及事物管理,与Spring整合后数据源和事物配置都交给
spring来完成,其自身只是负责持久层与数据库进行交互。
六 Mysql的驱动用户名等的developer-jdbc.properties配置
properties中将数据库连接基础信息配置在其中,spring配置文件中通过
PropertyPlaceholderConfigurer类来读取文件,并在spring配置文件中使用,
方便修改和维护。
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/lanhuigu_web
jdbc.username=root
jdbc.password=lanhuigu
七 log4j日志文件的log4j.properties配置
#Console Log
log4j.rootLogger=debug,info, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=INFO
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%5p %d{MM-dd HH:mm:ss}(%F-%M:%L): %m%n
八 web.xml的配置
文件配置内容:
1. 激活tomcat处理静态资源文件,也可以在spring-mvc.xml中通过配置。
2. 在web启动时,加载Spring和SpringMVC配置文件
3. SpringMVC的转发器DispatcherServlet配置
4. 日志配置
5. 字符集编码配置
6. session会话超时配置
7. 默认错误页面配置
default
*.otf
default
*.eot
default
*.svg
default
*.ttf
default
*.woff
default
*.woff2
default
*.ico
default
*.jpg
default
*.gif
default
*.png
default
*.js
default
*.css
default
*.pdf
contextConfigLocation
classpath:applicationContext.xml
org.springframework.web.context.ContextLoaderListener
springMVCDispatcherServlet
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
springMVCDispatcherServlet
/
log4jConfigLocation
classpath:log4j.properties
log4jRefreshInterval
600000
org.springframework.web.util.Log4jConfigListener
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
400
/common/error/400.jsp
404
/common/error/404.jsp
java.lang.Throwable
/common/error/500.jsp
500
/common/error/500.jsp
30
index.jsp
九 Spring的业务接口配置
service下的IUserService接口:
package com.lanhuigu.service.user;
import org.springframework.stereotype.Service;
import com.lanhuigu.dao.model.user.User;
@Service
public interface IUserService {
public User queryUserById(int userId);
}
service下的UserServiceImpl业务实现:
package com.lanhuigu.service.user.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.lanhuigu.dao.map.user.UserMapper;
import com.lanhuigu.dao.model.user.User;
import com.lanhuigu.service.user.IUserService;
@Component
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
// @Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public User queryUserById(int userId) {
// 1. MyBatis注解形式使用
User user = userMapper.queryUserById(userId);
// 2. MyBatis XML形式使用
//User user = userMapper.queryUserByIdOld(userId);
return user;
}
}
十 SpringMVC的controller层配置
IndexController.java代码:
package com.lanhuigu.controller.index;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.lanhuigu.dao.model.user.User;
import com.lanhuigu.service.user.IUserService;
@Controller
public class IndexController{
@Autowired
IUserService userService;
@RequestMapping(value="/index")
public String index(HttpServletRequest request) {
// 数据交互测试
User user = userService.queryUserById(1);
if (user == null) {
System.out.println("用户为空");
} else {
System.out.println(user.getUserName());
}
request.setAttribute("user", user);
return "index";
}
}
十一 MyBatis映射文件和User实体配置,数据库表和数据
User.java:
package com.lanhuigu.dao.model.user;
public class User {
private Integer userId;
private String userName;
private String password;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserMapper.java:
package com.lanhuigu.dao.map.user;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.lanhuigu.dao.model.user.User;
public interface UserMapper {
// MyBatis注解形式查询
@Select(" select f_userId userId,f_userName userName,f_password password from t_user_main where f_userId = #{userId} ")
public User queryUserById(@Param("userId") int userId);
// MyBatis XML形式查询(一定要配置对应的UserMapper.XML文件)
public User queryUserByIdOld(@Param("userId") int userId);
}
UserMapper.xml:
数据库表和数据:
表:
CREATE TABLE `t_user_main` (
`f_userId` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`f_userName` varchar(225) DEFAULT NULL COMMENT '用户名',
`f_password` varchar(255) DEFAULT NULL COMMENT '用户密码',
PRIMARY KEY (`f_userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
数据:
insert into t_user_main values(1,'test','123456');
十二 jsp文件下的测试index.jsp代码以及WebContent下common中的错误页面配置
页面路径截图:
index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
My JSP 'index.jsp' starting page
******数据交互测试******
用户名:${user.userName }
密码:${user.password }
common文件下error中的页面:
400.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
Insert title here
400错误页面Test
404.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
Insert title here
404错误页面Test
500.jsp
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
Insert title here
500错误页面
十三 将web项目加入tomcat,启动服务
访问方式: http://ip:端口/项目名称/index
eg:
http://localhost:9000/lanhuigu/index
十四 页面效果
源码下载地址: http://download.csdn.net/detail/yhl_jxy/9694597