如何将动态值传递给java serlvet?
(更新) 我正在使用java servlet和oracle sql构建酒店管理系统。如何将动态值传递给java serlvet?,java,oracle,servlets,Java,Oracle,Servlets,(更新) 我正在使用java servlet和oracle sql构建酒店管理系统。 我从数据库打印一个html表,如果我更改了传递给另一个servlet的值,我需要更新一行。 这是我的第一个servlet if(request.getParameter("hotelTableBtn") != null){ String query = "select * from Hotels"; response.setCharacterEncoding("utf-8
我从数据库打印一个html表,如果我更改了传递给另一个servlet的值,我需要更新一行。
这是我的第一个servlet
if(request.getParameter("hotelTableBtn") != null){
String query = "select * from Hotels";
response.setCharacterEncoding("utf-8");
Connection conn;
try{
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","system","root");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query);
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
pw.println("<table border=1 style=border-collapse:collapse>");
pw.println("<tr>");
for(int i = 1; i <= columnCount; i++){
pw.println("<th>" + metaData.getColumnName(i));
}
pw.println("</tr>");
pw.println();
String name = "";
while(rs.next()){
int i;
int row = rs.getRow();
pw.write("<form action=/ThesisAdmin/PrintTables method=post target=_self>");
pw.println("<tr>");
for(i = 1; i <= columnCount; i++){
if(i == 1)
name = "name";
else if (i == 2)
name = "category";
else if (i == 3)
name = "address";
else if (i == 4)
name = "phone";
else
name = "email";
pw.println("<td style=border:none> <input type=text value=" + rs.getString(i) + " name=" + name + "> </td>");
}
pw.println("<td> <input type=submit value=update name=updateBtn> </td>");
pw.println("</tr>");
pw.write("</form");
pw.println();
}
pw.println("</table>");
}catch (Exception e){
pw.write("" + e);
}
}
我像这样更新了代码,但只有第一个按钮起作用。有什么想法吗?
先谢谢你
(更新)
最后,我的程序通过每行添加一个新表来工作。我还添加了一个删除按钮。解决方案:
pw.println("<table border=1 style=border-collapse:collapse>");
pw.println();
String name = "";
int cnt = 0;
while(rs.next()){
int i;
//int row = rs.getRow();
pw.println("<tr>");
pw.println("<table><tr><td>");
pw.println("<tr>");
if(cnt == 0){
for(i = 1; i <= columnCount; i++){
pw.println("<th>" + metaData.getColumnName(i));
}
cnt = 1;
}
pw.println("</tr>");
pw.write("<form action=/ThesisAdmin/PrintTables method=post target=_self>");
for(i = 1; i <= columnCount; i++){
if(i == 1)
name = "name";
else if (i == 2)
name = "category";
else if (i == 3)
name = "address";
else if (i == 4)
name = "phone";
else
name = "email";
pw.println("<td style=border:none> <input type=text value=" + rs.getString(i) + " name=" + name + "> </td>");
}
pw.println("<td> <input type=submit value=update name=updateBtn> </td>");
pw.println("<td><input type=submit value=delete name=deleteBtn> </td>");
pw.write("</form>");
pw.write("</td></tr></table>");
pw.println("</tr>");
pw.println();
}
pw.println("</table>");
pw.println(“”);
println();
字符串名称=”;
int-cnt=0;
while(rs.next()){
int i;
//int row=rs.getRow();
pw.println(“”);
pw.println(“”);
pw.println(“”);
如果(cnt==0){
对于(i=1;i数据库表和html表中的每一行代表一个对象。
每个对象必须有一个id
您应该向每行添加一个带有对象id的隐藏输入字段。
每行/对象都有一个单独的表单。您忘记了实际问题。“我需要”不是问题。请稍后编辑,谢谢。请您详细解释一下“动态行值”是什么意思?也许举个例子会有帮助。也许“动态”这个词不合适,但我需要更新表值并将它们发送到数据库,但这无助于理解您的意思。请尝试解释为什么无法使用正常的GET/POST参数传输数据。抱歉,我真的不明白您的问题所在。请给出一个示例举例说明你传递数据的困难。也许你还没有完全理解自己的问题,那么向橡皮鸭解释一下可能会有帮助。
pw.println("<table border=1 style=border-collapse:collapse>");
pw.println();
String name = "";
int cnt = 0;
while(rs.next()){
int i;
//int row = rs.getRow();
pw.println("<tr>");
pw.println("<table><tr><td>");
pw.println("<tr>");
if(cnt == 0){
for(i = 1; i <= columnCount; i++){
pw.println("<th>" + metaData.getColumnName(i));
}
cnt = 1;
}
pw.println("</tr>");
pw.write("<form action=/ThesisAdmin/PrintTables method=post target=_self>");
for(i = 1; i <= columnCount; i++){
if(i == 1)
name = "name";
else if (i == 2)
name = "category";
else if (i == 3)
name = "address";
else if (i == 4)
name = "phone";
else
name = "email";
pw.println("<td style=border:none> <input type=text value=" + rs.getString(i) + " name=" + name + "> </td>");
}
pw.println("<td> <input type=submit value=update name=updateBtn> </td>");
pw.println("<td><input type=submit value=delete name=deleteBtn> </td>");
pw.write("</form>");
pw.write("</td></tr></table>");
pw.println("</tr>");
pw.println();
}
pw.println("</table>");