jsp 语言 JSP 处理表单提交的 JSON 嵌套数据示例

JSP阿木 发布于 2025-07-03 12 次阅读


JSP 处理表单提交的 JSON 嵌套数据示例

随着互联网技术的不断发展,前端与后端的数据交互变得越来越复杂。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于各种编程语言中。在Java Web开发中,JSP(JavaServer Pages)技术常用于创建动态网页。本文将围绕JSP处理表单提交的JSON嵌套数据这一主题,通过一个示例来展示如何实现这一功能。

在Web应用中,表单提交是用户与服务器交互的重要方式。随着前端技术的发展,表单数据结构越来越复杂,常常包含嵌套的数据结构。JSP作为Java Web开发的重要技术之一,如何处理这些嵌套的JSON数据成为了一个值得关注的问题。

示例需求

假设我们有一个简单的在线调查表单,用户需要填写基本信息(如姓名、年龄)以及多个问题选项(如性别、兴趣爱好)。表单提交的数据结构如下:

json

{


"基本信息": {


"姓名": "张三",


"年龄": 25


},


"问题选项": [


{


"问题": "性别",


"选项": "男"


},


{


"问题": "兴趣爱好",


"选项": ["篮球", "足球", "编程"]


}


]


}


我们的目标是使用JSP技术处理这个JSON嵌套数据,并将其存储到数据库中。

技术准备

在开始编写代码之前,我们需要准备以下技术:

1. Java开发环境(如JDK、IDE等)

2. Web服务器(如Apache Tomcat)

3. 数据库(如MySQL)

4. JSP开发库(如JSTL、EL等)

实现步骤

1. 创建JSP页面

我们需要创建一个JSP页面,用于展示表单并接收用户提交的数据。以下是表单页面的代码示例:

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<html>


<head>


<title>在线调查表单</title>


</head>


<body>


<form action="submitForm.jsp" method="post" id="surveyForm">


<div>


<label for="name">姓名:</label>


<input type="text" id="name" name="基本信息.姓名" required>


</div>


<div>


<label for="age">年龄:</label>


<input type="number" id="age" name="基本信息.年龄" required>


</div>


<div>


<label for="gender">性别:</label>


<select id="gender" name="问题选项.性别">


<option value="男">男</option>


<option value="女">女</option>


</select>


</div>


<div>


<label for="hobbies">兴趣爱好:</label>


<input type="text" id="hobbies" name="问题选项.兴趣爱好" required>


</div>


<button type="submit">提交</button>


</form>


<script>


document.getElementById('surveyForm').onsubmit = function() {


var formData = new FormData(this);


var data = {};


formData.forEach((value, key) => {


var keys = key.split('.');


var obj = data;


for (var i = 0; i < keys.length - 1; i++) {


obj = obj[keys[i]];


}


obj[keys[keys.length - 1]] = value;


});


console.log(JSON.stringify(data));


return false;


};


</script>


</body>


</html>


2. 创建处理表单提交的JSP页面

在用户提交表单后,我们需要创建一个处理表单提交的JSP页面,用于接收JSON数据并存储到数据库中。以下是处理页面的代码示例:

jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


<%@ page import="java.sql." %>


<html>


<head>


<title>处理表单提交</title>


</head>


<body>


<%


// 获取请求参数


String jsonData = request.getParameter("jsonData");


// 将JSON字符串转换为Java对象


JSONObject jsonObject = new JSONObject(jsonData);


// 获取基本信息


String name = jsonObject.getJSONObject("基本信息").getString("姓名");


int age = jsonObject.getJSONObject("基本信息").getInt("年龄");


// 获取问题选项


JSONArray hobbiesArray = jsonObject.getJSONArray("问题选项");


String gender = hobbiesArray.getJSONObject(0).getString("选项");


List<String> hobbies = new ArrayList<>();


for (int i = 1; i < hobbiesArray.length(); i++) {


hobbies.add(hobbiesArray.getJSONObject(i).getString("选项"));


}


// 存储到数据库


Connection conn = null;


PreparedStatement pstmt = null;


try {


// 加载数据库驱动


Class.forName("com.mysql.jdbc.Driver");


// 连接数据库


conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");


// 创建SQL语句


String sql = "INSERT INTO survey (name, age, gender, hobbies) VALUES (?, ?, ?, ?)";


pstmt = conn.prepareStatement(sql);


pstmt.setString(1, name);


pstmt.setInt(2, age);


pstmt.setString(3, gender);


pstmt.setString(4, String.join(",", hobbies));


// 执行SQL语句


pstmt.executeUpdate();


} catch (Exception e) {


e.printStackTrace();


} finally {


// 关闭数据库连接


if (pstmt != null) {


try {


pstmt.close();


} catch (SQLException e) {


e.printStackTrace();


}


}


if (conn != null) {


try {


conn.close();


} catch (SQLException e) {


e.printStackTrace();


}


}


}


%>


<p>表单提交成功!</p>


</body>


</html>


3. 配置数据库

在处理页面中,我们需要配置数据库连接信息。以下是MySQL数据库的配置示例:

java

String url = "jdbc:mysql://localhost:3306/mydb";


String username = "root";


String password = "password";


4. 部署和测试

将以上代码部署到Web服务器(如Apache Tomcat)中,并启动服务器。在浏览器中访问表单页面,填写相关信息并提交表单。在控制台查看数据库中的数据,以验证表单提交是否成功。

总结

本文通过一个示例展示了如何使用JSP技术处理表单提交的JSON嵌套数据。在实际开发中,我们可以根据需求对代码进行修改和优化。掌握JSP处理JSON数据的方法,有助于我们更好地应对复杂的Web应用开发。