从mysql数据库中读取出数据并封装成json,显示在jsp页面上(数据库中的数据值中带了双引号和斜杠等这些特殊字符)
下面直接po截图和代码
如下图:JSONArray对象会自动的处理双引号和斜杠等这些特殊字符
testJson.jsp页面
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!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=utf-8">
<title>从mysql数据库中读取出数据并封装成json,显示在jsp页面上(数据库中的数据值中带了双引号和斜杠等这些特殊字符)</title>
<style type="text/css">
div {
background-color: #71C671;
border-radius:5px;
border:4px solid green;
}
</style>
<script type="text/javascript">
var testJson = {"userName":"t\om"};
//经过测试,会打印出tom
console.log(testJson.userName);
//从request中取出json数据
var myJsonStr = ${requestScope.jsonStr}
window.onload = function() {
// alert(myJsonStr.length);
var div1Node = document.getElementById("div1");
for (var index = 0; index < myJsonStr.length; index++) {
var inputNode = document.createElement("input");
var brNode = document.createElement("br");
var br2Node = document.createElement("br");
inputNode.type = "text";
inputNode.size = 50;
inputNode.value = myJsonStr[index];
div1Node.appendChild(inputNode);
div1Node.appendChild(brNode);
div1Node.appendChild(br2Node);
}
}
//给文本框赋值
function setInputNodeValue(){
var inputNode = document.getElementById("input1");
inputNode.size = 60;
//节点.value这种写法,效果是,直接给节点赋值(不会给节点添加value属性)
inputNode.value = "江西省赣州市于都县";
}
//给文本框赋值
function setInput2NodeValue(){
var input2Node = document.getElementById("input2");
input2Node.setAttribute("size", "60");
//节点.setAttribute("value", "")这种写法,效果是,不但给节点赋值,还会给节点添加value属性
input2Node.setAttribute("value", "我的家乡在江西省赣州市于都县");
}
</script>
</head>
<body>
<h2>从mysql数据库中读取出数据并封装成json,显示在jsp页面上(数据库中的数据值中带了双引号和斜杠等这些特殊字符)</h2>
<div id="div1"></div>
<input type="button" onclick="setInputNodeValue()" value="点击我,给文本框赋值">
<input type="text" id="input1">
<br>
<input type="button" onclick="setInput2NodeValue()" value="点击我,给文本框赋值">
<input type="text" id="input2">
</body>
</html>
下面是servlet(servlet名是TestJson)
package com.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.test.json.DBData;
import net.sf.json.JSONArray;
/**
* 从mysql数据库中读取出数据并封装成json
*/
@WebServlet("/TestJson")
public class TestJson extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DBData dbData = new DBData();
List<String> data = dbData.getDBData();
JSONArray jsonArray = JSONArray.fromObject(data);
System.out.println("============从mysql数据库中读取出数据,封装成json============");
System.out.println(jsonArray.isEmpty());
String jsonStr = jsonArray.toString();
System.out.println(jsonStr);
request.setAttribute("jsonStr", jsonStr);
//转发到testJson.jsp页面
request.getRequestDispatcher("testJson.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
下面是DBData类
package com.test.json;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
//从mysql数据库中读取出数据并封装成json
public class DBData {
public List<String> getDBData() {
List<String> list = new ArrayList<String>();
String connStr = "jdbc:mysql://localhost:3306/myemployees";
// String sql = "select last_name, salary, email from employees";
String sql = "select * from book";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection(connStr, "root", "root");
System.out.println("数据库连接=" + connection);
PreparedStatement prepareStatement = connection.prepareStatement(sql);
ResultSet rs = prepareStatement.executeQuery();
int col = rs.getMetaData().getColumnCount();
System.out.println("============================");
while (rs.next()) {
String str = rs.getString("bname");
list.add(str);
System.out.println(str);
}
System.out.println("============================");
rs.close();
prepareStatement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
// System.out.println("list = " + list);
// System.out.println("============从mysql数据库中读取出数据,封装成json============");
// JSONArray jsonArray = JSONArray.fromObject(list);
// System.out.println(jsonArray.isEmpty());
// System.out.println(jsonArray.toString());
return list;
}
}