1. 程式人生 > >Spring-SpringMVC-Mybatis整合的步驟

Spring-SpringMVC-Mybatis整合的步驟

read oot exceptio img gda gif force system 緩存

1.導入jar包

  1.1 spring面向切面jar包

    com.springsource.net.sf.cglib-2.2.0.jar
    com.springsource.org.aopalliance-1.0.0.jar
    com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
  1.2 springJDBCjar包
    c3p0-0.9.2.1.jar
    mchange-commons-java-0.2.3.4.jar

    spring-jdbc-4.2.2.RELEASE.jar

  1.3 mybatis與spring整合jar包


    mybatis-3.2.2.jar
    mybatis-spring-1.2.1.jar

  1.4 mysql數據庫jar包
    mysql-connector-java-5.0.8-bin.jar

  1.5 springAOP及springMVCjar包

    commons-logging-1.1.3.jar
    spring-aop-4.2.2.RELEASE.jar
    spring-beans-4.2.2.RELEASE.jar
    spring-context-4.2.2.RELEASE.jar
    spring-core-4.2.2.RELEASE.jar
    spring-expression-4.2.2.RELEASE.jar
    spring-tx-4.2.2.RELEASE.jar
    spring-web-4.2.2.RELEASE.jar
    spring-webmvc-4.2.2.RELEASE.jar

  1.6 js標簽庫jar包

    jstl.jar
    standard.jar

  1.7 文件上傳jar包

    commons-fileupload-1.3.1.jar

    commons-io-2.2.jar

  1.8 springMVC與ajax交互jar包

    jackson-annotations-2.2.1.jar

    jackson-core-2.2.1.jar

    jackson-databind-2.2.1.jar

2.配置spring的xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2
<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans.xsd 9 http://www.springframework.org/schema/context 10 http://www.springframework.org/schema/context/spring-context.xsd 11 http://www.springframework.org/schema/tx 12 http://www.springframework.org/schema/tx/spring-tx.xsd 13 http://www.springframework.org/schema/aop 14 http://www.springframework.org/schema/aop/spring-aop.xsd"> 15 16 <!-- 包掃描 *業務層 --> 17 <context:component-scan base-package="com.eduask.liusheng.service"/> 18 19 <!-- 引入屬性文件 *數據源屬性及連接池屬性 --> 20 <context:property-placeholder location="classpath:db.properties"/> 21 22 <!-- 配置數據源 --> 23 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 24 <property name="driverClass" value="${jdbc.driver}"></property> 25 <property name="jdbcUrl" value="${jdbc.url}"></property> 26 <property name="user" value="${jdbc.username}"></property> 27 <property name="password" value="${jdbc.password}"></property> 28 </bean> 29 30 <!-- 配置SQLSessionFactory --> 31 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 32 <!-- 註入數據庫連接池 --> 33 <property name="dataSource" ref="dataSource"/> 34 <!-- 掃描實體類包,使用別名 --> 35 <property name="typeAliasesPackage" value="com.eduask.liusheng.bean"/> 36 <!-- 掃描映射文件 --> 37 <property name="mapperLocations" value="classpath:com/eduask/liusheng/mapper/*.xml"/> 38 </bean> 39 40 <!-- 配置掃描Dao接口包,動態實現Dao接口,註入到spring容器中 --> 41 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 42 <!-- 註入sqlSessionFactory --> 43 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> 44 <!-- 給出需要掃描Dao接口包,自動生成對應實體,不用手動實現 --> 45 <property name="basePackage" value="com.eduask.liusheng.dao"/> 46 </bean> 47 48 <!-- 配置事務管理器 --> 49 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 50 <property name="dataSource" ref="dataSource"></property> 51 </bean> 52 53 <!-- 配置事務通知 *如果是註解方式,需要配置事務管理註解驅動--> 54 <tx:advice id="advice" transaction-manager="transactionManager"> 55 <tx:attributes> 56 <tx:method name="insert*" propagation="REQUIRED" isolation="DEFAULT" read-only="false"/> 57 <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" read-only="false"/> 58 <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" read-only="false"/> 59 <tx:method name="select*" read-only="true"/> 60 <tx:method name="*" read-only="true"/> 61 </tx:attributes> 62 </tx:advice> 63 64 <!-- 配置切點 --> 65 <aop:config> 66 <!-- 配置切點 --> 67 <aop:pointcut expression="execution(* com.eduask.liusheng.service.*.*(..))" id="pointcut"/> 68 <!-- 關聯切點與通知 --> 69 <aop:advisor advice-ref="advice" pointcut-ref="pointcut"/> 70 </aop:config> 71 72 </beans>
技術分享
1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/employeemanager
3 jdbc.username=root
4 jdbc.password=root
5 #連接池屬性在這裏配置
屬性文件

