Maven+Spring MVC+MyBatis+dbpc+Mysql Web專案構建

孫悟空空發表於2015-08-16

導讀:其實, 筆者是一個剛接觸Maven ,Spring MVC 的”小生”,在搭建環境,構建demo的時候,從網上找了不少的材料或教程,吃了不少的苦頭,最終搭建成功。對於demo專案的構建,我會盡量詳細描述,說明白,如果還是有些地方不是很明白,歡迎發郵件給我sunshijun07@163.com,看到後,我會及時回覆

1.環境說明

1.1 系統環境

Win7 專業版,32位系統

1.2 JDK

JDK版本為JDK1.7
開啟cmd視窗,輸入java -version,若出現如下結果,證明JDK安裝成功。否則需安裝JDK,並配置JAVA_HOME環境變數。

這裡寫圖片描述

1.3 Tomcat和Mysql

之所以將Tomcat和Mysql放到一起說,是因為筆者安裝了整合化工具XAMPP,整合了Tomcat和Mysql,簡單省力。需要注意的是,在執行XAMPP Control Panel時,需以管理員身份執行,因為這樣才能有足夠的許可權啟動Mysql。

這裡寫圖片描述

Mysql執行後如上圖所示。

1.4 Eclipse

其實重點想說的是Eclipse,筆者使用的是最新版本的 Eclipse Java EE IDE for Web Developers,也就是Mars版本 【下載地址】 。使用最新版本的好處就是,簡化操作,給使用者帶來方面。不好的方面是,可能將老的專案import進來時,可能會有些意想不到的偏差。但是,一般情況下是相容的,所以還是推薦大家使用最新版本的工具。Mars版本可以自己定義Eclipse整體介面主題,筆者就更改使用了dark主題

這裡寫圖片描述

感覺還不錯吧!

2.專案構建步驟

1.1 構建一個Maven Web專案

Maven Web專案構建教程這個教程也是我寫的,環境與第1節所說的是一樣的。同時,在以後的介紹中,我會以這個地址構建的專案為基礎介紹,希望讀者認真參考

1.2 構造資料庫

/*構建資料庫*/
create database student;
use student;

/*構建資料表*/
create table student(
id varchar(20) primary key,
name varchar(50) not null,
sex varchar(10),
birthday Date,
classid varchar(20)
);

/*插入資料*/
insert into student values("1234","Joy","M","1988-01-28","1234");

OK,資料庫構造完成,而且插入了資料,測試資料也已經寫好。

1.3 配置檔案及java程式碼

最重要,最容易出錯,最讓人抓狂的就是這部分了,不過不要過於擔心,慢慢來,還是不難的。

1.3.1 資料夾及檔案

這裡寫圖片描述

先把檔案結構目錄擺上,這樣讓讀者心裡有個底。看過一些其他的教程,有些只是將一些配置檔案內容貼出來,並沒有明確指出,這些檔案放到哪裡。其實檔案擺放位置直接影響了配置檔案如web.xml中一些屬性的內容。請按照圖示建立對應的檔案。下面詳細解析

1.3.2 web.xml

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>BangWeb</display-name>

  <context-param>  
    <param-name>webAppRootKey</param-name>  
    <param-value>BangWeb</param-value>  
  </context-param>

<filter>  
    <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping>

<listener>  
   <listener-class>
      org.springframework.web.util.Log4jConfigListener
   </listener-class>  
</listener>

<!-- Spring view分發器 -->  
<servlet>  
   <servlet-name>dispatcher</servlet-name>  
   <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
   </servlet-class>  
   <init-param>  
     <param-name>contextConfigLocation</param-name>  
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>  
   </init-param>  
    <load-on-startup>1</load-on-startup>  
</servlet>  
<servlet>
   <servlet-name>jsp</servlet-name>
   <servlet-class>
      org.apache.jasper.servlet.JspServlet  
   </servlet-class>
</servlet>
<servlet-mapping>  
   <servlet-name>dispatcher</servlet-name>  
   <url-pattern>/</url-pattern>  
</servlet-mapping> 
</web-app>

如果懂得配置檔案中每個標籤的意義,那麼在看到.xml檔案就不會有恐懼感了。下面概要介紹每個標籤的意義,我儘量用易懂得詞彙,若有什麼錯誤,希望大家及時指正。

(1) display-name元素

定義Web應用的名稱,名稱自己可以根據自己的專案隨便起一個

(2) context-param元素

該元素在此專案中可有可無。大家可以瞭解。該元素用來宣告應用範圍(整個WEB專案)內的上下文初始化引數,專案執行時,改元素首先被讀取,形成鍵值對。webAppRootKey屬性,可以理解為Web專案的唯一標示。如果同一個Tomcat下有兩個Web專案,那麼要將webAppRootKey屬性設定為不同值。

(3) filter元素

字元過濾器,形式比較固定

(3) listener元素

監聽器,由於本專案是Spring MVC 專案,所以固定使用spring 的log4j的監聽器

(4) servlet元素
<servlet>  
   <servlet-name>dispatcher</servlet-name>  
   <servlet-class>
       org.springframework.web.servlet.DispatcherServlet
   </servlet-class>  
   <init-param>  
     <param-name>contextConfigLocation</param-name>  
     <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>  
   </init-param>  
    <load-on-startup>1</load-on-startup>  
</servlet>
<servlet-mapping>
   <!--與上面的<servlet-name>中的值保持一致-->  
   <servlet-name>dispatcher</servlet-name>  
   <url-pattern>/</url-pattern>  
</servlet-mapping>

這一段我們可以這樣理解:所有形式如 “localhost:8080/專案名稱/” 的請求 都交給使用dispatcher-servlet.xml配置好的spring 處理。在本專案中,localhost:8080/BangWab/student 或 localhost:8080/BangWab/abc 請求,spring都可以處理,但是 localhost:8080/Bang/student請求不行。

servlet-mapping元素規定了請求形式,若url-pattern改為如下:

<url-pattern>/abc/</url-pattern>

那麼只有形式如 localhost:8080/專案名稱/abc/ 的請求形式spring可以處理

<init-param>  
  <param-name>contextConfigLocation</param-name>  
  <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>  
</init-param> 

init-param元素表明 sping 使用/WEB-INF/dispatcher-servlet.xml配置檔案,此處應注意路徑,一般我們將dispatcher-servlet.xml放在WEB-INF資料夾下。
如果覺得在WEB-INF下不簡潔,也可以放到src/main/resource資料夾下,此時param-value元素的值為:

<param-value>classpath:dispatcher-servlet.xml</param-value>

通過分析以上我的可以得出結論:在Maven Web專案的配置檔案中,涉及檔案路徑的屬性的元素如:url-pattern元素等,其值得設定,若為“/”則表明在webapp檔案下,若為“classpath:”則表明在src/main/sources資料夾下

1.3.3 dispather-servlet.xml

相關文章