我想获取所有表行并将它们添加到hashmap数组中,然后将它们转换为json对象,以使用ajax和jquery发送到jsp页面。我在jsp页面中显示内容时遇到问题。 我已经设法编写下面的代码,需要帮助来纠正/改进它,我很困惑如何在jsp页面中显示它。我是jquery和json的初学者。
try {
String res = request.getParameter("hello");
String user = "";
String pass = "";
String port = "";
String dbname = "";
String host = "";
String driver = "oracle.dbc.driver.OracleDriver";
Connection con;
PreparedStatement ps;
ResultSet rs;
String json = null;
String url = "jdbc:oracle:thin:@"+host+":"+port+":"+dbname;
Map<String,String> map = new HashMap<String,String>();
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
try{
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url,user,pass);
ps = con.prepareStatement("select * from employee");
rs = ps.executeQuery();
while(rs.next()){
map.put("name", rs.getString(1));
map.put("id", rs.getString(2));
map.put("salary",rs.getString(3));
list.add(map);
}
json = new Gson().toJson(list);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}catch(Exception e){
}
} finally {
out.close();
}
的index.jsp
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function(){
$("#push").click(function(){
var value = $("#t").val();
$.post('jsonServlet',{hello:value},function(data){
// ??
// ??
// ??
});
});
});
</script>
</head>
<body style="position: absolute;min-height: 700px;min-width: 1300px">
<form>
<input type="button" value="PushMe" id="push">
<input type="text" id="t" value="my data">
<div style="position: absolute;height: 50%;width: 60%;" id="myDiv">
</div>
</form>
</body>
在jsp页面中需要帮助才能在div中显示哈希映射的内容... 稍后我将使用文本框更改div以存储单个列值,以便用户可以修改表的内容并再次更新表行。
需要帮助
答案 0 :(得分:2)
使用地图看起来很新,改为做一个类:
class Person{
public final String name;
public final String id;
public final String salary;
public Person(String name, String id, String salary){
this.name=name;
this.id=id;
this.salary=salary;
}
}
不需要是公共类,您可以将它放在servlet java文件中。 Gson知道如何将类序列化为json。
从数据库中读取:
while(rs.next()){
list.add(new Person(rs.getString(1),rs.getString(2),rs.getString(3)));
}
在你的javascript中:
$.post(
'jsonServlet', // <- may screw up path here
{ hello: value },
function(data){
var table = '<table>';
for(var i = data.length, l = data.length; i>0; i--){
// one of over 9000 ways to make js loops work faster
var person = data[l-i]; // <- this one also does not screw up order
var row = '<tr>';
row +='<td>'+person.name+'</td>';
row +='<td>'+person.id+'</td>';
row +='<td>'+person.salary+'</td>';
row +='</tr>';
table += row;
}
table += '</table>';
$('#myDiv').html(table);
},
'json'
);
您可能希望事先在jsp中的某个地方准备好表格,也许在隐藏的div中并将其用作模板。