化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!

简介: 【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。

在现代 Web 应用中,JSON(JavaScript Object Notation)已经成为了一种广泛使用的数据交换格式。它以轻量级、易读性强、易于解析等特点深受开发者喜爱。Struts 2 框架内置了对 JSON 的支持,使得开发者能够方便地在客户端与服务器之间传输数据。本文将通过具体的示例来展示如何在 Struts 2 应用中实现 JSON 数据的序列化与反序列化,以及如何与 AJAX 技术相结合,构建出响应迅速且用户体验良好的 Web 应用。

首先,确保你的 Struts 2 项目中已经包含了对 JSON 的支持。通常情况下,Struts 2 通过 Jackson 库来处理 JSON 数据。如果你还没有添加 Jackson 的依赖,可以在 Maven 的 pom.xml 文件中添加如下依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.10.0</version>
</dependency>

接下来,创建一个简单的实体类 User,用于存储用户信息。

package com.example.model;

public class User {
   
    private String name;
    private String email;

    // Getter and Setter methods
    public String getName() {
   
        return name;
    }

    public void setName(String name) {
   
        this.name = name;
    }

    public String getEmail() {
   
        return email;
    }

    public void setEmail(String email) {
   
        this.email = email;
    }
}

然后,创建一个 Action 类来处理与用户相关的请求。这里我们将实现两个方法:一个用于将用户数据转换成 JSON 格式返回给客户端,另一个用于接收客户端发送过来的 JSON 数据并保存到数据库中。

package com.example.action;

import com.example.model.User;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
   

    private User user;
    private User savedUser;

    // Getter and Setter methods
    public User getUser() {
   
        return user;
    }

    public void setUser(User user) {
   
        this.user = user;
    }

    public User getSavedUser() {
   
        return savedUser;
    }

    public void setSavedUser(User savedUser) {
   
        this.savedUser = savedUser;
    }

    public String getJsonData() {
   
        // 假设这里有一个用户对象
        savedUser = new User();
        savedUser.setName("John Doe");
        savedUser.setEmail("john.doe@example.com");

        // 设置响应头为 JSON 格式
        getServletResponse().setContentType("application/json;charset=UTF-8");

        // 返回 JSON 数据
        return SUCCESS;
    }

    public String saveUserData() {
   
        // 假设这里有一个保存用户数据到数据库的逻辑
        // user 对象已经由客户端传入
        // 保存成功后返回 JSON 格式的数据
        savedUser = user;
        return SUCCESS;
    }
}

struts.xml 文件中配置 Action,使其能够处理 JSON 数据。

<package name="default" namespace="/" extends="json-default">
    <action name="getJsonData" class="com.example.action.UserAction">
        <result name="success" type="json">
            <param name="root">savedUser</param>
        </result>
    </action>

    <action name="saveUserData" class="com.example.action.UserAction">
        <result name="success" type="json">
            <param name="root">savedUser</param>
        </result>
    </action>
</package>

上述配置中,json-default 包继承了默认的 JSON 配置,这样可以省略一些 JSON 相关的配置。<result> 元素指定了返回 JSON 数据,并设置了根对象为 savedUser

接下来,在客户端使用 AJAX 发送请求并处理响应。这里使用 jQuery 来演示如何实现这一点。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Struts 2 & JSON Example</title>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
</head>
<body>
    <h1>Get User Data</h1>
    <button id="getUserData">Get Data</button>
    <pre id="jsonData"></pre>

    <h1>Save User Data</h1>
    <form id="saveUserDataForm">
        Name: <input type="text" id="name"><br>
        Email: <input type="text" id="email"><br>
        <button type="submit">Save Data</button>
    </form>
    <pre id="saveDataResult"></pre>

    <script>
        $(document).ready(function () {
    
            $('#getUserData').click(function () {
    
                $.getJSON('/getJsonData', function (data) {
    
                    $('#jsonData').text(JSON.stringify(data, null, 4));
                });
            });

            $('#saveUserDataForm').submit(function (event) {
    
                event.preventDefault();
                var data = {
    
                    name: $('#name').val(),
                    email: $('#email').val()
                };
                $.ajax({
    
                    url: '/saveUserData',
                    type: 'POST',
                    contentType: 'application/json',
                    data: JSON.stringify(data),
                    success: function (response) {
    
                        $('#saveDataResult').text(JSON.stringify(response, null, 4));
                    }
                });
            });
        });
    </script>
</body>
</html>

在上述 HTML 页面中,#getUserData 按钮触发一个 GET 请求,从服务器获取用户数据,并将其显示在页面上。#saveUserDataForm 表单提交时,将表单数据序列化为 JSON 格式并通过 POST 请求发送到服务器。服务器端的 UserAction 类接收到 JSON 数据后,将其保存到 savedUser 对象,并返回同样的对象作为响应。

通过上述步骤,你已经成功地在 Struts 2 应用中实现了 JSON 数据的轻量级交换。这种做法不仅提升了应用的响应速度,还改善了用户体验。掌握了这些知识后,你可以进一步探索 Struts 2 与 JSON 结合的更多可能性,以满足不同的业务需求。

相关文章
|
19天前
|
数据库 索引
深入探索数据库索引技术:回表与索引下推解析
【10月更文挑战第15天】在数据库查询优化的领域中,回表和索引下推是两个核心概念,它们对于提高查询性能至关重要。本文将详细解释这两个术语,并探讨它们在数据库操作中的作用和影响。
42 3
|
18天前
|
存储 负载均衡 监控
数据库多实例的深入解析
【10月更文挑战第24天】数据库多实例是一种重要的数据库架构方式,它为数据库的高效运行和灵活管理提供了多种优势。在实际应用中,需要根据具体的业务需求和技术环境,合理选择和配置多实例,以充分发挥其优势,提高数据库系统的性能和可靠性。随着技术的不断发展和进步,数据库多实例技术也将不断完善和创新,为数据库管理带来更多的可能性和便利。
88 57
|
6天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
6天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。
|
7天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第7天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统要求检查与准备、配置安装源、安装 SQL Server 2019、配置 SQL Server 以及数据库初始化(可选)。通过这些步骤,你可以成功安装并初步配置 SQL Server 2019,进行简单的数据库操作。
|
17天前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
15 2
|
22天前
|
SQL JSON Java
没有数据库也能用 SQL
SPL(Structured Process Language)是一款开源软件,允许用户直接对CSV、XLS等文件进行SQL查询,无需将数据导入数据库。它提供了标准的JDBC驱动,支持复杂的SQL操作,如JOIN、子查询和WITH语句,还能处理非标准格式的文件和JSON数据。SPL不仅简化了数据查询,还提供了强大的计算能力和友好的IDE,适用于多种数据源的混合计算。
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
22 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
77 1

推荐镜像

更多