maven+springMVC+mybatis+junit详细搭建过程
首先我們先要弄清搭建項目的一般流程,需要注意哪些方面,想要什么樣的效果,自己的功能有哪些?
(假設效果:項目目錄結構清晰,能夠查詢到本地數據庫中的內容。。)
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(包依賴)
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | <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>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>????<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> |
3. 配置數據庫連接屬性
conf/ jdbc.properties(jdbc配置文件)
?| 1234 | jdbc_driverClassName=com.mysql.jdbc.Driverjdbc_url=jdbc:mysql://localhost:3306/mydays?useUnicode=true&characterEncoding=utf-8jdbc_username=rootjdbc_password=root |
4. ?配置spring配置文件
? ? conf/spring.xml(spring配置文件的掃描)
| 123456789101112131415 | <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"?xmlns:context="http://www.springframework.org/schema/context"?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?xsi:schemaLocation="http://www.springframework.org/schema/beans??????http://www.springframework.org/schema/beans/spring-beans-3.0.xsd??????http://www.springframework.org/schema/context??????http://www.springframework.org/schema/context/spring-context.xsd">????<!-- 引入jdbc配置文件 -->????<context:property-placeholder location="classpath:conf/jdbc.properties"/>?????????<!-- 掃描文件(自動將servicec層注入) -->????<context:component-scan base-package="cn.springmvc.service"/></beans> |
| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | <?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:aop="http://www.springframework.org/schema/aop"??xmlns:tx="http://www.springframework.org/schema/tx"??xmlns:util="http://www.springframework.org/schema/util"??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/tx????http://www.springframework.org/schema/tx/spring-tx-3.2.xsd????http://www.springframework.org/schema/aop????http://www.springframework.org/schema/aop/spring-aop-3.2.xsd????http://www.springframework.org/schema/util ????http://www.springframework.org/schema/util/spring-util-3.2.xsd">????<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init"????destroy-method="close" >????<property name="driverClassName">??????<value>${jdbc_driverClassName}</value>????</property>????<property name="url">??????<value>${jdbc_url}</value>????</property>????<property name="username">??????<value>${jdbc_username}</value>????</property>????<property name="password">??????<value>${jdbc_password}</value>????</property>????<!-- 連接池最大使用連接數 -->????<property name="maxActive">??????<value>20</value>????</property>????<!-- 初始化連接大小 -->????<property name="initialSize">??????<value>1</value>????</property>????<!-- 獲取連接最大等待時間 -->????<property name="maxWait">??????<value>60000</value>????</property>????<!-- 連接池最大空閑 -->????<property name="maxIdle">??????<value>20</value>????</property>????<!-- 連接池最小空閑 -->????<property name="minIdle">??????<value>3</value>????</property>????<!-- 自動清除無用連接 -->????<property name="removeAbandoned">??????<value>true</value>????</property>????<!-- 清除無用連接的等待時間 -->????<property name="removeAbandonedTimeout">??????<value>180</value>????</property>????<!-- 連接屬性 -->????<property name="connectionProperties">??????<value>clientEncoding=UTF-8</value>????</property>??</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> |
5. ?java代碼編寫(model,dao,service層代碼)
? ?cn.springmvc.model/User.java(用戶基本信息)
| 123456789101112131415161718192021222324252627282930 | 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;????}} |
| 12345678910111213141516 | package cn.springmvc.dao;import cn.springmvc.model.User;public interface UserDAO {????/**?????* 添加新用戶?????* @param user?????* @return?????*/????public int insertUser(User user);??????????} |
cn.springmvc.service/UserService.java(service層接口)
| 123456789 | package cn.springmvc.service;import cn.springmvc.model.User;public interface UserService {????public int insertUser(User user);} |
| 1234567891011121314151617181920212223 | 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;@Servicepublic class UserServiceImpl implements UserService{????@Autowired????private UserDAO userDAO;?????????@Override????public int insertUser(User user) {????????// TODO Auto-generated method stub????????return userDAO.insertUser(user);????}} |
6. ?mybatis配置
? ?conf/mybatis-config.xml(mybatis配置的基本文件)
| 1234567891011121314 | <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>????????<!-- 命名空間 -->????<typeAliases>?????????<typeAlias alias="User" type="cn.springmvc.model.User"/> ????</typeAliases>????<!-- 映射map -->????<mappers>????</mappers></configuration> |
| 1234567891011121314151617 | <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper?PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.springmvc.dao.UserDAO">?????????????????????<insert id="insertUser" parameterType="User" keyProperty="id">?????????????insert into days_user(? ?????????state,?????????nickname) ?????????values ?????????(??????? ?????????#{state},?????????#{nickname})?????????</insert>??????????</mapper> |
7. ?junit測試插入功能
cn.springmvc.test/UserTest.java(用戶測試模塊)
?| 1234567891011121314151617181920212223242526272829303132 | 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));????}} |
即完成插入功能!
回到頂部8. ?springMVC模塊搭建?
? ? web.xml(web功能配置)
?| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"????xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"????id="WebApp_ID" version="2.5">????<display-name>Archetype Created Web Application</display-name>????<!-- 讀取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> |
| 123456789101112131415161718192021222324252627282930 | <?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(日志記錄的配置文件)
?| 1234567891011121314151617181920212223242526 | ### set log levels ####log4j.rootLogger = debug , stdout , D , Elog4j.rootLogger = debug , stdout , D###? output to the console ###log4j.appender.stdout = org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target = System.outlog4j.appender.stdout.layout = org.apache.log4j.PatternLayout#log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%nlog4j.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.DailyRollingFileAppenderlog4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/log.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = DEBUG log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.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.DailyRollingFileAppenderlog4j.appender.D.File = ${springmvc.root}/WEB-INF/logs/error.log log4j.appender.D.Append = truelog4j.appender.D.Threshold = ERROR log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n |
10. ?測試運行
WEB-INF/jsp/index.jsp(測試文件)
| 123456789101112 | <%@ 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> |
| 123456789101112131415 | 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運行如圖:
控制臺打印出日志如圖(啟動成功):
在瀏覽器中輸入:http://localhost:8080/springmvc/index.do 進行測試
效果如圖(返回成功):
回到頂部
整體包下載地址:
http://download.csdn.net/detail/fengerfhf/6916831
來自:http://my.oschina.net/u/1011897/blog/199172
總結
以上是生活随笔為你收集整理的maven+springMVC+mybatis+junit详细搭建过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 20个代码生成框架
- 下一篇: 回乡偶书拼音版图片(回乡偶书拼音版)