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

Struts2 入門教程:從零搭建 HelloWorld 到核心工作流程解析

     編輯:Java 相關知識

什麼是 Struts2?

Struts2 是基於 MVC 模式的 Web 框架,核心職責:將視圖與業務邏輯解耦。它是 WebWork 與 Struts1 合併演變而來,底層攔截器鏈 + OGNL 表達式 + 結果類型系統構成靈活的請求處理管道。

環境準備

  • Eclipse IDE for Java EE / IntelliJ IDEA
  • Tomcat 7.0+
  • Struts 2.3.x / 2.5.x (官網下載 struts-2.x.x-all.zip,解壓取 lib 下 jar)

核心工作流程

  1. 用戶發起請求 https://host:port/app/namespace/actionName.action
  2. Tomcat 解析 URL,定位 WebApp
  3. web.xml 中 StrutsPrepareAndExecuteFilter 攔截請求
  4. 讀取 struts.xml,按 namespace + action name 匹配 Action
  5. 實例化 Action 類,攔截器鏈預處理(參數注入、驗證、文件上傳等)
  6. 調用 Action execute() 方法執行業務邏輯
  7. 根據返回字符串(如 "success")匹配 <result>
  8. 轉發/重定向到 JSP/FreeMarker/JSON 等視圖

手把手構建第一個 Demo

1. 創建 Web Project 勾選生成 web.xml

2. 複製 Struts 核心 jar 到 WEB-INF/lib

必備:struts2-core, ognl, freemarker, javassist, commons-lang, commons-fileupload, commons-io 等。

3. 編寫 struts.xml 放在 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>
    <constant name="struts.devMode" value="true" />
    <package name="front" namespace="/" extends="struts-default">
        <action name="index" class="com.myservice.web.Action02">
            <result name="success">/Index.jsp</result>
        </action>
    </package>
</struts>
  • devMode=true:開發模式,修改配置/類無需重啟熱加載
  • namespace="/":對應 URL 根路徑
  • class:Action 完整類名
  • result name="success":對應 Action 返回值

4. 編寫 Action 類

package com.myservice.web;
import com.opensymphony.xwork2.ActionSupport;

public class Action02 extends ActionSupport {
    @Override
    public String execute() throws Exception {
        System.out.println("Action02.execute() 執行了");
        return "success";
    }
}

為什麼繼承 ActionSupport?

  • 實現 Action 接口(提供 execute()、SUCCESS 等常量)
  • 提供 validate()、getText()、addActionError() 等豐富輔助方法
  • 實現 ModelDriven、Preparable 等接口,擴展性強

5. 編寫 JSP 視圖

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Struts2 Demo</title></head>
<body>
    <h1>明日復明日,明日何其多</h1>
</body>
</html>

6. 配置 web.xml(Struts2 核心過濾器)

<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>

7. 啟動 Tomcat,訪問 https://localhost:8080/項目名/index.action

控制台輸出 Action02.execute() 執行了,頁面顯示「明日復明日...」即成功。

Action 實現的三種方式對比

方式代碼評價
POJO + execute()public String execute() { return "success"; }最簡單,但無輔助功能
實現 Action 接口implements Action { public String execute() {...} }標準規範,需自行定義常量
繼承 ActionSupport (推薦)extends ActionSupport { @Override public String execute() {...} }功能最全,開發效率最高

常見啟動報錯與排查

  1. ClassNotFoundException: StrutsPrepareAndExecuteFilter → jar 包缺失或版本衝突
  2. Unable to load configuration → struts.xml 路徑錯誤(必須在 classpath 根目錄)或 DTD 解析失敗(離線需複製 dtd 文件)
  3. No result defined for action ... and result success → <result> name 與 Action 返回值不匹配
  4. 404 Not Found → URL 寫錯(漏 .action、namespace 不對)或 web.xml 過濾器映射錯誤

總結

Struts2 入門核心三件套:web.xml 配置過濾器、struts.xml 映射 Action、Action 類繼承 ActionSupport。掌握「請求 → 過濾器 → 配置匹配 → 攔截器 → Action → 結果視圖」完整鏈路,後續學習攔截器、OGNL、類型轉換、驗證、文件上傳、JSON 插件等進階特性將事半功倍。

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