3.配置springMVC的xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:context="http://www.springframework.org/schema/context"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xsi:schemaLocation="http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd
 8         http://www.springframework.org/schema/context
 9         http://www.springframework.org/schema/context/spring-context.xsd
10         http://www.springframework.org/schema/mvc
11         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12 
13     <!-- 配置包掃描 *控制器層 -->
14     <context:component-scan base-package="com.eduask.liusheng.controller"/>
15     
16     <!-- 配置視圖解析器 *受保護的網頁放在/WEB-INF下,不能被直接訪問,只能請求轉發到該頁面 -->
17     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
18         <property name="prefix" value="/WEB-INF/view/"></property>
19         <property name="suffix" value=".jsp"></property>
20     </bean>
21 
22   <!--  訪問靜態資源 js jpg html css 等靜態資源 -->
23   <mvc:default-servlet-handler/>
24 
25   <!-- 配置登陸攔截器  -->
26   <mvc:interceptors>
27       <mvc:interceptor>
28           <mvc:mapping path="/**"/>
29           <bean class="com.eduask.liusheng.inerceptor.LoginInterceptor"></bean>
30       </mvc:interceptor>
31   </mvc:interceptors>
32     
33     <!--  配置全局時間轉化類 沒有時間轉化可省略以下 -->
34     <!-- 第一步:  創建自定義日期轉換規則  class:為時間轉化類的全類名 -->   
35     <bean id="dateConvert" class="com.eduask.liusheng.util.DateConvert"/>
36     <!-- 第二步: 創建convertion-Service ,並註入dateConvert-->
37     <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
38         <property name="converters">
39             <set>
40                 <ref bean="dateConvert"/>
41             </set>
42         </property>
43     </bean>
44     <!-- 第三步:註冊處理器映射器/處理器適配器 ,添加conversion-service屬性-->
45     <mvc:annotation-driven conversion-service="conversionService"/>
46     
47    <!-- 配置文件上傳的映射 *id必須為multipartResolver -->
48      <bean id="multipartResolver"
49          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
50           <!-- 配置上傳的大小 -->
51           <property name="maxUploadSize" value="104857600"></property>
52           <!-- 配置緩存 -->
53           <property name="maxInMemorySize" value="4096" />
54           <!-- 配置上傳的編碼 -->
55           <property name="defaultEncoding" value="utf-8"></property>
56     </bean>
57     
58 </beans>
技術分享
 1 import java.text.ParseException;
 2 import java.text.SimpleDateFormat;
 3 import java.util.Date;
 4 
 5 import org.springframework.core.convert.converter.Converter;
 6 
 7 public class DateConvert implements Converter<String, Date> {
 8 
 9     @Override
10     public Date convert(String stringDate){
11         //時間轉化類(時間格式)
12         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
13         try {
14             return simpleDateFormat.parse(stringDate);
15         } catch (ParseException e) {
16             e.printStackTrace();
17         }
18         return null;
19     }
20 
21 }
DateConvert.java 技術分享
 1 import java.io.File;
 2 import java.io.FileOutputStream;
 3 
 4 import javax.servlet.http.HttpServletRequest;
 5 
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RequestParam;
 9 import org.springframework.web.multipart.MultipartFile;
