JSP 解析 ExtJS 提交的 JSON 数据 实现步骤与依赖包

🕒 2026-01-19 17:09:28
📁 JSON学习教程
作者:JSONLA小编

一、前置核心知识点

✅ ExtJS.Ajax 传 JSON + JSP 接收 JSON 核心说明

本文实现的是 前端 ExtJS 通过 Ajax 提交 JSON 格式数据 → 后端 JSP 页面接收并解析 JSON 数据 → 处理业务逻辑后返回响应结果 的完整交互流程。ExtJS 的Ext.Ajax.request()与 jQuery 的$.ajax()原理一致,都是前端异步提交数据的核心方式,区别仅在于框架封装的语法不同,但提交 JSON 数据的本质相同:前端将 JSON 对象作为请求体提交,后端通过流的方式读取请求体中的 JSON 字符串,再解析为可操作的 JSON 对象。同时 JSP 作为 Java 服务端动态页面技术,本身具备解析 Java 代码的能力,是 JavaWeb 开发中接收前端异步请求、处理业务逻辑的常用载体。

✅ 核心前提:必须引入的依赖包

JSON 数据接收解析的特定过程,必须导入指定的 Java 数据包,缺一不可,否则会直接出现JSONObject相关报错、无法解析 JSON 数据,甚至报类找不到异常;所有 jar 包需放入项目的WEB-INF/lib目录下:

  1. commons-lang.jar
  2. commons-beanutils.jar
  3. commons-collections.jar
  4. commons-logging.jar
  5. ezmorph.jar
  6. json-lib-2.2.2-jdk15.jar
  • 上述 jar 包是net.sf.json包的核心依赖(本文中JSONObject就是该包下的核心类),json-lib是 Java 中经典的 JSON 解析工具,专门用于 JSON 字符串与 Java 对象的互转;
  • 包的版本匹配:json-lib-2.2.2-jdk15.jar 适配 JDK1.5 及以上版本,是 JavaWeb 开发中兼容性最高的版本;
  • 报错说明:如果缺少任意一个依赖包,会触发ClassNotFoundException或NoClassDefFoundError,直接导致 JSON 解析代码执行失败。

二、JSP 接收 ExtJS.Ajax 传递 JSON 数据的核心实现代码

✅ 本段核心知识点(重中之重,解析每一步原理)

  1. 为什么用request.getReader()读取数据?ExtJS.Ajax 提交 JSON 数据时,是将 JSON 对象放入HTTP 请求体中提交(POST 方式),而非拼接在 URL 后的 GET 参数,因此无法通过request.getParameter("userName")获取参数,必须通过请求体的字符输入流读取完整的 JSON 字符串,这是接收 JSON 请求体的唯一正确方式。
  2. StringBuffer 拼接的作用前端提交的 JSON 字符串可能被拆分为多行存储在请求流中,in.readLine()是按行读取,通过StringBuffer循环拼接,能保证获取完整无缺失的 JSON 字符串,避免因数据截断导致 JSON 解析失败。
  3. 核心解析方法JSONObject.fromObject()该方法是net.sf.json包的核心 API,作用是将「标准 JSON 格式字符串」解析为JSONObject对象,解析后可通过getString("键名")、getInt("键名")等方法,快速获取 JSON 中的指定字段值,语法简洁高效;注意:该方法要求传入的字符串必须是标准 JSON 格式(键名双引号、无语法错误),否则会抛出 JSON 解析异常。
  4. 响应返回规则response.getWriter().write(msg) 是将处理结果以纯文本格式返回给前端 ExtJS,前端在 Ajax 的回调函数中可直接获取该文本结果,完成交互闭环;如果需要返回 JSON 格式的响应结果,也可以拼接 JSON 字符串后返回,如response.getWriter().write("{\"code\":200,\"msg\":\"登录成功\"}")。
  5. 编码说明JSP 页面顶部配置contentType="text/html; charset=UTF-8"和pageEncoding="UTF-8",能保证前端提交的中文 JSON 数据和后端返回的中文结果不会出现乱码,是处理中文数据的必配项。

三、JSON 数据接收的特定过程

必须的数据包:

1.commons-lang.jar

2.commons-beanutils.jar

3.commons-collections.jar

4.commons-logging.jar

5.ezmorph.jar6.json-lib-2.2.2-jdk15.jar

否则 JSONObject 报错,并且不能接收。

四、JSP 基础介绍与核心知识点

✅ JSP 是什么?

