【发布时间】:2019-08-23 16:21:04
【问题描述】:
我必须为我的extjs 应用程序生成一个二维数组。
我有来自 servlet 的 mysql 询问,但我需要将这些值保存到 javascript 中的二维数组中。
我想到要做的事情是将 servlet(使用 tomcat)中的二维数组保存在我的jsp 页面中的二维数组中,我在其中使用extjs 的脚本。
我的问题是了解如何从 servlet 调用 jsp 页面我需要的变量并将她的值保存在 javascript 变量中。
示例:
Servlet
package connect;
import java.awt.List;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
import java.util.Arrays;
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.mysql.jdbc.Driver;
import jdk.nashorn.internal.runtime.JSONFunctions;
@WebServlet("/learn")
public class iServlet_debug_1 extends HttpServlet {
private static final long serialVersionUID = 1L;
public iServlet_debug_1() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String connectionString = "jdbc:mysql://localhost:3306/mydb?user=root&password=pass";
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection connection = null;
try {
connection = DriverManager.getConnection(connectionString);
Statement stm = connection.createStatement();
ResultSet rs = ((java.sql.Statement) stm).executeQuery("select * from romanzi");
//ArrayList<ArrayList<Object>> storeArray = new ArrayList<ArrayList<Object>>();
//String[][] storeArray;
String storeArray = null;
//int n = 0;
//int m = 0;
while (rs.next()) {
//first method
/*ArrayList<Object> arr = new ArrayList<Object>();
ArrayList<Object> arr = new ArrayList<Object>();
arr.add(rs.getInt("id"));
arr.add(rs.getString("titolo"));
arr.add(rs.getString("ISBN"));
arr.add(rs.getString("genere"));
arr.add(rs.getInt("Npagine"));
arr.add(rs.getInt("editore"));
storeArray.add(arr);*/
//second method
/*storeArray[n][m]= rs.getString("id");
m++;
storeArray[n][m]= rs.getString("titolo");
m++;
storeArray[n][m]= rs.getString("ISBN");
m++;
storeArray[n][m]= rs.getString("genere");
m++;
storeArray[n][m]= rs.getString("Npagine");
m++;
storeArray[n][m]= rs.getString("editore");
m=0;
n++;*/
storeArray += "["+rs.getString("id")
+","+rs.getString("titolo")
+","+rs.getString("ISBN")
+","+rs.getString("genere")
+","+rs.getString("Npagine")
+","+rs.getString("editore")
+"]";
if(rs.next())
{
storeArray+= ",";
rs.previous();
}
}
response.setContentType("text/plain"); // sets the content type
response.setCharacterEncoding("UTF-8"); // sets the encoding
PrintWriter out = response.getWriter();
out.append(storeArray); // writes the value of the String to the response
}
catch (SQLException e) {
e.printStackTrace();
}
catch (Exception e) {
PrintWriter err = response.getWriter();
err.print("<html><head></head><body>" + e.getMessage() + "</body></html>");
}
finally {
try {
if (connection != null)
connection.close();
} catch (SQLException e) {
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Javascript
var temp = (storeArray Servlet variable);
var finalArray = JSON.parse("[" + temp + "]");
or
var finalArray = eval("[" + temp + "]");
我需要的结果是这样的:
var finalArray = [
['value10','value11','value12'],
['value20','value21','value22'],
['value30','value31','value32']
];
对于下一个实现,我需要了解如何检索 servlet 值并将其转换为 jsp 页面的 javascript 变量 onload。
基本上:
- 我必须传递:从 servlet 到 javascript 的数组变量数组(因为我需要允许我从 servlet 变量和 javascript 变量进行通信的方法)
- 或从 servlet 到 javascript 变量的字符串,然后拆分为数组数组
就是这样。
在此先感谢并为我的“不太好”的英语感到抱歉。
【问题讨论】:
-
不完全...只有一个用于将元素维度 java 保存在同样的 javascript 中。我的数组是二维的,servlet 和 javascript 之间的所有数据传输部分都丢失了....无论如何,谢谢。
标签: javascript mysql jsp servlets