10 import org.springframework.web.multipart.MultipartHttpServletRequest;
11 import org.springframework.web.multipart.commons.CommonsMultipartFile;
12 
13 @Controller
14 public class UploadController {
15     @RequestMapping("/upload1.do")
16     public String upload(HttpServletRequest req) throws Exception{
17         long  startTime=System.currentTimeMillis();
18         MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)req;
19         MultipartFile multiFile=multiRequest.getFile("myfile1");
20         String path=req.getSession().getServletContext().getRealPath("/upload");
21         File file=new File(path+"\\"+multiFile.getOriginalFilename());
22         FileOutputStream fos=new FileOutputStream(file);
23         fos.write(multiFile.getBytes());
24         fos.flush();
25         fos.close();
26         long  endTime=System.currentTimeMillis();
27         System.out.println("upload1運行時間:"+String.valueOf(endTime-startTime)+"ms");
28         return "a";
29     }
30     
31     @RequestMapping("/upload2.do")
32     public String upload1(@RequestParam("myfile2") CommonsMultipartFile file,HttpServletRequest req) throws Exception{
33         long  startTime=System.currentTimeMillis();
34         String path=req.getSession().getServletContext().getRealPath("/upload");
35         File uploadfile=new File(path+"\\"+file.getOriginalFilename());
36         file.transferTo(uploadfile);
37         long  endTime=System.currentTimeMillis();
38         System.out.println("upload2運行時間:"+String.valueOf(endTime-startTime)+"ms");
39         return "a";
40     }
41     
42     @RequestMapping("/upload3.do")
43     public String upload3(HttpServletRequest req) throws Exception{
44         long  startTime=System.currentTimeMillis();
45         MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)req;
46         MultipartFile multiFile=multiRequest.getFile("myfile3");
47         String path=req.getSession().getServletContext().getRealPath("/upload");
48         File file=new File(path+"\\"+multiFile.getOriginalFilename());
49         multiFile.transferTo(file);
50         long  endTime=System.currentTimeMillis();
51         System.out.println("upload3運行時間:"+String.valueOf(endTime-startTime)+"ms");
52         return "a";
53     }
54     
55 }
文件上傳三種方法 技術分享
 1 import java.io.PrintWriter;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.web.bind.annotation.RequestMapping;
 5 import org.springframework.web.bind.annotation.ResponseBody;
 6 
 7 @Controller
 8 public class AjaxController {
 9     
10     @RequestMapping("/fun1.do")
11     public void fun1(PrintWriter out,User user){
12         System.out.println(user);
13         out.print("你好");
14     }
15     
16     @RequestMapping("/fun2.do")
17     @ResponseBody
18     public User fun2(User user){
19         return user;
20     }
21     
22 }
spring與ajax交互,spring的自動封裝 技術分享
 1 import javax.servlet.http.HttpServletRequest;
 2 import javax.servlet.http.HttpServletResponse;
 3 
 4 import org.springframework.web.servlet.HandlerInterceptor;
 5 import org.springframework.web.servlet.ModelAndView;
 6 
 7 
 8 public class LoginInterceptor implements HandlerInterceptor {
 9 
10     /** 
11      * preHandle方法是進行處理器攔截用的,顧名思義,該方法將在Controller處理之前進行調用,
12      * SpringMVC中的Interceptor攔截器是鏈式的,可以同時存在多個Interceptor,
13      * 然後SpringMVC會根據聲明的前後順序一個接一個的執行,
14      * 而且所有的Interceptor中的preHandle方法都會在Controller方法調用之前調用。
15      * SpringMVC的這種Interceptor鏈式結構也是可以進行中斷的,
16      * 這種中斷方式是令preHandle的返回值為false,當preHandle的返回值為false的時候整個請求就結束了。 
17      */  
18     public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
19             Object o) throws Exception {
20         System.out.println("----------preHandle------------");
21         String path=request.getServletPath();
22         System.out.println("path:"+path);
23         if("/login.do".equals(path)){
24             return true;
25         }
26         if("/logout.do".equals(path)){
27             request.getSession().removeAttribute("user");
28         }
29         String str=(String) request.getSession().getAttribute("user");
30         if (str!=null) {
31             return true;
32         }else{
33             response.sendRedirect("login.jsp");
34             return false;
35         }
36     }
37     
38      /** 
39      * 這個方法只會在當前這個Interceptor的preHandle方法返回值為true的時候才會執行。
40      * postHandle是進行處理器攔截用的,它的執行時間是在處理器進行處理之後,
41      * 也就是在Controller的方法調用之後執行,但是它會在DispatcherServlet進行視圖的渲染之前執行,
42      * 也就是說在這個方法中你可以對ModelAndView進行操作。
43      * 這個方法的鏈式結構跟正常訪問的方向是相反的,也就是說先聲明的Interceptor攔截器該方法反而會後調用,
44      * 這跟Struts2裏面的攔截器的執行過程有點像,
45      * 只是Struts2裏面的intercept方法中要手動的調用ActionInvocation的invoke方法,
46      * Struts2中調用ActionInvocation的invoke方法就是調用下一個Interceptor 
47      * 或者是調用action,然後要在Interceptor之前調用的內容都寫在調用invoke之前,
48      * 要在Interceptor之後調用的內容都寫在調用invoke方法之後。 
49      */
50     public void postHandle(HttpServletRequest request, HttpServletResponse response,
51             Object o, ModelAndView ex) throws Exception {
52         System.out.println("----------postHandle------------");
53     }
54     
55     /** 
56      * 該方法也是需要當前對應的Interceptor的preHandle方法的返回值為true時才會執行。
57      * 該方法將在整個請求完成之後,也就是DispatcherServlet渲染了視圖執行, 
58      * 這個方法的主要作用是用於清理資源的,當然這個方法也只能在當前這個Interceptor的preHandle方法的返回值為true時才會執行。 
59      */  
60     public void afterCompletion(HttpServletRequest request,
61             HttpServletResponse response, Object o, Exception ex)
62             throws Exception {
63         System.out.println("----------afterCompletion------------");
64     }
65 
66 }
LoginInterceptor.java

