Struts2開發步驟
第一步:新建we項目
新建名稱為“Struts"的web工程,新建方法:File->New->Web Service Project->Profect Name中輸入:Struts->點擊Finish按鈕完成新建。
第二步:導入架包
(1)在Struts工程的右鍵菜單上選擇"Properties"命令,打開”Properties for Struts2"對話框,在struts2解壓後的lib目錄中選擇如下13個文件:asm-3.3.jar,asm-commons-3.3.jar,asm-tree-3.3.jar,commons-fileupload-1.3.jar(文件上傳時需要使用),commons-io-2.2.jar( Java io擴展),commons-lang3-3.1.jar( 包含了一些數據類型的工具類),commons-logging-1.1.3.jar(日誌處理),freemarker-2.3.19.jar( Struts2的標簽模板使用類庫),javassist-3.11.0.GA.jar(對字節進行處理),log4j-1.2.17.jar,ognl-3.0.6.jar( Struts2使用的一種表達式語言類庫),struts2-core-2.3.16.jar(Struts2框架的核心類庫),xwork-core-2.3.16.jar( XWork類庫,Struts2的構建基礎)
(2)再把上面13個jar包考到“WebRoot\WEB-INF\lib”目錄下
第三步:配置web.xml文件
StrutsPrepareAndExecuteFilter//struts準備和執行的一個過濾器
(導包:org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)
<!-- Struts2核心過濾器配置 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>/org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<!-- <url-pattern></url-pattern>過濾的請求格式 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern></url-pattern>
</filter-mapping>
第四步:開發視圖層頁面
創建一個login.jsp
<div align="center">
<form action="" method="post">
用戶名:<input type="text" name=""/><br/>
密 碼:<input type="password" name=""/><br/>
<input type="submit" value="登錄"/>
</form>
</div>
第五步:開發控制層Action
實現Action(import com.opensymphony.xwork2.Action;)
public class HelloWorldAction implements Action {
// 用戶輸入的姓名
private String name = "";
// 向用戶顯示的信息
private String message = "";
public String execute() {
// 根據用戶輸入的姓名,進行"Hello,XXXX!"的封裝
this.setMessage("Hello,"+this.getName()+"!");
// 處理完畢,返回導航結果的邏輯名
return "success";
}
…
//省略setter、getter方法
}
第六步: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.0.dtd">
<struts>
<!-- 打開方法的動態調用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- Struts-default裏面是一些攔截器的配置 ("/")代表根目錄-->
<package name="mypackage" extends="struts-default" namespace="/">
<action name="user" class="com.zking.action.UserAction">
<!--成功跳轉到login_success.jsp頁面-->
<result name="success" type="">login_success.jsp</result>
<!--失敗跳轉到login_success.jsp頁面-->
<result name="fail" >login_fail.jsp</result>
</action>
</package>
</struts>
第八步:發布項目
按"F11"發布項目到Tomcat服務器或右鍵單擊項目->Run As->Myeclipse Server Application->Tomcat6.0->OK即可。
struts2的執行流程:
瀏覽器發起請求--->服務器接收並處理請求--->項目的web.xml 中匹配過濾器--->匹配是否有對應的Action--->生成對應的Action對象--->調用action對象的處理方法--->返回結果。
詳細流程圖:
<struts>
<!--
constant 常量配置
struts.devMode 設置是否是開發模式
-->
<constant name="struts.devMode" value="true" />
<!-- 設置編碼 -->
<constant name="struts.i18n.encoding" value="utf-8"/>
<!-- 設置action的擴展名 -->
<constant name="struts.action.extension" value="action,,do"/>
<!--
package表示一個包每個包下可以配置多個action 包的作用主要用來區分不同模塊的配置
不同模塊配置在不同的包下
name 是包名 在項目下唯一 通常使用模塊名做為包名
extends 表示繼承 必須直接或者間接繼承struts-default
namespace 表示命名空間 命名空間和請求名直接相關
請求名=項目發布路徑名+namespace名+action名
namespace名稱通常也和模塊名相關
-->
<package name="default" extends="struts-default" namespace="/user">
<!-- action 配置請求名 一個action表示對一個請求的處理
name在同一個包下唯一 會作為請求名稱 該名稱會自動將請求的擴展名去掉,所以不用配置擴展名
class 配置處理請求的類的完全限定名=包名+類名。如果不配置class默認由
com.opensymphony.xwork2.ActionSupport來處理。
method 配置處理方法的名稱 默認由execute方法處理
在struts2中處理方法 必須是 public的,返回值必須是String。
-->
<action name="hello" class="cn.sxt.action.HelloAction" method="hello">
<!-- result配置的結果集處理 每個action中可以及配置多個result
name表示結果集名稱 和處理方法的返回值進行匹配 默認是success;
type表示結果集類型
dispatcher 轉發-默認
redirect 重定向
redirectAction 重定向到另外一個action
stream 流
chain 表示action鏈
result中填寫要跳轉的頁面的路徑
-->
<result name="success" type="dispatcher">/index.jsp</result>
</action>
</package>
<!--
include用於添加其他配置文件,在團隊開發中使用
不同模塊一般使用不同的配置文件,在總的配置文件中加入即可
-->
<include file="user.xml"></include>
</struts>
Struts2開發步驟