4
我在我的Web應用程序中使用DataTables獨立編輯器來處理字段。這個軟件的創建者有PHP類,但沒有Java類,所以我創建了一個快速的java servlet來接受要編輯的傳入字段。 JavaScript的情況如下:(你可以看到有一個網址不同領域)Datatables Java Servlet中的獨立編輯器
editor = new $.fn.dataTable.Editor({
ajax: "/json/fields/server",
fields: [ {
label: "Status:",
name: "status",
type: 'radio',
options: [
{ label: 'Enabled', value: 'Enabled' },
{ label: 'Disabled', value: 'Disabled' }
]
}, {
label: "Server IP address:",
name: "server-ip"
}, {
label: "Polling period:",
name: "poll-period"
}, {
name: "protocol", // `label` since `data-editor-label` is defined for this field
type: "select",
options: [
{ label: 'TCP', value: 'TCP' },
{ label: 'UDP', value: 'UDP' }
]
}
]
});
我用這樣的事情在我的Java Servlet:
String serverid = request.getParameter("serverid");
String[] status = {"status", request.getParameter("data[keyless][status]")};
String[] server-ip = {"server-ip", request.getParameter("data[keyless][server-ip]")};
String[] protocol = {"protocol", request.getParameter("data[keyless][protocol]")};
String[][] fields = {status, server-ip, protocol};
Connection conn = null;
PreparedStatement pst = null;
String write = null;
try {
conn = ConnectionManager.getConnection();
for(String[] field : fields){
if(field[1] != null){
write = "{\"data\":[{\"" + field[0] + "\":\"" + field[1] + "\"}]}";
pst = conn.prepareStatement("UPDATE server SET " + field[0] + " = ? WHERE id = ?");
pst.setString(1, field[1]);
pst.setString(2, serverid);
pst.execute();
pst.close();
break;
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
DBUtil.close(conn);
DBUtil.close(pst);
}
response.setContentType("application/json");
PrintWriter writer = response.getWriter();
if(write != null)
writer.write(write);
writer.close();
我使用的字符串數組與字段名稱首先防止SQL注入攻擊,但我不能使用參數,因爲字段名稱是動態的。
我的問題是,有沒有更好的方法來實現這一目標?
謝謝你這個網站其實是一個很好的資源,但不是我所問的。該網站提供了所有數據表的示例,但不適用於獨立編輯器。我在問是否有更好的方法來完成獨立編輯。 – Ethan