4.配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <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">
 3   <display-name>EmployeeManager</display-name>
 4   <welcome-file-list>
 5     <welcome-file>index.html</welcome-file>
 6     <welcome-file>index.htm</welcome-file>
 7     <welcome-file>index.jsp</welcome-file>
 8     <welcome-file>default.html</welcome-file>
 9     <welcome-file>default.htm</welcome-file>
10     <welcome-file>default.jsp</welcome-file>
11   </welcome-file-list>
12  
13   <!-- 配置前端控制器 和 springMVC-servlet 的配置文件引入-->
14   <servlet>
15       <servlet-name>springMVC</servlet-name>
16       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
17       <init-param>
18           <param-name>contextConfigLocation</param-name>
19           <param-value>classpath:springMVC-servlet.xml</param-value>
20       </init-param>
21       <load-on-startup>1</load-on-startup>
22   </servlet>
23   <servlet-mapping>
24       <servlet-name>springMVC</servlet-name>
25       <url-pattern>/*</url-pattern>
26   </servlet-mapping>
27   
28   <!-- 設置servlet所有編碼的過濾器 -->
29   <filter>  
30         <filter-name>CharacterEncodingFilter</filter-name>  
31         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
32         <init-param>  
33             <param-name>encoding</param-name>  
34             <param-value>utf-8</param-value>  
35         </init-param>  
36         <init-param>  
37             <param-name>forceEncoding</param-name>  
38             <param-value>true</param-value>  
39         </init-param>  
40     </filter>  
41     <filter-mapping>  
42         <filter-name>CharacterEncodingFilter</filter-name>  
43         <url-pattern>/*</url-pattern>  
44     </filter-mapping>  
45     
46     <!-- 配置監聽器 -->
47     <listener>
48         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
49     </listener>
50     
51     <!-- Spring配置文件的引入 -->
52     <context-param>
53         <param-name>contextConfigLocation</param-name>
54           <param-value>classpath:applicationContext.xml</param-value>
55     </context-param>
56     
57 </web-app>

Spring-SpringMVC-Mybatis整合的步驟