JSP(Java Server Pages) 是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP 技术有点类似 ASP 技术,它是在传统的网页 HTML 文件 (.htm,.html) 中插入 Java 程序段 (Scriptlet) 和 JSP 标记 (tag),从而形成 JSP 文件 (*.jsp)。 用 JSP 开发的 Web 应用是跨平台的,既能在 Linux 下运行,也能在其他操作系统上运行。

✅ JSP 的简单介绍

JSP 技术使用 Java 编程语言编写类 XML 的 tags 和 scriptlets,来封装产生动态网页的处理逻辑。网页还能通过 tags 和 scriptlets 访问存在于服务端的资源的应用逻辑。JSP 将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于 Web 的应用程序的开发变得迅速和容易。 JSP (JavaServer Pages) 是一种动态页面技术,它的主要目的是将表示逻辑从 Servlet 中分离出来。 Web 服务器在遇到访问 JSP 网页的请求时,首先执行其中的程序段,然后将执行结果连同 JSP 文件中的 HTML 代码一起返回给客户端。插入的 Java 程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。 JSP 与 JavaServlet 一样,是在服务器端执行的,通常返回给客户端的就是一个 HTML 文本,因此客户端只要有浏览器就能浏览。 JSP 的 1.0 规范的最后版本是 1999 年 9 月推出的,12 月又推出了 1.1 规范。目前较新的是 JSP1.2 规范,JSP2.0 规范的征求意见稿也已出台。 JSP 页面由 HTML 代码和嵌入其中的 Java 代码所组成。服务器在页面被客户端请求以后对这些 Java 代码进行处理,然后将生成的 HTML 页面返回给客户端的浏览器。Java Servlet 是 JSP 的技术基础,而且大型的 Web 应用程序的开发需要 Java Servlet 和 JSP 配合才能完成。JSP 具备了 Java 技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。 自 JSP 推出后,众多大公司都支持 JSP 技术的服务器,如 IBM、Oracle、Bea 公司等,所以 JSP 迅速成为商业应用的服务器端语言。 JSP 可用一种简单易懂的等式表示为:HTML+Java+JSP 标记 = JSP。

✅ JSP 的运行原理

JSP 本质是Servlet 的封装,当客户端第一次访问 JSP 页面时,Web 服务器(如 Tomcat)会将 JSP 文件编译为 Java Servlet 的.java源文件,再编译为.class字节码文件,之后所有的请求都由该 Servlet 处理;这也是 JSP 能在服务端执行 Java 代码、操作请求和响应对象的核心原因,本文中解析 JSON 的 Java 代码,本质就是在 Servlet 中执行的服务端逻辑。

五、JSP 技术的强势

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP.NET的局限性 JSP 的优势是显而易见的。(3)强大的可伸缩性。从只有一个小的 Jar 文件就可以运行 Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台 Application 进行事务处理,消息处理,一台服务器到无数台服务器,Java 显示了一个巨大的生命力。(4)多样化和功能强大的开发工具支持。这一点与 ASP 很像,Java 已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。(5)支持服务器端组件。web 应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供 web 页面调用,以增强系统性能。JSP 可以使用成熟的 JAVA BEANS 组件来实现复杂商务功能。

✅ 适配本文 JSON 交互场景

JSP 在接收前端 JSON 数据的场景中,优势尤为明显:无需额外配置 Servlet 映射,直接在 JSP 页面编写 Java 代码即可完成请求解析、业务处理、响应返回,开发流程简洁,无需繁琐的配置文件,适合快速开发简单的异步请求接口。

六、JSP 技术的弱势

(1) 与 ASP 一样,Java 的一些优势正是它致命的问题所在。正是由于为了跨平台的功能,为了极度的伸缩能力,所以极大的增加了产品的复杂性。 (2) Java 的运行速度是用 class 常驻内存来完成的,所以它在一些情况下所使用的内存比起用户数量来说确实是 “最低性能价格比” 了。从另一方面,它还需要硬盘空间来储存一系列的.java 文件和.class 文件,以及对应的版本文件。

✅ 对应本文开发场景说明

在接收 JSON 数据的场景中,JSP 的劣势主要体现在:如果是复杂的业务逻辑(如多表数据库操作、复杂 JSON 解析),将所有 Java 代码写在 JSP 的<% %>脚本段中,会导致代码耦合度高、可读性差、不易维护;这种场景下更推荐使用「Servlet + Service + DAO」的分层架构处理请求,JSP 仅负责页面展示。

相关推荐

正在加载... ...