Java框架搭建-Maven、Mybatis、Spring MVC整合搭建
1. 下载eclipse
到网站下载 http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/marsr
选择自己所要的版本
2. 新建Maven项目
选择File –> New –> Maven Project
可看到下面界面
点击Next,可看到下面界面,我们选择maven-archetype-webapp
点击Next,可看到。Group Id为包名,Artifact Id为项目名。这里我们输入Group Id=com.cjt, Artifact Id=MyMaven。
最后点击Finish成功创建项目
3. 项目运行前准备工作
新建项目之后,可以看到错误,这是build path与没有引入javaee包引起的。
1)设置build path
右键项目 –> Build Path --> Configure Build Path…
然后选择Libraries
Maven默认是选择一个Library的,这个错误的,我们双击这个来Edit。
下面界面我们选择Alternate JRE或者Workspace default JRE。这里我们选择Alternate JRE。
2)引入javaee包
在pom.xml上引入javaee包
<!-- 导入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency>
4. 项目配置文件设置
1) 设置pom.xml
我们现在设置pom.xml,下载jar包,这个过程可能有点慢
Pom.xml:
xsi:schemaLocation ="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" >
< modelVersion >4.0.0 </ modelVersion >
< groupId >com.cjt </ groupId >
< artifactId >MyMaven </ artifactId >
< packaging >war </ packaging >
< version >0.0.1-SNAPSHOT </ version >
< name >TestMaven01 Maven Webapp </ name >
< url >http://maven.apache.org </ url >
< properties >
<!-- spring版本号 -->
< spring.version >4.0.2.RELEASE </ spring.version >
<!-- mybatis版本号 -->
< mybatis.version >3.2.6 </ mybatis.version >
<!-- log4j日志文件管理包版本 -->
< slf4j.version >1.7.7 </ slf4j.version >
< log4j.version >1.2.17 </ log4j.version >
</ properties >
< dependencies >
< dependency >
< groupId >junit </ groupId >
< artifactId >junit </ artifactId >
< version >3.8.1 </ version >
< scope >test </ scope >
</ dependency >
<!-- 导入java ee jar 包 -->
< dependency >
< groupId >javax </ groupId >
< artifactId >javaee-api </ artifactId >
< version >7.0 </ version >
</ dependency >
<!-- spring核心包 -->
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-core </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-web </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-oxm </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-tx </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-jdbc </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-webmvc </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-aop </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-context-support </ artifactId >
< version >${spring.version} </ version >
</ dependency >
< dependency >
< groupId >org.springframework </ groupId >
< artifactId >spring-test </ artifactId >
< version >${spring.version} </ version >
</ dependency >
<!-- mybatis核心包 -->
< dependency >
< groupId >org.mybatis </ groupId >
< artifactId >mybatis </ artifactId >
< version >${mybatis.version} </ version >
</ dependency >
<!-- mybatis/spring包 -->
< dependency >
< groupId >org.mybatis </ groupId >
< artifactId >mybatis-spring </ artifactId >
< version >1.2.2 </ version >
</ dependency >
<!-- 导入java ee jar 包 -->
< dependency >
< groupId >javax </ groupId >
< artifactId >javaee-api </ artifactId >
< version >7.0 </ version >
</ dependency >
<!-- 导入Mysql数据库链接jar包 -->
< dependency >
< groupId >mysql </ groupId >
< artifactId >mysql-connector-java </ artifactId >
< version >5.1.30 </ version >
</ dependency >
<!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
< dependency >
< groupId >commons-dbcp </ groupId >
< artifactId >commons-dbcp </ artifactId >
< version >1.2.2 </ version >
</ dependency >
<!-- JSTL标签类 -->
< dependency >
< groupId >jstl </ groupId >
< artifactId >jstl </ artifactId >
< version >1.2 </ version >
</ dependency >
<!-- 日志文件管理包 -->
<!-- log start -->
< dependency >
< groupId >log4j </ groupId >
< artifactId >log4j </ artifactId >
< version >${log4j.version} </ version >
</ dependency >
<!-- 格式化对象,方便输出日志 -->
< dependency >
< groupId >com.alibaba </ groupId >
< artifactId >fastjson </ artifactId >
< version >1.1.41 </ version >
</ dependency >
< dependency >
< groupId >org.slf4j </ groupId >
< artifactId >slf4j-api </ artifactId >
< version >${slf4j.version} </ version >
</ dependency >
< dependency >
< groupId >org.slf4j </ groupId >
< artifactId >slf4j-log4j12 </ artifactId >
< version >${slf4j.version} </ version >
</ dependency >
<!-- log end -->
<!-- 映入JSON -->
< dependency >
< groupId >org.codehaus.jackson </ groupId >
< artifactId >jackson-mapper-asl </ artifactId >
< version >1.9.13 </ version >
</ dependency >
<!-- 上传组件包 -->
< dependency >
< groupId >commons-fileupload </ groupId >
< artifactId >commons-fileupload </ artifactId >
< version >1.3.1 </ version >
</ dependency >
< dependency >
< groupId >commons-io </ groupId >
< artifactId >commons-io </ artifactId >
< version >2.4 </ version >
</ dependency >
< dependency >
< groupId >commons-codec </ groupId >
< artifactId >commons-codec </ artifactId >
< version >1.9 </ version >
</ dependency >
</ dependencies >
< build >
< finalName >TestMaven01 </ finalName >
</ build >
</ project >
2) 创建jdbc.properties
url=jdbc:mysql://localhost:3306/test
username=root
password=
#定义初始连接数
initialSize=1
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
3) log4j.properties
#log4j.rootLogger = debug , stdout , D , E
log4j.rootLogger = debug , stdout , D
### output to the console ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
### Output to the log file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### Save exception information to separate file ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/error.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = ERROR
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
4) spring-mvc.xml
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:p ="http://www.springframework.org/schema/p"
xmlns:context ="http://www.springframework.org/schema/context"
xmlns:mvc ="http://www.springframework.org/schema/mvc"
xsi:schemaLocation ="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd" >
<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
< context:component-scan base-package ="com.cjt.controller" />
<!-- 避免IE执行AJAX时,返回JSON出现下载文件 -->
< bean id ="mappingJacksonHttpMessageConverter"
class ="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" >
< property name ="supportedMediaTypes" >
< list >
< value >text/html;charset=UTF-8 </ value >
</ list >
</ property >
</ bean >
<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->
< bean
class ="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
< property name ="messageConverters" >
< list >
< ref bean ="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->
</ list >
</ property >
</ bean >
<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
< bean class ="org.springframework.web.servlet.view.InternalResourceViewResolver" >
<!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个 可用的url地址 -->
< property name ="prefix" value ="/WEB-INF/jsp/" />
< property name ="suffix" value =".jsp" />
</ bean >
<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
< bean id ="multipartResolver"
class ="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<!-- 默认编码 -->
< property name ="defaultEncoding" value ="utf-8" />
<!-- 文件大小最大值 -->
< property name ="maxUploadSize" value ="10485760000" />
<!-- 内存中的最大值 -->
< property name ="maxInMemorySize" value ="40960" />
</ bean >
</ beans >
5) spring-mybatis.xml
< beans xmlns ="http://www.springframework.org/schema/beans"
xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" xmlns:p ="http://www.springframework.org/schema/p"
xmlns:context ="http://www.springframework.org/schema/context"
xmlns:mvc ="http://www.springframework.org/schema/mvc"
xsi:schemaLocation ="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd" >
<!-- 自动扫描 -->
< context:component-scan base-package ="com.cjt.service" />
<!-- 引入配置文件 -->
< bean id ="propertyConfigurer"
class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >
< property name ="location" value ="classpath:jdbc.properties" />
</ bean >
< bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource"
destroy-method ="close" >
< property name ="driverClassName" value ="${driver}" />
< property name ="url" value ="${url}" />
< property name ="username" value ="${username}" />
< property name ="password" value ="${password}" />
<!-- 初始化连接大小 -->
< property name ="initialSize" value ="${initialSize}" ></ property >
<!-- 连接池最大数量 -->
< property name ="maxActive" value ="${maxActive}" ></ property >
<!-- 连接池最大空闲 -->
< property name ="maxIdle" value ="${maxIdle}" ></ property >
<!-- 连接池最小空闲 -->
< property name ="minIdle" value ="${minIdle}" ></ property >
<!-- 获取连接最大等待时间 -->
< property name ="maxWait" value ="${maxWait}" ></ property >
</ bean >
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
< bean id ="sqlSessionFactory" class ="org.mybatis.spring.SqlSessionFactoryBean" >
< property name ="dataSource" ref ="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
< property name ="mapperLocations" value ="classpath:com/cjt/mapping/*.xml" ></ property >
</ bean >
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
< bean class ="org.mybatis.spring.mapper.MapperScannerConfigurer" >
< property name ="basePackage" value ="com.cjt.dao" />
< property name ="sqlSessionFactoryBeanName" value ="sqlSessionFactory" ></ property >
</ bean >
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
< bean id ="transactionManager"
class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >
< property name ="dataSource" ref ="dataSource" />
</ bean >
</ beans >
上面的文件都创建在resources文件夹下
5. 数据库代码自动生成
1)新建表
首先,我们新建表user_t,字段如下:
2)下载包
下载包有:mybatis-3.2.6.jar、mybatis-generator-core-1.3.3.jar、mysql-connector-java-5.1.39-bin.jar
3)运行-自动生成代码
新建一个文件夹,下面包括如下文件
generatorConfig.xml是生成代码的xml文件,内容如下:
<! DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
< generatorConfiguration >
<!-- 数据库驱动 -->
< classPathEntry location ="mysql-connector-java-5.1.39-bin.jar" />
< context id ="DB2Tables" targetRuntime ="MyBatis3" >
< commentGenerator >
< property name ="suppressDate" value ="true" />
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
< property name ="suppressAllComments" value ="true" />
</ commentGenerator >
<!-- 数据库链接URL,用户名、密码 -->
< jdbcConnection driverClass ="com.mysql.jdbc.Driver" connectionURL ="jdbc:mysql://localhost:3306/test" userId ="root" password ="" >
</ jdbcConnection >
< javaTypeResolver >
< property name ="forceBigDecimals" value ="false" />
</ javaTypeResolver >
<!-- 生成模型的包名和位置 -->
< javaModelGenerator targetPackage ="com.cjt.domain" targetProject ="src" >
< property name ="enableSubPackages" value ="true" />
< property name ="trimStrings" value ="true" />
</ javaModelGenerator >
<!-- 生成映射文件的包名和位置 -->
< sqlMapGenerator targetPackage ="com.cjt.mapping" targetProject ="src" >
< property name ="enableSubPackages" value ="true" />
</ sqlMapGenerator >
<!-- 生成DAO的包名和位置 -->
< javaClientGenerator type ="XMLMAPPER" targetPackage ="com.cjt.dao" targetProject ="src" >
< property name ="enableSubPackages" value ="true" />
</ javaClientGenerator >
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
< table tableName ="user_t" domainObjectName ="User" enableCountByExample ="false" enableUpdateByExample ="false" enableDeleteByExample ="false" enableSelectByExample ="false" selectByExampleQueryId ="false" ></ table >
</ context >
</ generatorConfiguration >
然后我们用cmd命令进入到新建的文件夹下面,输入:
java -jar mybatis-generator-core-1.3.3.jar -configfile generatorConfig.xml -overwrite
最后,代码生成了。
备注:代码自动生成这里通过命令行的方式,读者也可以通过eclipse的插件方式生成。
6. 代码开始
新建包,如下: (箭头的都是上面自动生成的代码)
IUserService.java
public interface IUserService { public User getUserById(int id); }
UserServiceImpl.java
public class UserServiceImpl implements IUserService {
@Autowired
private IUserDao userDao;
public UserServiceImpl() {
System.out.println("UserServiceImpl" );
}
public User getUserById( int id) {
return userDao.selectByPrimaryKey(id);
}
}
UserController.java
@RequestMapping("/user" )
public class UserController {
public UserController() {
System.out.println("UserController" );
}
@Resource
private IUserService userService;
@RequestMapping("/showUser" )
public String toIndex(HttpServletRequest request,Model model) {
System.out.println("UserController showUser" );
int id = Integer.parseInt(request.getParameter("id" ));
User user= userService.getUserById(id);
model.addAttribute("user" , user);
return "showUser" ;
}
}
在WEB-INF下新建一个目录jsp,下面新建文件showUser.jsp
showUser.jsp
pageEncoding="utf-8" import="java.util.*,com.cjt.domain.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
${user.userName}
</body>
</html>
最后,附上web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <!-- Spring和mybatis的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>
上面,代码生成完成了。
下载自动生成包:
到Linux公社资源站下载:
------------------------------------------分割线------------------------------------------
具体下载目录在 /2016年资料/8月/11日/Java框架搭建-Maven、Mybatis、Spring MVC整合搭建/
------------------------------------------分割线------------------------------------------