好的,首先,我对网页设计还不熟悉。但对于我的一个项目,我被要求创建一个页面,根据许多数据库中的表格填充多个下拉列表。而且我相信我已经完成了这部分工作,到目前为止我的代码(jsp页面):
CodeSelector.jsp
<%@page import="java.sql.*"%>
<!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=ISO-8859-1">
<title>Codes Page</title>
</head>
<body>
<form name = "codes" method = "POST" action="....." target="_self">
<h1>Please select the applicable codes:</h1>
<select name='code1' onchange="showState(this.value)">
<option value="none">Code One: None</option>
<%
String debug = "ON";
if(debug.equals("ON"))
{
System.out.println("***DEBUGGING IS TURNED ON!!!***");
}
//Pulls the ids and descriptions from the first codes table and stores them in the first drop down
try
{
String caseId = request.getParameter("caseID");
//caseId = "30";
if (caseId == null)
{
//debug
System.out.println("The caseID is NULL!");
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@url:sid","username","password");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select id, descr from case_codes");
String tempString;
while(rs.next())
{
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs.getString(2).length() > 125)
{
tempString = rs.getString(2).substring(0, 125);
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the option field.
else
{
%>
<option value="<%=rs.getString(1)%>"><%=rs.getString(1)%> <%=rs.getString(2)%></option>
<%
}
}
//Closes the database connection
stmt.close();
con.close();
}
else if (caseId != null)
{
if(debug.equals("ON"))
{
System.out.println("The caseID is NOT NULL!");
}
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@url:sid","username","password");
Statement stmt = con.createStatement();
//Returns a list of all the tables and views in the database
if(debug.equals("ON"))
{
DatabaseMetaData meta = con.getMetaData();
ResultSet res = meta.getTables(null, null, null, new String[] {"TABLE"});
while (res.next())
{
System.out.println(
" "+res.getString("TABLE_CAT")
+ ", "+res.getString("TABLE_SCHEM")
+ ", "+res.getString("TABLE_NAME")
+ ", "+res.getString("TABLE_TYPE")
+ ", "+res.getString("REMARKS"));
}
}
if(debug.equals("ON"))
{
System.out.println("BEFORE SQL Statement: select id from cases");
}
//Returns a result set of all the ids in the cases table
ResultSet rs = stmt.executeQuery("select id from cases");
if(debug.equals("ON"))
{
System.out.println("AFTER SQL Statement: select id from cases");
}
while(rs.next())
{
if(debug.equals("ON"))
{
System.out.println("The rs is: " + rs.getString(1));
}
if(rs.getString(1).equals(caseId))
{
if(debug.equals("ON"))
{
System.out.println("Case ID Found!");
}
ResultSet rs2 = stmt.executeQuery("select rlawcd_id, display_seq from cs_rlawcd where cs_id = " + caseId);
while(rs2.next())
{
if(debug.equals("ON"))
{
System.out.println("Inside rs2 while loop");
}
//If no values are returned in the rlawcd table, populate the drop down as you normally would
if (rs2 == null)
{
if(debug.equals("ON"))
{
System.out.println("Inside rs2 IF");
System.out.println("rs2 = null");
}
ResultSet rs3 = stmt.executeQuery("select id, descr from case_codes");
String tempString;
while(rs3.next())
{
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs3.getString(2).length() > 125)
{
tempString = rs3.getString(2).substring(0, 125);
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the option field.
else
{
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=rs3.getString(2)%></option>
<%
}
}
}
//Else if the values are indeed returned and the display sequence equals 1
//populate the drop downs normally but with the returned values set as the selected/default items
else if(rs2.getString(2).equals("1"))
{
if(debug.equals("ON"))
{
System.out.println("Inside rs2 ELSE IF");
System.out.println("The rs2 is NOT NULL!");
}
String codeID = rs2.getString(1);
ResultSet rs3 = stmt.executeQuery("select id, descr from case_codes");
String tempString;
while(rs3.next())
{
if(debug.equals("ON"))
{
System.out.println("Inside rs3 while loop");
}
if (rs3.getString(1).equals(codeID))
{
if(debug.equals("ON"))
{
System.out.println("Inside rs3 IF");
System.out.println("A matching law code was found!");
}
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs3.getString(2).length() > 125)
{
tempString = rs3.getString(2).substring(0, 125);
%>
<option selected="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the default/selected option field.
else
{
%>
<option selected="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=rs3.getString(2)%></option>
<%
}
}
else
{
//If the code description is more than 125 characters long, truncate the string and append "..." to the end of it.
if (rs3.getString(2).length() > 125)
{
tempString = rs3.getString(2).substring(0, 125);
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=tempString%>...</option>
<%
}
//Else just insert the whole description into the option field.
else
{
%>
<option value="<%=rs3.getString(1)%>"><%=rs3.getString(1)%> <%=rs3.getString(2)%></option>
<%
}
}
}
}
else
{
if(debug.equals("ON"))
{
System.out.println("Inside the rs2 ELSE");
System.out.println("Something must have gone wrong.");
}
}
}
}
else
{
//do nothing...
}
}
//Closes the database connection
stmt.close();
con.close();
}
else
{
//debug
System.out.println("Something weird happened.");
}
}
catch (ClassNotFoundException e)
{
System.err.println("ClassNotFoundException: " + e.getMessage());
}
catch (SQLException e)
{
System.err.println("SQLException: " + e.getMessage());
}
catch (Exception e)
{
System.err.println("Generic Exception: " + e.getMessage());
}
%>
</select>
<br>
<br>
<input type="submit" value="Submit">
</form>
</body>
</html>
但是,现在我需要根据用户在上面的下拉框中选择的内容添加更新数据库和插入语句的功能。再说一次,对于这个相当新,我不确定这样做的最佳方法是什么?我在谷歌上发现的很多东西都表明这个功能主要涉及这部分代码:
<form name = "codes" method = "POST" action="...." target="_self">
似乎很多在线示例建议使用单独的php页面?但我真的不明白这两者是如何相互链接的,以及一个页面内容如何在另一个页面和您想要更新的数据库之间传输。任何有经验的人都可以在这里提供一些建议,或者指出我可能想要做什么的正确方向,以便在点击submit
按钮时能够写入数据库?
答案 0 :(得分:1)
首先是HTTP帖子。您将表单提交到特殊页面。您将在请求参数中获得所选项目。
所以你创建一个<form ... >...</form>
动作导致你的jsp。现在,您将在提交表单后获得参数。
行动应为action="./CodeSelector.jsp"
现在有些关于你的代码的评论家:
单个JSP页面将导致untestable一次写入。永远不懂代码。使用现代frmework,或JSP和CDI,您将代码分为gui(JSP)和逻辑(Java)