Java的Struts2框架配合Ext JS处理JSON数据的使用示例

下面我来详细讲解一下Java的Struts2框架配合Ext JS处理JSON数据的使用示例的完整攻略。

简介

在开发Web应用程序时,常常需要使用JSON(JavaScript对象表示法)来进行数据的传递,而Struts2框架可以帮助我们很好地处理JSON数据。而Ext JS是一款优秀的JavaScript框架,可以让我们轻松地构建富客户端的Web应用程序。那么在处理JSON数据时,Struts2框架和Ext JS的配合使用,可以为我们的Web应用程序带来很多便利。

安装配置

首先,我们需要下载并安装Struts2框架和Ext JS库。在这里,我以Struts2.3.24版本和Ext JS 6.0.0版本为例,介绍如何配置这两个库。

Struts2框架

首先,我们需要下载Struts2框架,可以从官网(http://struts.apache.org/)下载,或使用Maven等构建工具进行下载。下载完成后,我们需要将其部署到Web容器中。如果你使用的是Tomcat容器,只需要将struts2-core-xxx.jar和其它相关的jar文件复制到WEB-INF/lib目录下即可。

Ext JS库

下载完Ext JS库后,我们需要将其添加到Web应用程序中。可以通过以下方式添加:

  1. 将Ext JS库文件复制到Web应用程序文件夹中,如WebRoot/extjs文件夹下;

  2. 在html文件中引入Ext JS库文件。

以上两种方式中,第二种方式更为简便,只需在html文件中添加如下代码即可:

<link rel="stylesheet" href="extjs/classic/theme-classic/resources/theme-classic-all.css">
<script src="extjs/ext-all.js"></script>

其中,theme-classic-all.css是Ext JS的主题文件,ext-all.js是主要的库文件。

示例1:使用Struts2框架和Ext JS获取JSON数据并解析

首先,我们需要在Struts2框架中编写一个Action类,用于返回JSON数据,代码如下:

public class JsonAction extends ActionSupport {
    private Map<String, String> data;

    @Override
    public String execute() {
        data = new HashMap<String, String>();
        data.put("name", "张三");
        data.put("age", "20");
        data.put("gender", "男");
        return SUCCESS;
    }

    public Map<String, String> getData() {
        return data;
    }

    public void setData(Map<String, String> data) {
        this.data = data;
    }
}

在该Action类中,我们定义了一个Map类型的变量data,用于存放要返回的JSON数据。在execute方法中,我们将要返回的JSON数据存放到data变量中,并返回SUCCESS。

接下来,我们在JSP页面中使用Ext JS框架来获取该JSON数据。代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Ext JS获取JSON数据示例</title>
    <link rel="stylesheet" href="extjs/classic/theme-classic/resources/theme-classic-all.css">
    <script src="extjs/ext-all.js"></script>
    <script>
        Ext.onReady(function(){
            Ext.Ajax.request({
                url: 'json.action',
                success: function(response, opts) {
                    var obj = Ext.decode(response.responseText);
                    console.dir(obj);
                },
                failure: function(response, opts) {
                    console.log('server-side failure with status code ' + response.status);
                }
            });
        });
    </script>
</head>
<body></body>
</html>

在该页面中,我们使用Ext JS框架中的Ajax类,来向后端服务器发送请求,并获得返回的JSON数据。其中,url参数为要请求的Action类的名称,即我们上面定义的JsonAction类的名称;success和failure分别为请求成功和请求失败后执行的函数。在success函数中,我们将返回的JSON数据解析成对象,并将其输出到浏览器的开发者工具的console中,方便调试。我们可以在控制台看到输出的内容信息:

Object {name: "张三", age: "20", gender: "男"}

示例2:使用Struts2框架和Ext JS将表单数据转化成JSON数据并提交

假设我们有一个表单,包含姓名、年龄、性别等字段,我们希望使用Ext JS将表单数据转化成JSON数据,并提交到后端服务器中。做法如下:

首先,我们需要在JSP页面中定义前端表单,并使用Ext JS框架监听表单的提交事件,将表单数据转化成JSON格式并提交到后端服务器。代码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Ext JS将表单数据转化成JSON数据并提交示例</title>
    <link rel="stylesheet" href="extjs/classic/theme-classic/resources/theme-classic-all.css">
    <script src="extjs/ext-all.js"></script>
    <script>
        Ext.onReady(function(){
            Ext.create('Ext.form.Panel', {
                title: '用户信息',
                renderTo: Ext.getBody(),
                width: 300,
                items: [{
                    xtype: 'textfield',
                    fieldLabel: '姓名',
                    name: 'name'
                }, {
                    xtype: 'textfield',
                    fieldLabel: '年龄',
                    name: 'age'
                }, {
                    xtype: 'radiogroup',
                    fieldLabel: '性别',
                    items: [{
                        boxLabel: '男',
                        name: 'gender',
                        inputValue: '男'
                    }, {
                        boxLabel: '女',
                        name: 'gender',
                        inputValue: '女'
                    }]
                }],
                buttons: [{
                    text: '提交',
                    handler: function() {
                        var form = this.up('form').getForm();
                        if (form.isValid()) {
                            var values = form.getValues();
                            var jsonData = Ext.JSON.encode(values);
                            Ext.Ajax.request({
                                url: 'jsonSubmit.action',
                                method: 'POST',
                                params: jsonData,
                                success: function(response, opts) {
                                    console.log(response.responseText);
                                },
                                failure: function(response, opts) {
                                    console.log('server-side failure with status code ' + response.status);
                                }
                            });
                        }
                    }
                }]
            });
        });
    </script>
</head>
<body></body>
</html>

在该页面中,我们首先定义了一个form.Panel类型的表单,并定义了三个字段:姓名、年龄、性别。随后,我们在监听表单的提交事件处理函数中,首先通过form.getValues()方法获取表单中填写的数据,并将其转化成JSON数据格式;然后,我们使用Ext.Ajax.request()方法将JSON数据提交到后端服务器中。

在后端服务器中,我们需要编写一个Action类,用于处理该JSON数据。代码如下:

public class JsonSubmitAction extends ActionSupport {
    private String data;

    @Override
    public String execute() throws Exception {
        System.out.println(data);
        return SUCCESS;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

在该Action类中,我们定义了一个data变量,用于接收前端传过来的JSON数据。在execute()方法中,我们将该JSON数据输出到控制台中。

综上所述,使用Struts2框架和Ext JS处理JSON数据,可以很好地帮助我们完成前后端数据交互的过程,提高Web应用程序的开发效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的Struts2框架配合Ext JS处理JSON数据的使用示例 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot 中常用注解及各种注解作用

    来详细讲解一下SpringBoot中常用注解及各种注解作用的攻略。 1. @SpringBootApplication 这是一个复合注解,包含了@Configuration、@EnableAutoConfiguration和@ComponentScan三个注解。 @Configuration:表示这是一个配置类,可以用来替代xml配置文件。 @EnableA…

    Java 2023年5月15日
    00
  • Java应用打包成Docker镜像

    下面是Java应用打包成Docker镜像的完整攻略: 1. 准备工作 在开始之前,需要先确保已经安装好了Docker和Java开发环境。 2. 编写Dockerfile Dockerfile是定义Docker镜像构建过程的脚本文件。创建一个名为Dockerfile的文件并编写如下内容: FROM openjdk:8-jdk-alpine ADD target…

    Java 2023年5月26日
    00
  • Java循环队列原理与用法详解

    Java循环队列原理与用法详解 什么是循环队列 循环队列是一种经典的队列实现方式,它的特点是:队列的头尾相连,形成了一个环形结构。当队列满时,新的数据会从队列头部开始覆盖旧的数据。因此,循环队列在使用过程中,需要记录队列的头部和尾部指针,以便能够正确地判断队列是空还是满,以及在队列中添加、删除元素时,正确地定位到队列的头部和尾部。 基本实现方法 在Java中…

    Java 2023年5月26日
    00
  • spring Security的自定义用户认证过程详解

    【Spring Security的自定义用户认证过程详解】 介绍 Spring Security是一个流行的安全框架,用于保护Web应用程序和REST API。Spring Security通过AuthenticationManager接口处理认证过程。该接口负责通过认证用户提供的凭据,最终生成一个用于描述身份验证后的用户认证信息 — Authenticat…

    Java 2023年5月20日
    00
  • Springboot内外部logback多环境配置详解

    针对“Springboot内外部logback多环境配置详解”这个主题,以下是完整的攻略: 简介 本文主要是介绍如何在Springboot应用中使用logback日志框架,并实现根据不同环境配置不同的日志输出。 前提条件 在开始之前,需要保证你已经: 了解并掌握了Springboot应用开发和使用过程; 能够使用logback进行日志输出; 对logback…

    Java 2023年5月20日
    00
  • 使用SpringBoot自定义starter的完整步骤

    使用SpringBoot自定义starter可以方便我们在多个项目中重复使用一些公共的依赖或配置。下面是使用SpringBoot自定义starter的完整步骤: 1. 创建maven项目 <groupId>com.example</groupId> <artifactId>custom-starter</artifa…

    Java 2023年5月15日
    00
  • Java数组与字符串深入探索使用方法

    Java数组与字符串深入探索使用方法 一、数组 1. 定义 Java数组是一个可以容纳固定数量元素的容器,它可以被认为是一个有序的元素列表。数组中的每个元素都有唯一的索引号来标识它们在数组中的位置。数组可以是任何类型,包括基本类型和引用类型。 2. 声明 在Java中,声明一个数组需要指定如下信息:- 数组的类型:数组中元素的类型(int、double、St…

    Java 2023年5月26日
    00
  • JVM的内存分配及各种常量池的区别(静态常量池、运行时常量池、字符串常量池)

    JVM内存分配 先了解下JVM中的内存分配,此处以hotspot vm为例(官方jdk采用的vm) 程序计数器 栈 1. 虚拟机栈 2. 本地方法栈 Java堆 堆内存是各个线程共享的区域 方法区 它用于存储已经被虚拟机加载的类信息、常量、静态变量、即编译器编译后的代码等数据。静态变量、常量在方法区,所有方法,包括静态和非静态的,也在方法区 这里解释一下方法…

    Java 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部