iT邦幫忙

DAY 2
0

無痛學習SpringMVC與Spring Security系列 第 2

Spring MVC Hello!World的事前準備工作

昨天已經在STS中產生一個Maven專案,不過只是一個空殼,專案要導入Springframework技術就需要加入相關的jar檔,由於STS與Maven整合介面已經很成熟了,透過編輯pom.xml,加入springframework相關的denpendencies,STS自動會到Maven Repository下載對應的jar檔,除了到Spring的官網可以得到Maven Dependency的snippet code,也可以直接到MVNRepository網站搜尋,例如剛剛產生的專案中JUnit目前最新的版本或是穩定版本在MVNRepository就可以找到。

所以我們在pom.xml裡就可以把3.8改成4.11。

我在學習Spring MVC的時候是買Packt出版的Spring MVC Beginner Guide,整本書是以Spring 4.0.x撰寫的,雖然官方已推出4.1版,但為了避免相容性問題以及節省版本除錯時間,還是以4.0.7作為基礎開發,故請在pom.xml加入以下相關的dependency。

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
<exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
 </exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<properties>
<spring.version>4.0.7.RELEASE</spring.version>
<project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
</properties>

接著是log的部分,從Spring 4.0開始就推薦使用用SLF4J以及Log4j來作logging,原apache common-logging應該即將deprecated,需加入Dependency code如下

 <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.7</version>
      <scope>runtime</scope>
 </dependency>
 <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.7</version>
      <scope>runtime</scope>
 </dependency>

另外我們View的部分會用到JSP以及JSTL Tag,故也需要加入對應的Servlet Dependency,加入Servlet 3.1.0是因為之後會以Java Config的方式初始化Java Web程式,先前的版本不支援。

 <dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
</dependency>
 <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
      <scope>compile</scope>
 </dependency>

常用的runtime產生proxy class的cglib、MySQL Connector也一併加入

 <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib-nodep</artifactId>
      <version>2.2.2</version>
      <scope>runtime</scope>
 </dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.25</version>
</dependency>

最後,目前Maven專案預設JDK的Complier Version是1.5,這會造成不支援JDK 7以後支援的Diamond泛型語法,如

List<DCN> dcnList=new ArrayList<>();

STS會提示錯誤,故需要在pom.xml底下<build>標籤下加入maven complier plug-In來變更預設的Complier version,故整個到目前為止,pom.xml如下。

<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>tw.blogspot.springtech</groupId>
  <artifactId>SpringMVC</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringMVC Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-expression</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-aspects</artifactId>
	<version>${spring.version}</version>
</dependency>
 <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.7</version>
      <scope>runtime</scope>
 </dependency>
 <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.7</version>
      <scope>runtime</scope>
 </dependency>
 <dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>javax.servlet-api</artifactId>
	<version>3.1.0</version>
        <scope>provided</scope>
</dependency>
<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
</dependency>
 <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
      <scope>compile</scope>
 </dependency>
 <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib-nodep</artifactId>
      <version>2.2.2</version>
      <scope>runtime</scope>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.25</version>
</dependency>
</dependencies>
 <properties>
    <spring.version>4.0.7.RELEASE</spring.version>
    <project.build.sourceEncoding>UTF8</project.build.sourceEncoding>
  </properties>
  <build>
    <finalName>SpringMVC</finalName>
     <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

存檔後,到專案上按右鍵->Maven->Update Project->OK

相關的jar檔下載完後,專案畫面應該如下

另外建議在Preferences->Maven主頁面勾選download artifact sources以及javadoc,之後相關class或interface STS會提供相關訊息

其他小地方,如General->Workspace->Text file encoding,建議選擇UTF-8,避免中文亂碼問題,以及Web->CSS, HTML, JSP的Encoding也設定UTF-8。

差點忘記,請找到STS中Server分頁->空白處按右鍵->New->Server->展開Apace資料夾->選擇Apache Tomcat 8.0 Server(之前runtime environment已經設定過了)->Finish

明天就可以寫第一支Spring MVC Hello! World Web程式了


上一篇
Spring Tool Suite及相關程式下載與建立Maven專案
下一篇
Spring IoC概念及建立Spring Bean Configuration File(XML)
系列文
無痛學習SpringMVC與Spring Security31

尚未有邦友留言

立即登入留言