我正在開發servlet的在線考試應用程序。當我使用getParamter( - )方法讀取單選按鈕值時,它的shows/returns「on」是某些參數名稱的參數值。它隨機地改變它們的值。我正在開發servlets和jsp的在線考試系統
例如第一,當我們請求它示出了「接通」單選按鈕2,5-問題值。 ,第二次顯示單選按鈕7,4個問題。
請覈實我的代碼,並告訴我什麼是我的錯誤
代碼
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ExamSrv extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int j = 1;
PrintWriter pw = response.getWriter();
response.setContentType("text/html");
Connection con = null;
ResultSet resultSet = null;
Statement st = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:accdsn");
st = con.createStatement();
resultSet = st.executeQuery("select qno,question,option1,option2,option3,option4 from Level1 where qno<=10");
pw.println("<form action=ansurl name=ans method=get>");
while (resultSet.next()) {
int k = resultSet.getInt(1);
pw.println(k + ").");
pw.println("<b><font size=3>" + resultSet.getString(2) + "</font></b><br><br>");
pw.println("<input type=radio name=opt" + j + " value=1 unchecked/>a)<b>" + resultSet.getString(3) +
"</b> ");
pw.println("<input type=radio name=opt" + j + " value =2 />b)<b>" + resultSet.getString(4) +
"</b> ");
pw.println("<input type=radio name=opt" + j + " vaule=3 />c)<b>" + resultSet.getString(5) +
"</b> ");
pw.println("<input type=radio name=opt" + j + " value=4 />d)<b>" + resultSet.getString(6) +
"</b><br><br><br> ");
j++;
}
pw.println("<input type=submit name=submit value=submit>");
pw.println("</form>");
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req, res);
}
}
但我修改的形式方法「POST」它顯示了在瀏覽器將不支持後..
閱讀
public class AnsSrv extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
int j = 1, cnt = 0, fal = 0;
PrintWriter pw = response.getWriter();
response.setContentType("text/html");
Connection con = null;
ResultSet resultSet = null;
Statement st = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:accdsn");
st = con.createStatement();
resultSet = st.executeQuery("select answer from Level1 where qno<=10");
while (resultSet.next()) {
if (req.getParameter("opt" + j).equals(resultSet.getString(1))
{
pw.println("opt"+j+"<br>"); //here it shows "on " value as on browser window
cnt++;
else
fal++;
j++;
}
pw.println("your marks are:" + (cnt - fal));
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
doGet(req, res);
}
}
的代碼,如最初發布,則不會進行編譯。我已經修復了這些編譯問題,並對代碼進行了重新格式化以提高可讀性。考慮將來使用源代碼美化工具(如jacobe)。 – 2013-04-24 18:14:55
您沒有正確關閉數據庫資源。添加一個finally塊並使用類似http://commons.apache.org/proper/commons-dbutils/apidocs/org/apache/commons/dbutils/DbUtils.html#closeQuietly%28java.sql.Connection,%20java.sql .Statement,%20java.sql.ResultSet%29。 – 2013-04-24 18:26:06