首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts 2 入門實戰:從環境建置到 HelloWorld 完整流程

     編輯:Java 相關知識

手把手建立第一個 Struts 2 應用,涵蓋依賴管理、配置檔案、Action/JSP 編寫與執行原理解析。

1. 專案依賴

官網下載 struts-2.0.9,核心 JAR:

  • struts2-core-2.0.9.jar
  • xwork-2.0.4.jar(核心基礎)
  • ognl-2.6.11.jar(表達式語言)
  • freemarker-2.3.8.jar(標籤模板引擎)
  • commons-logging-1.0.4.jar(日誌介面)

2. web.xml 配置核心 Filter


<filter>
  <filter-name>struts2</filter-name>
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

所有 .action 請求經 FilterDispatcher 進入框架。

3. struts.xml 最小配置


<!DOCTYPE struts PUBLIC ...>
<struts>
  <package name="default" extends="struts-default"/>
</struts>

放置 WEB-INF/classes(或 src 自動編譯)。

4. JSP 頁面:使用 Struts 標籤


<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head><title>Hello World!</title></head>
<body>
  <s:form action="hello">
    <s:textfield name="name" label="name" />
    <s:submit/>
  </s:form>
</body>
</html>

<s:form> 自動生成 <form action="hello.action" method="post">。

5. Action 類:繼承 ActionSupport


import com.opensymphony.xwork2.ActionSupport;

public class HelloWorld extends ActionSupport {
  private String name;
  
  public String execute() throws Exception {
    return SUCCESS;
  }
  
  public void setName(String name) { this.name = name; }
  public String getName() { return name; }
}

屬性 name 自動綁定表單欄位,execute() 回傳 SUCCESS(常數 "success")。

6. 關聯 Action 與結果視圖


<package name="tutorial" extends="struts-default">
  <action name="HelloWorld" class="tutorial.HelloWorld">
    <result>/HelloWorld.jsp</result>
  </action>
</package>

執行流程解析

  1. 瀏覽器請求 https://localhost:8080/tutorial/HelloWorld.action
  2. FilterDispatcher 攔截,委派 ActionProxy
  3. 框架實例化 HelloWorld,調用 execute()
  4. 回傳 SUCCESS → 匹配 <result>/HelloWorld.jsp</result>
  5. JSP 處理期間,<s:property value="name"/> 呼叫 getName() 顯示輸入值
  6. 生成 HTML 回傳瀏覽器

結果型別與多重結果


<action name="Logon" class="tutorial.Logon">
  <result type="redirect-action">Menu</result>       <!-- success 導向 Menu action -->
  <result name="input">/tutorial/Logon.jsp</result> <!-- input 導向登入頁 -->
</action>
  • type="redirect-action":重導向至另一 Action
  • name="input":對應 execute() 回傳 "input" 時
  • 預設 name="success", type="dispatcher"(轉發 JSP)

驗證失敗時回傳 INPUT,顯示表單錯誤;成功則重導向避免重複提交。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved