maven+springMVC+mybatis+junit詳細搭建過程

jopen 10年前發布 | 818K 次閱讀 Spring MVC Web框架 SpringMVC

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(包依賴)


<project xmlns="http://maven.apache.org/POM/4.0.0 ;
    <modelVersion>4.0.0</modelVersion>
    <groupId>eyas.springmvc</groupId>
    <artifactId>springmvc</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>springmvc Maven Webapp</name>
    <url>http://maven.apache.org</url&gt;
    <properties>
        <!-- spring版本號 -->
        <spring.version>3.2.4.RELEASE</spring.version>
        <!-- mybatis版本號 -->
        <mybatis.version>3.2.4</mybatis.version>
        <!-- log4j日志文件管理包版本 -->
        <slf4j.version>1.6.6</slf4j.version>
        <log4j.version>1.2.9</log4j.version>
    </properties>
    <dependencies>
        <!-- spring核心包 -->
        <!-- springframe start -->
        <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-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!-- springframe end -->

    <!-- 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>
    <!-- mysql驅動包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.29</version>
    </dependency>
    <!-- junit測試包 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <!-- 阿里巴巴數據源包 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.2</version>
    </dependency>

    <!-- json數據 -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>

    <!-- 日志文件管理包 -->
    <!-- log start -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</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 -->
</dependencies>
<build>
    <finalName>springmvc</finalName>
</build>

</project></pre>


3. 配置數據庫連接屬性

conf/ jdbc.properties(jdbc配置文件)

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/mydays?useUnicode=true&amp;characterEncoding=utf-8
jdbc_username=root
jdbc_password=root

4.  配置spring配置文件

    conf/spring.xml(spring配置文件的掃描)


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="

</beans></pre>   conf/spring-mybatis.xml(spring與mybatis連接屬性)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="

</bean>

<!-- mybatis文件配置,掃描所有mapper文件 -->
  <bean id="sqlSessionFactory"
      class="org.mybatis.spring.SqlSessionFactoryBean"
      p:dataSource-ref="dataSource"
      p:configLocation="classpath:conf/mybatis-config.xml"
      p:mapperLocations="classpath:mapper/*.xml"/><!-- configLocation為mybatis屬性 mapperLocations為所有mapper-->

<!-- spring與mybatis整合配置,掃描所有dao --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="cn.springmvc.dao" p:sqlSessionFactoryBeanName="sqlSessionFactory"/>

<!-- 對數據源進行事務管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource"/> </beans></pre>

5.  java代碼編寫(model,dao,service層代碼)

   cn.springmvc.model/User.java(用戶基本信息)


package cn.springmvc.model;

/**

  • 用戶表 */ public class User {

    private int id; private int state; private String nickname; public int getId() {

     return id;
    

    } public void setId(int id) {

     this.id = id;
    

    } public int getState() {

     return state;
    

    } public void setState(int state) {

     this.state = state;
    

    } public String getNickname() {

     return nickname;
    

    } public void setNickname(String nickname) {

     this.nickname = nickname;
    

    } }</pre>



    cn.springmvc.dao/UserDAO.java(dao操作接口)



    package cn.springmvc.dao;

import cn.springmvc.model.User;

public interface UserDAO {

/**
 * 添加新用戶
 * @param user
 * @return
 */
public int insertUser(User user);


}</pre>

cn.springmvc.service/UserService.java(service層接口)


package cn.springmvc.service;

import cn.springmvc.model.User;

public interface UserService {

public int insertUser(User user);

}</pre>



cn.springmvc.service.impl/UserServiceImpl.java(service層接口實現)




package cn.springmvc.service.impl;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;

import cn.springmvc.dao.UserDAO; import cn.springmvc.model.User; import cn.springmvc.service.UserService;

@Service public class UserServiceImpl implements UserService{

@Autowired
private UserDAO userDAO;

@Override
public int insertUser(User user) {
    // TODO Auto-generated method stub
    return userDAO.insertUser(user);
}

}</pre>



6.  mybatis配置


   conf/mybatis-config.xml(mybatis配置的基本文件)


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration 
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
";
<configuration>
        <!-- 命名空間 -->
    <typeAliases>
         <typeAlias alias="User" type="cn.springmvc.model.User"/> 
    </typeAliases>

