我使用的是MyEclipse8.5的版本,建立好的Web項目以下所示:java
咱們知道,一個標準的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】爲例,具體步驟以下:web
點擊【Finish】按鈕完成建立,以下圖所示:apache
【src/test/java】,【src/test/resources】也是採用相同的方式進行建立,這裏用一張動態的gif動畫演示一下建立過程,以下圖所示:瀏覽器
最終效果以下:緩存
這樣咱們的【Struts2AnnotationMavenProject】項目纔是一個標準的Maven項目,咱們可使用Maven來構建一下【Struts2AnnotationMavenProject】項目,看看可否正常構建成功,以下圖所示:app
從運行結果顯示,項目能夠正常構建成功。框架
因爲咱們是使用Maven管理項目中的jar包的,因此咱們須要在pom.xml文件中添加Struts2框架的核心jar包的描述。jsp
編輯pom.xml文件,添加添加Struts2框架的核心jar包的描述,以下:maven
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項目當中,以下圖所示:學習
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>
之前用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應用時,通常都會配合這兩個插件一塊兒使用。
爲了方便使用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>
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>
編寫一個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進行構建的。