一、准备
- JAVA环境JDK1.7,官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
- Tomcat环境Tomcat7,官方下载地址:http://tomcat.apache.org/download-70.cgi
- Maven环境,官方下载地址:http://maven.apache.org/download.cgi
- Eclipse,官方下载地址:http://www.eclipse.org/downloads/
- Eclipse插件springsource-tool-suite
- Eclipse插件mybatis generator
二、JDK安装与环境变量配置
教程:http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html
三、Tomcat安装
四、Maven安装与eclipse配置
教程:http://jingyan.baidu.com/article/295430f136e8e00c7e0050b9.html
五、Eclipse上安装springsource-tool-suite
教程1: http://jingyan.baidu.com/album/1612d5005fd087e20f1eee10.html?picindex=1
教程2: http://jingyan.baidu.com/album/1612d5005fd087e20f1eee10.html?picindex=4
教程1: http://jingyan.baidu.com/album/1612d5005fd087e20f1eee10.html?picindex=1
教程2: http://jingyan.baidu.com/album/1612d5005fd087e20f1eee10.html?picindex=4
springsource-tool-suite所有版本下载地址:
http://spring.io/tools/sts/all
六、创建test数据库,lgb_bigdata_user用户表
test数据库,默认已经创建
创建lgb_bigdata_user数据表
CREATE TABLE `lgb_bigdata_user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(20) DEFAULT '' COMMENT '用户名',
`password` varchar(50) DEFAULT '' COMMENT '用户密码',
`email` varchar(50) DEFAULT '' COMMENT '邮箱地址',
`createtime` datetime DEFAULT NULL COMMENT '注册时间',
`updatetime` datetime DEFAULT NULL COMMENT '修改时间',
`status` tinyint(1) unsigned zerofill DEFAULT '0' COMMENT '状态 0禁用1正常',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
七、mybatis generator eclipse插件的安装
插件下载地址:http://download.youkuaiyun.com/detail/alex_bean/9548260
教程:http://jingyan.baidu.com/album/9faa7231506ed8473c28cbee.html?picindex=1
插件下载地址:http://download.youkuaiyun.com/detail/alex_bean/9548260
教程:http://jingyan.baidu.com/album/9faa7231506ed8473c28cbee.html?picindex=1
mybatisGenrator.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/test" userId="root" password="">
</jdbcConnection>
<javaModelGenerator targetPackage="com.lgbproject.bigdata.user.model" targetProject="springmvctest\src\main\java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.lgbproject.bigdata.user.dao.mapper" targetProject="springmvctest\src\main\java">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.lgbproject.bigdata.user.dao" targetProject="springmvctest\src\main\java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<table tableName="lgb_bigdata_user" domainObjectName="LgbBigdataUserEntity" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
八、eclipse搭建动态WEB项目
- 创建项目
File -> New -> Dynamic Web project 填写项目名称 project name: springmvctest
next -> remove src -> add Folder -> src/main/java、src/main/resource、src/test/java、src/test/resource
next -> 勾选Generate web.xml deployment descriptor -> finish
下图springmvctest项目结构图
- 创建maven配置文件pom.xml
springmvctest -> 右键 -> Configure -> Convert to Maven Project -> finish
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>springmvctest</groupId> <artifactId>springmvctest</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>springmvctest</name> <description>springmvctest</description> <properties> <!-- spring版本号 --> <spring.version>4.3.0.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.6</mybatis.version> <org.aspectj-version>1.8.7</org.aspectj-version> </properties> <dependencies> <!-- spring 核心功能包 spring-aop-4.3.0.RELEASE.jar spring-beans-4.3.0.RELEASE.jar spring-context-4.3.0.RELEASE.jar spring-core-4.3.0.RELEASE.jar spring-expression-4.3.0.RELEASE.jar commons-logging-1.2.jar --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- spring 附加功能包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</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-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <!-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- Mysql官方驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.30</version> </dependency> <!-- 数据库缓存池 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.1</version> </dependency> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <!-- 表示开发的时候引入,发布的时候不会加载此包 --> <scope>test</scope> </dependency> <!-- slf4j --> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.5.8</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.8</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.8</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <!-- JSON转换 --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- 格式化对象,方便输出日志 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</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> <!-- netty5 alpha2 --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>5.0.0.Alpha2</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.6</version> <configuration> <warSourceDirectory>WebContent</warSourceDirectory> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> </project>
- 数据库连接池配置文件,src/main/resource内创建jdbc.properties
driver=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8 user=root password=123456 idleConnectionTestPeriod=60 maxIdleTime=240 initialPoolSize=100 acquireIncrement=5 maxPoolSize=500 minPoolSize=10
- 日志配置文件,src/main/resource内创建log4j.properties
# DEBUG,INFO,WARN,ERROR,FATAL LOG_LEVEL=INFO #C-console, I-INFO, E-ERROR log4j.rootLogger=${LOG_LEVEL},C,I,E log4j.appender.C=org.apache.log4j.ConsoleAppender log4j.appender.C.Threshold = INFO log4j.appender.C.Encoding=utf-8 log4j.appender.C.layout=org.apache.log4j.PatternLayout log4j.appender.C.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} (%F:%L):%m%n log4j.appender.I=org.apache.log4j.DailyRollingFileAppender log4j.appender.I.File=${catalina.base}/logs/eidserver/info/log_daily #log4j.appender.I.File=c://eidserver/info/log_daily log4j.appender.I.Threshold = INFO log4j.appender.I.Append = true log4j.appender.I.Encoding=utf-8 log4j.appender.I.DatePattern='_'yyyy-MM-dd'.log' log4j.appender.I.layout=org.apache.log4j.PatternLayout log4j.appender.I.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} (%F\:%L)\:%m%n log4j.appender.I.MaxFileSize = 50MB log4j.appender.I.MaxBackupIndex = 7 log4j.appender.E=org.apache.log4j.DailyRollingFileAppender log4j.appender.E.File=${catalina.base}/logs/eidserver/error/log_error #log4j.appender.E.File=c://eidserver/error/log_error log4j.appender.E.Append = TRUE log4j.appender.E.Threshold = ERROR log4j.appender.E.Encoding=utf-8 log4j.appender.E.DatePattern='_'yyyy-MM-dd'.log' log4j.appender.E.layout=org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} (%F\:%L)\:%m%n log4j.appender.E.MaxFileSize = 50MB
- src/main/resource内创建spring.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <aop:aspectj-autoproxy /> <context:component-scan base-package="com.lgbproject.bigdata" /> </beans>
- mybatis配置文件,src/main/resource内创建spring-mybatis.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 引入jdbc配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!--创建jdbc数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" p:driverClass="${driver}" p:jdbcUrl="${jdbcUrl}" p:user="${user}" p:password="${password}" p:idleConnectionTestPeriod="${idleConnectionTestPeriod}" p:maxIdleTime="${maxIdleTime}" p:initialPoolSize="${initialPoolSize}" p:acquireIncrement="${acquireIncrement}" p:maxPoolSize="${maxPoolSize}" p:minPoolSize="${minPoolSize}" p:preferredTestQuery="SELECT 1" p:maxConnectionAge="3000" /> <!-- 创建SqlSessionFactory,同时指定数据源 spring和MyBatis完美整合,不需要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations"> <list> <value>classpath*:com/lgbproject/bigdata/**/dao/mapper/*Mapper.xml</value> </list> </property> </bean> <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="com.lgbproject.bigdata..*.dao" p:sqlSessionFactoryBeanName="sqlSessionFactory" /> <!-- ===================================事务的配置================================== --> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /> <!-- 基于注释的事务,当注释中发现@Transactional时,使用id为“transactionManager”的事务管理器 --> <!-- 如果没有设置transaction-manager的值,则spring以缺省默认的事务管理器来处理事务,默认事务管理器为第一个加载的事务管理器 --> <!-- 优先级:如果配置冲突,注解的比xml的高 --> <tx:annotation-driven transaction-manager="transactionManager"/> <!-- 配置事务特性 ,配置add、delete和update开始的方法,事务传播特性为required --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="update*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="modify*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="edit*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="login*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="regist*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="getAll*" propagation="REQUIRED" read-only="true" /> </tx:attributes> </tx:advice> <!-- 配置哪些类的方法进行事务管理 --> <aop:config> <aop:pointcut id="allManagerMethod" expression="execution (* com.lgbproject.bigdata.*.service.*.*(..))" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod" /> </aop:config> </beans>
- srpringmvc配置文件,spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- 注解驱动 --> <mvc:annotation-driven/> <!-- 对静态资源文件的访问 --> <mvc:resources mapping="/images/**" location="/resources/images/" cache-period="31556926" /> <mvc:resources mapping="/js/**" location="/resources/js/" cache-period="31556926" /> <mvc:resources mapping="/css/**" location="/resources/css/" cache-period="31556926" /> <!-- 定义跳转的文件的前后缀 ,视图模式配置--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/views/" p:suffix=".jsp" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> --> <!-- 注解探测器 --> <context:component-scan base-package="com.lgbproject.bigdata" /> <!-- 先走默认的web.xml配置的servlet,没有的话才找对应controller --> <mvc:default-servlet-handler/> <!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --> <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>
8. 配置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" id="WebApp_ID" version="3.0">
<display-name>springmvctest</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring.xml,classpath:spring-mybatis.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<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>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/resources/views/404.jsp</location>
</error-page>
</web-app>
到此,springmvc + mybatis + maven 项目配置完毕,下面创建controller和service层,添加一条数据到lgb_bigdata_user表测试项目。
九,测试
- 创建com.lgbproject.bigdata.user.controller包,UserController.java文件
package com.lgbproject.bigdata.user.controller; import java.util.Date; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import com.lgbproject.bigdata.user.model.LgbBigdataUserEntity; import com.lgbproject.bigdata.user.service.UserService; @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("user.html") public String user(ModelMap model, HttpServletRequest request) { LgbBigdataUserEntity record = new LgbBigdataUserEntity("xiaoming", "123456", "xiaoming@163.com", new Date(), new Date(), true); int result = userService.insertData(record); String id = ""; model.addAttribute("id", String.valueOf(result)); return "user/user"; } }
- 创建WebContent/WEB-INF/views/user/目录,user.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!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>User</title> </head> <body> <h1>Hello User Page</h1> <br> ${id } </body> </html>
- 创建com.lgbproject.bigdata.user.service包,UserService.java文件
package com.lgbproject.bigdata.user.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.lgbproject.bigdata.user.dao.LgbBigdataUserEntityMapper; import com.lgbproject.bigdata.user.model.LgbBigdataUserEntity; @Service public class UserService { @Autowired private LgbBigdataUserEntityMapper lgbBigdataUserEntityMapper; public int insertData(LgbBigdataUserEntity record) { return lgbBigdataUserEntityMapper.insert(record); } }
- 浏览器访问地址 http://localhost:8080/springmvctest/user.html,显示下图表示成功