第一章 maven+springmvc+spring+mybatis+velocity整合

来源:http://www.cnblogs.com/java-zhao/archive/2016/01/03/5096811.html
-Advertisement-
Play Games

一、ssmm簡介ssmm是當下企業最常用的開發框架架構maven:管理項目jar包,構建項目spring:IOC容器,事務管理springmvc:mvc框架myBatis:持久層框架velocity:前端視圖模板(相較於jsp,速度非常快,而且不需要占據jvm的永久代記憶體)上述這些框架再加上版本控制...


一、ssmm簡介

  • ssmm是當下企業最常用的開發框架架構
  • maven:管理項目jar包,構建項目
  • spring:IOC容器,事務管理
  • springmvc:mvc框架
  • myBatis:持久層框架
  • velocity:前端視圖模板(相較於jsp,速度非常快,而且不需要占據jvm的永久代記憶體

上述這些框架再加上版本控制工具(git)、自動化部署工具(jenkins),就組成了當下中大型企業最常用的項目開發部署架構;以上各種框架以後我也會依次做筆記去寫的,所以在下邊不會做詳細介紹。還有,在以下的整合過程中會有一些細節方面的內容,我會在後續的本系列博客中仔細去說。

 

二、下麵介紹怎樣整合ssmm

環境:

  • eclipse-jee-indigo-SR2-win32(新出的一些eclipse不支持jdk1.6)
  • jdk1.6.45(當下企業最常用的jdk版本)
  • spring3.2.6
  • mybatis3.1.1
  • mybatis-spring1.1.1(mybatis與spring集成的一個工具jar)
  • mysql5.1.27
  • maven3.0.5
  • velocity1.5

 

2.1、構建maven項目

步驟:

2.1.1、手工創建maven項目(整個過程就是創建一個符合maven格式的目錄結構)

註意:這裡使用手工創建,而不是在eclipse中使用maven插件去創建,是因為個人感覺eclipse的maven插件不好用。

首先自己創建一個文件夾ssmm(這個文件夾名稱就是我們的項目名稱),然後在ssmm下創建src文件夾和pom.xml文件。

其中,pom.xml文件中的內容如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 5 
 6     <modelVersion>4.0.0</modelVersion>
 7 
 8     <groupId>com.xxx</groupId>
 9     <artifactId>ssmm</artifactId>
10     <version>1.0-SNAPSHOT</version>
11     
12     <name>ssm</name>
13     <packaging>war</packaging>
14 
15 </project>
View Code

以上內容,會在之後的maven模塊中講解。

然後,在src下創建main、test兩個文件夾;在main文件夾下創建java、resources、webapp三個文件夾,在test文件夾下建立java、resources兩個文件夾;之後在webapp下創建META-INF和WEB-INF兩個文件夾,在META-INF文件夾下創建MANIFEST.MF文件,該文件內容如下:

Manifest-Version:1.0

在WEB-INF文件夾下創建templates(該文件夾將來用於存放模板文件)和web.xml文件,web.xml文件內容如下:

1 <?xml version="1.0" encoding="utf-8"?>
2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
5         
6 </web-app>
View Code

當構建好以上目錄結構後,在src/main/java下創建一個TestMaven.java文件,文件內容如下:

public class TestMaven {
    public static void main(String[] args) {
        System.out.println("hello zhaojigang!!!");
    }
}

2.1.2、使用命令視窗編譯該項目

在ssmm文件夾下(即pom.xml所在的目錄)使用打開命令視窗(shift+滑鼠右鍵),使用"mvn compile"編譯該項目(前提:電腦安裝了maven)。編譯成功出現"BUILD SUCCESS"。 

2.1.3、引入eclipse

在eclipse中"import"-->"Existing Maven Projects"即可(執行此步之前,需要安裝eclipse的maven插件)。

引入項目後,在ssmm項目上右擊-->"Properties"-->Text file encoding改為UTF-8

然後對項目進行測試(在webapp目錄下建立index.jsp,然後運行項目,在我這裡,是使用jetty來運行的,然後通過訪問瀏覽器查看項目是否建立成功)。

 

2.2、引入spring與springmvc

2.2.1、引入jar包

在這裡為了方便,我直接給出這些框架整合的完整的pom.xml(具體引入的每個包做什麼用,看pom.xml的註釋),之後其他框架的整合就不再討論jar包問題了。

  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4 
  5     <modelVersion>4.0.0</modelVersion>
  6 
  7     <groupId>com.xxx</groupId>
  8     <artifactId>ssmm</artifactId>
  9     <version>1.0-SNAPSHOT</version>
 10 
 11     <name>ssmm</name>
 12     <packaging>war</packaging>
 13 
 14     <properties>
 15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 16         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 17     </properties>
 18 
 19     <!-- 引入實際依賴 -->
 20     <dependencies>
 21         <!-- json -->
 22         <dependency>
 23             <groupId>com.alibaba</groupId>
 24             <artifactId>fastjson</artifactId>
 25             <version>1.1.39</version>
 26         </dependency>
 27         <!-- servlet -->
 28         <dependency>
 29             <groupId>javax.servlet</groupId>
 30             <artifactId>servlet-api</artifactId>
 31             <version>2.5</version>
 32             <scope>provided</scope>
 33         </dependency>
 34         <!-- spring -->
 35         <dependency>
 36             <groupId>org.springframework</groupId>
 37             <artifactId>spring-core</artifactId>
 38             <version>3.2.6.RELEASE</version>
 39         </dependency>
 40         <dependency>
 41             <groupId>org.springframework</groupId>
 42             <artifactId>spring-beans</artifactId>
 43             <version>3.2.6.RELEASE</version>
 44         </dependency>
 45         <dependency>
 46             <groupId>org.springframework</groupId>
 47             <artifactId>spring-context</artifactId>
 48             <version>3.2.6.RELEASE</version>
 49         </dependency>
 50         <dependency>
 51             <groupId>org.springframework</groupId>
 52             <artifactId>spring-web</artifactId>
 53             <version>3.2.6.RELEASE</version>
 54         </dependency>
 55         <dependency>
 56             <groupId>org.springframework</groupId>
 57             <artifactId>spring-webmvc</artifactId>
 58             <version>3.2.6.RELEASE</version>
 59         </dependency>
 60         <!-- 這個是使用velocity的必備包 -->
 61         <dependency>
 62             <groupId>org.springframework</groupId>
 63             <artifactId>spring-context-support</artifactId>
 64             <version>3.2.6.RELEASE</version>
 65             <scope>compile</scope>
 66         </dependency>
 67         <!-- mysql -->
 68         <dependency>
 69             <groupId>mysql</groupId>
 70             <artifactId>mysql-connector-java</artifactId>
 71             <version>5.1.27</version>
 72             <scope>runtime</scope>
 73         </dependency>
 74         <!-- 數據源 -->
 75         <dependency>
 76             <groupId>org.apache.tomcat</groupId>
 77             <artifactId>tomcat-jdbc</artifactId>
 78             <version>7.0.47</version>
 79         </dependency>
 80         <!-- mybatis -->
 81         <dependency>
 82             <groupId>org.mybatis</groupId>
 83             <artifactId>mybatis</artifactId>
 84             <version>3.1.1</version>
 85         </dependency>
 86         <dependency>
 87             <groupId>org.mybatis</groupId>
 88             <artifactId>mybatis-spring</artifactId>
 89             <version>1.1.1</version>
 90         </dependency>
 91         <!-- velocity -->
 92         <dependency>
 93             <groupId>org.apache.velocity</groupId>
 94             <artifactId>velocity</artifactId>
 95             <version>1.5</version>
 96         </dependency>
 97         <dependency>
 98             <groupId>velocity-tools</groupId>
 99             <artifactId>velocity-tools-generic</artifactId>
100             <version>1.2</version>
101         </dependency>
102     </dependencies>
103 </project>
View Code

2.2.2、配置spring.xml文件

這裡直接列出spring.xml的完整版,包括讀取屬性文件、配置數據源、配置fastjson轉換器、配置mybatis、配置velocity。

 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" xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:mvc="http://www.springframework.org/schema/mvc"
 5     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 6                            http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
 7                            http://www.springframework.org/schema/context 
 8                            http://www.springframework.org/schema/context/spring-context-3.2.xsd
 9                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
10                            
11     <!-- 註解掃描 -->
12     <context:component-scan base-package="com.xxx" />
13     
14     <!-- 引入屬性文件 -->
15     <context:property-placeholder location="classpath:jdbc.properties"/>
16     
17     <!-- 配置fastjson轉換器 -->
18     <mvc:annotation-driven>
19         <mvc:message-converters register-defaults="true">
20             <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
21         </mvc:message-converters>
22     </mvc:annotation-driven>
23     
24     <!-- 引入數據源 -->
25     <bean id="advertDataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
26         <property name="driverClassName" value="${jdbc.driverClassName}" />
27         <property name="url" value="${jdbc.url}" />
28         <property name="username" value="${jdbc.username}" />
29         <property name="password" value="${jdbc.password}" />
30     </bean>
31     
32     <!-- 引入mybatis -->
33     <bean id="advertSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
34         <property name="dataSource" ref="advertDataSource" />
35     </bean>
36     <bean id="advertMapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
37         <property name="basePackage" value="com.xxx.mapper" />
38         <property name="sqlSessionFactoryBeanName" value="advertSqlSessionFactory" />
39     </bean>
40     
41     <!-- 配置velocity -->
42     <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
43         <property name="resourceLoaderPath">
44             <value>WEB-INF/templates/</value>
45         </property>
46         <property name="velocityProperties">
47             <props>
48                 <prop key="input.encoding">UTF-8</prop>
49                 <prop key="output.encoding">UTF-8</prop>
50                 <prop key="eventhandler.referenceinsertion.class">org.apache.velocity.app.event.implement.EscapeHtmlReference</prop>
51                 <prop key="eventhandler.escape.html.match">/(topic|config|isv|mobileConf).*|comment.getTopicName|operatorName|ru/</prop>
52             </props>
53         </property>
54     </bean>
55     <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> 
56         <property name="suffix" value=".vm" /> 
57         <property name="contentType" value="text/html;charset=utf-8" />  
58         <property name="dateToolAttribute" value="date"/>
59         <property name="numberToolAttribute" value="number"/>
60     </bean>
61 </beans>
View Code

在讀取數據源的時候,用一個jdbc.properties文件來存放所有的信息。

1 jdbc.driverClassName = com.mysql.jdbc.Driver
2 jdbc.url = jdbc:mysql://localhost:3306/blog?zeroDateTimeBehavior=convertToNull&amp;useUnicode=true&amp;characterEncoding=utf-8
3 jdbc.username = root
4 jdbc.password = 123456
View Code

註意:上述屬性文件中有一些細節,之後會講。

2.2.3、配置web.xml文件

這裡直接給出web.xml的完整版,包括配置DispatcherServlet、CharacterEncodingFilter與歡迎頁面。

註意:不需要配置spring的ContextLoaderListener了。

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 5 
 6     <servlet>
 7         <servlet-name>dispatcherServlet</servlet-name>
 8         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 9         <init-param>
10             <param-name>contextConfigLocation</param-name>
11             <param-value>classpath*:spring*.xml</param-value>
12         </init-param>
13         <load-on-startup>1</load-on-startup>
14     </servlet>
15     <servlet-mapping>
16         <servlet-name>dispatcherServlet</servlet-name>
17         <url-pattern>/</url-pattern>
18     </servlet-mapping>
19 
20     <filter>
21         <filter-name>encodingFilter</filter-name>
22         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
23         <init-param>
24             <param-name>encoding</param-name>
25             <param-value>UTF-8</param-value>
26         </init-param>
27         <init-param>
28             <param-name>forceEncoding</param-name>
29             <param-value>true</param-value>
30         </init-param>
31     </filter>
32     <filter-mapping>
33         <filter-name>encodingFilter</filter-name>
34         <url-pattern>/*</url-pattern>
35     </filter-mapping>
36 
37     <welcome-file-list>
38         <welcome-file>/index.jsp</welcome-file>
39     </welcome-file-list>
40 </web-app>
View Code

 

2.3、引入mybatis

引入jar在pom.xml中搞定了;配置mybatis在spring.xml中搞定了。

註意:這裡

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 說到Java web開發,就不得不提Servlet 和 JSP。這兩者是java web開發技術。雖然現在有這麼多的web框架,公司中很少會用這兩個技術來直接開發項目,但是理解了這兩個技術,一則會讓你對web的基礎知識要很深的瞭解,二則學其他的相比來說要更好理解點。一、Servlet1. 什麼是se...
  • 前文中介紹了FlowLayout和BorderLayout 本文我們將會繼續介紹java中的佈局方式(3)GridLayout 網格佈局 這種佈局會將整個容器劃分成M行*N列的網格。如下圖: 由模型圖我們可以知道這種佈局,類似於我們常見的掃雷、計算器等軟體的佈局。這種佈局的構造函數有三種1 G...
  • 2016-01-03 Swith(整數選擇因數):必須是int或char這樣的整數值。 Java中不包含goto語句,但是可以通過標識符實現類似的控制。
  • Django ORM 中的批量操作 在Hibenate中,通過批量提交SQL操作,部分地實現了資料庫的批量操作。但在Django的ORM中的批量操作卻要完美得多,真是一個驚喜。 數據模型定義 首先,定義一個實例使用的django資料庫模型Product,只是象徵性地定義了兩個欄位name...
  • 今天終於開始進行OC的學習了一.首先講了NSLogNSLog是oc裡面的輸出語句,其用法和printf差不多,但是還是有差別的1,NSLog是自動換行的,不用像printf那樣還需要加'\n';2,NSLog在引號面前需要添加@符號,例如: NSLog(@"Hello World"); ...
  • 15.1、原理步驟註冊:註冊時,將用戶密碼加密放入資料庫登錄:登錄時,將用戶密碼採用上述相同的演算法加密,之後再與資料庫中的信息進行比對,若相同,則登錄15.2、實現(這裡採用了SHA256演算法,其他摘要演算法MD5/SHA1/MAC類似)註意:這裡的程式是在我之前寫的一個maven+spring+sp...
  • 剛開始學習python,之前完全沒有接觸,在這裡寫下自己學習python的過程和心得。 首先,安裝python,打開官網:http://python.org.點擊Download.我選擇了3.5.1版本進行安裝。 接下來,按照教程開始學習: 於是開始了經典的第一個程式,在互動式解釋器里輸入...
  • 運行時數據區域程式計數器(Program Counter Register):可看作是當前程式所執行的位元組碼的行號指示器。在虛擬機的概念模型里(不同虛擬機可能有不同的實現方法),位元組碼解釋器就是通過改變程式計數器的值來取下一條位元組碼指令,分支、迴圈、跳轉、異常處理、線程恢復等基礎功能都依賴於這個計數...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...