mysql数据用json对象查询并且存入js数组

本文展示了如何在Java Web应用中通过XMLHttpRequest与Servlet进行交互,从MySQL数据库查询数据并将其转换为JSON对象。在JavaScript端,数据被解析并显示在页面上,同时存在一个将查询结果存储到数组并遍历展示的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:mysql5.0.22、eclipse j2ee LUNA

先看mysql数据


配置input.jsp查询条件的jsp文件(并且反馈回的页面也是input.jsp文件、ay数组遍历出的结果)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form id="myForm">
userName:<input type="text" name="id" /> <input type="button"
value="submit" id="btn">
</form>
<div >
<div id="show_name"></div>
<div id="show_age"></div>
<div id="show_addr"></div>
</div>


</body>
<script type="text/javascript">
    
var oBtn = document.getElementById("btn");
oBtn.onclick = function() {
var oInput = document.getElementsByTagName("input")[0];
var id = oInput.value;
//location.href = "/servletFrame/qc?id=" + id;


var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var json = JSON.parse(xmlhttp.responseText);
document.getElementById("show_name").innerHTML = json.name;
document.getElementById("show_age").innerHTML = json.age;
document.getElementById("show_addr").innerHTML = json.addr;
}
var ay=[json.name,json.age,json.addr];
for(var i=0;i<ay.length;i++){

document.write(ay[i]+" ");
}
}
xmlhttp.open("GET", "/servletFrame/QcServlet?id=" + id, true);
xmlhttp.send();


}
/* oBtn.onclick = function(){
document.getElementById("myForm").submit();
} */
</script>
</html>

配置QcServlet.java文件(注解方式)

@WebServlet("/QcServlet")
public class QcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
Map<String, Object> map = new Jdbc828().get(id);


request.setAttribute("list", map);
String json = JSON.toJSONString(map);
response.setHeader("Content-type", "text/html;charset=UTF-8"); 
response.getWriter().write(json);




// request.getRequestDispatcher("/jsp/show.jsp")
// .forward(request, response);
}

}

配置数据库连接Jdbc.java

public class Jdbc828 {
// 声明Connection对象
java.sql.Connection con;
// 驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名mydata
String url = "jdbc:mysql://localhost:3306/zdy";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "root";
// 结果集
java.sql.ResultSet rs;

java.sql.Statement statement=null;


public Map<String, Object> get(String userId) {
// 遍历查询结果集
try {
// 加载驱动程序
Class.forName(driver);
// 1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url, user, password);
// 2.创建statement类对象,用来执行SQL语句!!
statement = con.createStatement();
// 要执行的SQL语句
String sql = "SELECT * FROM student WHERE idcard="+userId;
// 3.ResultSet类,用来存放获取的结果集!!
rs = statement.executeQuery(sql);
List<Map>list=new ArrayList<Map>();
Map<String, Object> m = null;
while (rs.next()) {
String idcard = rs.getString("idcard");
String name = rs.getString("name");
String age = rs.getString("age");
String gender = rs.getString("gender");
String addr = rs.getString("addr");
m = new HashMap<String, Object>();
m.put("idcard", idcard);
m.put("name", name);
m.put("age", age);
m.put("gender", gender);
m.put("addr", addr);
list.add(m);
}
return m;
} catch (Exception e) {
System.out.println("Sorry,can`t find the Driver!");
} finally {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
statement.close();
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


return null;
}
}

注意查询结果,并不是json对象输出的结果,而是ay数组的遍历出来的结果



这里面用的都是statement看本帖的同学可以考虑下这个对象的缺点同样可以试着将它换成什么。。。

### 将JSON格式数据存储到MySQL数据库的方法 为了将JSON格式的数据存储到MySQL数据库中,可以采用多种方法来实现这一目标。首先,在现代版本的MySQL(自5.7起),已经原生支持JSON数据类型的字段[^1]。 #### 创建表结构以适应JSON数据 创建一个能够容纳JSON对象的新表格或修改现有表格是一个必要的起点。下面展示了一个简单的SQL语句用于定义新表`my_table`,其中包含名为`json_column`的列用来保存JSON格式的信息: ```sql CREATE TABLE my_table ( id INT AUTO_INCREMENT PRIMARY KEY, json_column JSON NOT NULL ); ``` 此命令会建立一张具有自动增长ID以及专门用于存放JSON文档型数据的列的表单。 #### 插入JSON数据至指定位置 一旦有了适当设计好的模式之后,则可以通过INSERT INTO语法向上述提到过的`json_column`里边填充实际的内容。这里给出了一条示范性的SQL指令,它把一个具体的JavaScript对象表示法字符串作为参数传递进去并完成记录新增操作: ```sql INSERT INTO my_table (json_column) VALUES ('{"key": "value", "arrayExample": [1, 2, 3], "nullData": null}'); ``` 这段代码片段展示了怎样利用标准SQL INSERT语句配合合法的JSON串一起工作,从而达到持久化复杂嵌套结构的目的。 #### 使用控制器处理来自数组JSON输入 当涉及到通过应用程序层面上的应用编程接口(API),比如RESTful服务端点接收到来自客户端提交过来的一组待入库项时,通常会在服务器侧编写相应的业务逻辑处理器——即所谓的“控制者”。在这个上下文中,“控制者”的职责之一就是解析传入请求体中的payload部分,并将其转换成适合存入关系型数据库的形式。对于PHP Laravel框架而言,这可能意味着要在一个特定路由对应的Action函数内部执行如下所示的操作流程: ```php public function storeJsonData(Request $request){ foreach($request->input('data') as $item){ MyModel::create(['json_column' => $item]); } } ``` 以上示例假设前端发送的是一个多维关联数组形式的数据集给后端API网关;而后者的任务则是遍历该集合并将每一个成员映射为目标模型实例属性值之前先验证其合法性再实施批量写入动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值