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

Struts2 返回 JSON 數據完整配置指南:json-plugin 整合與 OGNL 根對象設置

     編輯:Java 相關知識

Struts2 通過 struts2-json-plugin 輕鬆實現 Action 直接返回 JSON。關鍵在於:繼承 json-default 包、結果類型設為 json、核心參數 root 指定 OGNL 表達式根對象(不可改名)。本文提供最小化可運行配置與實體類示例。

1. 依賴引入

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>2.3.24</version>  
</dependency>

2. 實體類

public class User {
    private int id;
    private String username;
    // getter/setter 省略
}

3. Action 類

public class JsonAction extends ActionSupport {
    private User user;

    public String execute() {
        user = new User();
        user.setId(123);
        user.setUsername("Irasel");
        return SUCCESS;
    }

    public User getUser() { return user; }  // 必須提供 getter,OGNL 訪問屬性
    public void setUser(User user) { this.user = user; }
}

4. struts.xml 核心配置

<package name="resultJson" namespace="/" extends="json-default">
    <action name="resultJson" class="com.mz.action.JsonAction">
        <result name="success" type="json">
            <!-- root 必須寫死為 "root",不可改為其他名稱 -->
            <param name="root">user</param>
        </result>
    </action>
</package>

關鍵點解析

  • extends="json-default":繼承 JSON 插件預定義的攔截器棧與結果類型
  • type="json":使用 JSONResult 將 root 對象序列化為 JSON
  • root 參數:OGNL 表達式,指定要序列化的對象(此處為 user 屬性)。參數名必須為 root,不能改
  • getter 必備:Action 必須提供 root 對象的公共 getter 方法

驗證測試

啟動 Tomcat,訪問:https://localhost:8080/你的項目/resultJson

預期輸出:

{
  "id": 123,
  "username": "Irasel"
}

常見問題

  1. 返回空對象 {}:檢查 root 參數值是否與 Action 屬性名一致、getter 是否存在
  2. 日期格式不符:全局配置 struts.json.date.format=yyyy-MM-dd HH:mm:ss 或在 Action 中手動格式化
  3. 循環引用:實體類雙向關聯導致無限遞歸,需配置 excludeProperties 或使用 DTO 打破循環
  4. 中文亂碼:確保 web.xml 配置 CharacterEncodingFilter、Tomcat URIEncoding="UTF-8"

進階:排除屬性/自定義序列化

<result name="success" type="json">
    <param name="root">user</param>
    <param name="excludeProperties">password,secret.*</param>  
    <param name="includeProperties">id,username,email</param>  
</result>

掌握 root 參數與 OGNL 表達式,Struts2 返回 JSON 即刻上手。

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