Java框架搭建-Maven、Mybatis、Spring MVC整合搭建

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成功创建项目

扫描二维码关注公众号,回复: 2024950 查看本文章

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:

< 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/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

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=
#定义初始连接数 
initialSize=1
#定义最大连接数 
maxActive=20
#定义最大空闲 
maxIdle=20
#定义最小空闲 
minIdle=1
#定义最长等待时间 
maxWait=60000

3) log4j.properties

### set log levels ###
#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

<? 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: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

<? 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: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.jarmybatis-generator-core-1.3.3.jarmysql-connector-java-5.1.39-bin.jar

3)运行-自动生成代码

新建一个文件夹,下面包括如下文件

generatorConfig.xml是生成代码的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 >   
<!-- 数据库驱动 --> 
    < 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

@Service
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

@Controller
@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

<%@ page language="java" contentType="text/html; charset=utf-8"
    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整合搭建/

------------------------------------------分割线------------------------------------------

猜你喜欢

转载自www.linuxidc.com/Linux/2016-08/134157.htm
今日推荐