Struts 2 是融合 Struts 1 與 WebWork 的 MVC 框架,其核心處理流程為:瀏覽器發請求 → 核心控制器依 struts.xml 尋找 Action → 攔截器鏈套用通用功能(工作流、驗證等) → 呼叫 Action 指定方法(預設 execute()) → 將結果響應瀏覽器。
struts2-blank-xxx.war 取得所有 JAR。lib 目錄下所有 JAR 複製至專案 WEB-INF/lib。於 web.xml 註冊 Struts 2 核心過濾器(Struts 2.1+ 版本類別名稱):
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
login.jsp(表單提交至 test.action):
<%@ page language="java" pageEncoding="gbk"%>
<html><body>
<form action="test.action" method="post">
用戶名:<input type="text" name="username"><br>
密碼:<input type="text" name="pwd"><br>
<input type="submit" value="Submit">
</form>
</body></html>
ok.jsp 與 no.jsp 分別顯示「OK!!」與「NO!!」。
com.struts2.action.TestAction:屬性名稱對應表單欄位(username、pwd),提供 getter/setter。execute() 比對帳密相等回傳 "OK",否則 "NO"。
package com.struts2.action;
public class TestAction {
private String username, pwd;
public String execute() {
return username.equals(pwd) ? "OK" : "NO";
}
// getter/setter 略
}
置於 src 根目錄:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"https://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="test" class="com.struts2.action.TestAction">
<result name="ok">/ok.jsp</result>
<result name="no">/no.jsp</result>
</action>
</package>
</struts>
https://localhost:8080/專案名/login.jsp。ok.jsp;不同 → 跳轉 no.jsp。execute() 方法(或在 struts.xml 指定 method 屬性)。struts.xml 中 <result name="..."> 導向的視圖頁面。更多進階特性(驗證框架、類型轉換、OGNL 表達式、標籤庫、AJAX 整合等)將於後續文章深入探討。