在eclipse中進行Struts2專案的配置
輸入專案名確認即可,然後就建立了一個普通的web專案,和之前的沒有區別,另外注意要建立web.xml配置檔案
然後,開啟我們剛才下載的Struts2中lib目錄,這下面有非常多的Struts類庫,並不是完全需要,一般情況下我們只匯入常用的即可,其他的到需要的時候再匯入,需要的jar包如下圖:
複製到lib目錄後,eclipse專案會自動匯入web的類庫
然後,配置web.xml,在<web-app>節點之間新增下面程式碼,也就是Struts2的框架的過濾器
<welcome-file-list><!-- 定義主介面 --> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter> <filter-name>struts2</filter-name> <!-- 過濾器的名字 --> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> <!-- 引用個具體類檔案 --> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
配置過濾器是Struts2能跑起來最基本的前提,工作原理就是當tomcat容器啟動時,首先載入web.xml,所以會載入其中定義的過濾器,因此StrutsPrepareAndExecuteFilter過濾器會過濾專案下所有的請求,然後後來利用過濾器捕獲action請求,從而呼叫相應的方法進行處理,這就是Struts2的大致工作情況,StrutsPrepareAndExecuteFilter類出現可以讓開發人員自定義過濾器,從而在請求到達處理之間對使用者請求進行處理
配置好web.xml後需要建立Struts2的核心配置檔案,位置就是專案下的src目錄中,建立struts.xml檔案,他負責配置所有的請求對應各種類或者方法,所以是核心配置檔案,基本的結構如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
</struts>
頭部是宣告,我們所有的配置都寫在<struts></struts>標籤的內部,那麼寫一個最簡單的配置:
<package name="default" namespace="/" extends="struts-default"> <action name="hellostruts2" class="net.zengzhiying.action.HelloStruts2Action"> <result>/result.jsp</result> </action> <action name="login" method="login" class="net.zengzhiying.action.HelloStruts2Action"> <result>/login.jsp</result> </action> </package>
在這裡,一個action就負責處理一個請求,packge我們使用的預設包,當有多個packge時,name一定要區分開,namespace就是訪問的空間,我們的專案名是HelloStruts2,如果名稱空間是/test那麼應該訪問,http://localhost:8080/HelloStruts2/test/自定義的action
第一個action對應的訪問路徑就是http://localhost:8080/HelloStruts2/hellostruts2.action當然預設也可以不加action
第二個action對應的就是http://localhost:8080/HelloStruts2/login.action
然後去建立一個Action類,就是HelloStruts2Action,類名命名必須是以Action結尾的駝峰命名,並且繼承於ActionSupport類,具體程式碼如下:
package net.zengzhiying.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloStruts2Action extends ActionSupport {
private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
System.out.println("執行Action");
return SUCCESS;
}
//新增自定義方法
public String login() {
return SUCCESS;
}
如果前面配置檔案沒指定method屬性,預設訪問的方法就是execute方法,我們另外還自定義了一個login方法,SUCCESS常量返回了預設的<result>指定的檢視,下面建立對應的jsp檔案
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>成功檢視</title>
</head>
<body>
Hello Struts2
</body>
</html>
另外login.jsp的建立也是一樣,就不列出了,現在一個基本的Struts2應用就建好了,現在啟動伺服器,訪問即可看到結果
然後我麼看控制檯也進行了列印輸出
同時訪問login也是相同的效果