使用Maven搭建Struts2框架的開發環境


一、創建基於Maven的Web項目

  

  

  

  

  我使用的是MyEclipse8.5的版本,創建好的Web項目如下所示:

  

  我們知道,一個標准的Maven項目是必須包括【src/main/java】,【src/main/resources】,【src/test/java】,【src/test/resources】這四個Source Folder的,而創建好的項目當中只有一個(不懂為啥MyEclipse8.5沒有幫我生成【src/main/java】),所以我們還需要手動創建剩下的【src/main/java】,【src/test/java】,【src/test/resources】這三個Source Folder,以創建【src/main/java】為例,具體步驟如下:

  

  

  點擊【Finish】按鈕完成創建,如下圖所示:

  

  【src/test/java】,【src/test/resources】也是采用相同的方式進行創建,這里用一張動態的gif動畫演示一下創建過程,如下圖所示:

  

  最終效果如下:

  

  這樣我們的【Struts2AnnotationMavenProject】項目才是一個標准的Maven項目,我們可以使用Maven來構建一下【Struts2AnnotationMavenProject】項目,看看能否正常構建成功,如下圖所示:

  

   從運行結果顯示,項目可以正常構建成功。

二、搭建Struts2的開發環境

2.1、添加Struts2框架的核心jar包

  由於我們是使用Maven管理項目中的jar包的,所以我們需要在pom.xml文件中添加Struts2框架的核心jar包的描述。

  編輯pom.xml文件,添加添加Struts2框架的核心jar包的描述,如下:

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4   <groupId>me.gacl</groupId>
 5   <artifactId>Struts2AnnotationMavenProject</artifactId>
 6   <packaging>war</packaging>
 7   <version>0.0.1-SNAPSHOT</version>
 8   <name>Struts2AnnotationMavenProject Maven Webapp</name>
 9   <url>http://maven.apache.org</url>
10   <dependencies>
11     <dependency>
12       <groupId>junit</groupId>
13       <artifactId>junit</artifactId>
14       <version>3.8.1</version>
15       <scope>test</scope>
16     </dependency>
17      <!-- Struts2的核心包 -->
18     <dependency>
19         <groupId>org.apache.struts</groupId>
20         <artifactId>struts2-core</artifactId>
21         <version>2.3.16</version>
22     </dependency>
23   </dependencies>
24   <build>
25     <finalName>Struts2AnnotationMavenProject</finalName>
26   </build>
27 </project>

  pom.xml文件中標紅的部分就是我們添加的Struts2框架的核心jar包的描述,保存pom.xml文件,此時Maven就會自動幫我們把struts2-core這個jar包依賴的其他相關jar包導入到我們的Web項目當中,如下圖所示:

  

2.2、添加Struts2框架的配置文件struts.xml

  Maven約定,web項目開發中的使用到的配置文件都要放到【src/main/resources】這個Source Folder,如下圖所示:

  

  編輯struts.xml文件,添加常用的配置項,配置信息如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
 3 <struts>
 4     <!-- 所有匹配*.action的請求都由struts2處理 -->
 5     <constant name="struts.action.extension" value="action" />
 6     <!-- 是否啟用開發模式 -->
 7     <constant name="struts.devMode" value="true" />
 8     <!-- struts配置文件改動后,是否重新加載 -->
 9     <constant name="struts.configuration.xml.reload" value="true" />
10     <!-- 設置瀏覽器是否緩存靜態內容 -->
11     <constant name="struts.serve.static.browserCache" value="false" />
12     <!-- 請求參數的編碼方式 -->
13     <constant name="struts.i18n.encoding" value="utf-8" />
14     <!-- 每次HTTP請求系統都重新加載資源文件,有助於開發 -->
15     <constant name="struts.i18n.reload" value="true" />
16     <!-- 文件上傳最大值 -->
17     <constant name="struts.multipart.maxSize" value="104857600" />
18     <!-- 讓struts2支持動態方法調用 -->
19     <constant name="struts.enable.DynamicMethodInvocation" value="true" />
20     <!-- Action名稱中是否還是用斜線 -->
21     <constant name="struts.enable.SlashesInActionNames" value="false" />
22     <!-- 允許標簽中使用表達式語法 -->
23     <constant name="struts.tag.altSyntax" value="true" />
24     <!-- 對於WebLogic,Orion,OC4J此屬性應該設置成true -->
25     <constant name="struts.dispatcher.parametersWorkaround" value="false" />
26 
27     <package name="basePackage" extends="struts-default">
28 
29 
30     </package>
31 
32 </struts>