<!-- 映射map -->
<mappers>
</mappers>

</configuration></pre>



mapper/UserMapper.xml(mybatis的實現)



<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
";
<mapper namespace="cn.springmvc.dao.UserDAO">

     <insert id="insertUser" parameterType="User" keyProperty="id">
         insert into days_user(  
     state,
     nickname) 
     values 
     (        
     #{state},
     #{nickname})
     </insert>

</mapper></pre>



這樣就完成了基本插入用戶的功能!


7.  junit測試插入功能


cn.springmvc.test/UserTest.java(用戶測試模塊)

package cn.springmvc.test;

import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.springmvc.model.User; import cn.springmvc.service.UserService;

public class UserTest {

private UserService userService;

@Before
public void before(){                                                                    
    @SuppressWarnings("resource")
    ApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:conf/spring.xml"
            ,"classpath:conf/spring-mybatis.xml"});
    userService = (UserService) context.getBean("userServiceImpl");
}

@Test
public void addUser(){
    User user = new User();
    user.setNickname("你好");
    user.setState(2);
    System.out.println(userService.insertUser(user));
}

}</pre>



測試結果如圖:


maven+springMVC+mybatis+junit詳細搭建過程

即完成插入功能!

8.  springMVC模塊搭建 

    web.xml(web功能配置)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="

<!-- 讀取spring配置文件 -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:conf/spring.xml;
        classpath:conf/spring-mybatis.xml
    </param-value>
</context-param>
<!-- 設計路徑變量值 -->
<context-param>
    <param-name>webAppRootKey</param-name>
    <param-value>springmvc.root</param-value>
</context-param>


<!-- Spring字符集過濾器 -->
<filter>
    <filter-name>SpringEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>SpringEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 日志記錄 -->
<context-param>
    <!-- 日志配置文件路徑 -->
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:conf/log4j.properties</param-value>
</context-param>
<context-param>
    <!-- 日志頁面的刷新間隔 -->
    <param-name>log4jRefreshInterval</param-name>
    <param-value>6000</param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- springMVC核心配置 -->
<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:conf/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- 錯誤跳轉頁面 -->
<error-page>
    <!-- 路徑不正確 -->
    <error-code>404</error-code>
    <location>/WEB-INF/errorpage/404.jsp</location>
</error-page>
<error-page>
    <!-- 沒有訪問權限,訪問被禁止 -->
    <error-code>405</error-code>
    <location>/WEB-INF/errorpage/405.jsp</location>
</error-page>
<error-page>
    <!-- 內部錯誤 -->
    <error-code>500</error-code>
    <location>/WEB-INF/errorpage/500.jsp</location>
</error-page>

</web-app></pre>



conf/spring-mvc.xml(mvc配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  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.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

    <!-- 掃描controller(controller層注入) -->
   <context:component-scan base-package="cn.springmvc.controller"/>

   <!-- 避免IE在ajax請求時,返回json出現下載 -->
   <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">     
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

   <!-- 對模型視圖添加前后綴 -->
     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
      p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/>
</beans>



9.  log4j日志記錄搭建


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



10.  測試運行

WEB-INF/jsp/index.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>Insert title here</title>
</head>
<body>
<h1>歡迎你!!!</h1>
</body>
</html>



cn.springmvc.controller/UserComtroller.java(controller層控制)
package cn.springmvc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class UserController {

    @RequestMapping("index")
    public String index(){
        return "index";
    }

}




將該項目部署到本地tomcat6中

右擊該項目選擇Run as,選擇Run on Server

選擇自己建立的tomcat6運行如圖:

maven+springMVC+mybatis+junit詳細搭建過程

控制臺打印出日志如圖(啟動成功):

maven+springMVC+mybatis+junit詳細搭建過程

在瀏覽器中輸入:http://localhost:8080/springmvc/index.do 進行測試

效果如圖(返回成功):

maven+springMVC+mybatis+junit詳細搭建過程

整體包下載地址:

http://download.csdn.net/detail/fengerfhf/6916831

來自:http://my.oschina.net/u/1011897/blog/199172

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!