2.3、convention-plugin和config-browser-plugin插件介紹

  以前用struts2框架開發項目時,每次編寫好一個Action,就需要在struts.xml文件中配置Action,而convention-plugin這個插件的出現出現后,就不再需要在struts.xml文件中配置Action了,convention-plugin提供了一種非常方便的注解方式來配置Action類。

  convention-plugin采用"約定大於配置”的思想,只要我們遵守約定,完全可以少寫配置甚至不寫配置;config-browser-plugin插件則用於方便的瀏覽項目中的所有action及其與 jsp view的映射。這二個插件結合起來學習,能很方便的搞定struts2中各種復雜的action-view映射需求,所以現在使用Struts2框架開發Web應用時,一般都會配合這兩個插件一起使用。

2.3.1、convention-plugin和config-browser-plugin插件使用

  為了方便使用Struts2框架,我們最好在項目中配合convention-plugin、 config-browser-plugin這兩個插件一起使用,在maven項目的pom.xml中加上這兩個插件的jar包描述,如下:

 1 <!-- convention-plugin插件,使用了這個插件之后,就可以采用注解的方式配置Action -->
 2     <dependency>
 3         <groupId>org.apache.struts</groupId>
 4         <artifactId>struts2-convention-plugin</artifactId>
 5         <version>2.3.20</version>
 6     </dependency>
 7     <!--config-browser-plugin插件,使用了這個插件之后,就可以很方便的瀏覽項目中的所有action及其與 jsp view的映射-->
 8     <dependency>
 9         <groupId>org.apache.struts</groupId>
10         <artifactId>struts2-config-browser-plugin</artifactId>
11         <version>2.3.20</version>
12     </dependency>

  

2.4、在web.xml文件中配置Struts2的核心過濾器

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7 
 8     <display-name>Archetype Created Web Application</display-name>
 9 
10     <!-- add struts2 configiguration -->
11     <filter>
12         <description>配置struts2的核心過濾器</description>
13         <filter-name>struts2</filter-name>
14         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
15     </filter>
16 
17     <filter-mapping>
18         <filter-name>struts2</filter-name>
19         <url-pattern>*.action</url-pattern>
20     </filter-mapping>
21     <!-- end add struts2 configuration-->
22 </web-app>

2.5、測試Struts2框架是否搭建成功

  編寫一個TestAction類,用於測試

 1 package me.gacl.action;
 2 
 3 import org.apache.struts2.convention.annotation.Action;
 4 import org.apache.struts2.convention.annotation.Namespace;
5 @ParentPackage("basePackage") 6 //使用convention插件提供的@Action注解將一個普通Java類標識為可以處理用戶請求的Action類 7 @Action 8 //使用使用convention插件提供的@Namespace注解指明這個Action類的命名空間 9 @Namespace("/") 10 public class TestAction { 11 /** 12 * test方法的訪問方式:http://localhost:8080/Struts2AnnotationMavenProject/test!test 13 * MethodName: test 14 * Description: 15 * @author xudp 16 */ 17 public void test(){ 18 System.out.println("調用了TestAction里面的test方法"); 19 } 20 }

  在將類使用@Action注解標識時發現@Action注解必須使用JDK1.6才行,所以我修改了JDK的版本,改成使用JDK1.6的,如下圖所示:

  

  由於使用了convention-plugin插件的提供的注解方式映射Action的訪問路徑,所以我們不再需要像以前那樣在Struts.xml文件中配置Action的訪問路徑了,測試結果如下:

  

  可以看到,我們的TestAction里面的test方法已經成功調用了,這說明我們的Struts2框架的開發環境搭建成功。並且我們也感受到了使用convention-plugin插件開發基於注解的Struts2程序是非常方便和快捷的。

  我們的項目中還使用到了config-browser-plugin插件,下面我們來感受一下這個config-browser-plugin插件帶來的便利之處

  輸入訪問URL:http://localhost:8080/項目名/config-browser/index.action來訪問config-browser-plugin插件提供的視圖頁面,例如:http://localhost:8080/Struts2AnnotationMavenProject/config-browser/index.action,這樣就可以進入config-browser-plugin插件提供的視圖界面,如下圖所示:

  

  以上就是在MyEclipse中使用Maven搭建Struts2框架的開發環境的相關介紹,使用了Maven之后,大大提高了框架開發環境的搭建速度,起碼我們不再需要關心Struts2框架的開發環境需要哪些jar包,我們只需要引入Struts2的核心jar包struts2-core,然后Maven就會自動幫我們把struts2-core這個jar包的相關依賴jar全部加入到項目中,將web應用中的jar包全部交給Maven進行管理是一種非常好的做法,現在主流的項目都是采用Maven進行構建的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM