【发布时间】:2019-09-07 05:36:22
【问题描述】:
我正在开发一个投票应用程序,人们可以在其中为特定选项投票并提交。现在,我希望用户在 servlet 中选择的选项并将其作为投票存储在数据库中。当收到新的投票时,该计数应始终增加 1。但是,它没有给我想要的输出。每次当我选择一个选项并单击提交时,1 都会像投票一样插入到数据库的相应列中。我已将选项命名为 db 中的列名。我希望每一个新投票都是对其先前价值的补充
下面是 Voting.jsp 页面:-
<div class="card" style="width: 60rem; margin-left: 45px;">
<div class="card-body">
Click on one of the following options to caste your vote. Then click submit.
</div>
</div>
<div class="card" style="width: 60rem; margin-left: 45px;">
<div class="card-body">
<form action="SuccessServlet" method="post">
<label class="container">Team_1
<input type="radio" name="radio" value="team1">
<span class="checkmark"></span>
</label>
<label class="container">Team_2
<input type="radio" name="radio" value="team2">
<span class="checkmark"></span>
</label>
<label class="container">Team_3
<input type="radio" name="radio" value="team3">
<span class="checkmark"></span>
</label>
<label class="container">Team_4
<input type="radio" name="radio" value="team4">
<span class="checkmark"></span>
</label>
<button type="submit">Submit</button>
</form>
</div>
</div>
以下是我的 Servlet 类:-
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ud.setFirst_name(request.getParameter("f1"));
String answer = request.getParameter("radio");
if("team1".equals(answer)) {
System.out.println("Hello");
writeData1();
}
else if ("team2".equals(answer)) {
writeData2();
}
else if ("team3".equals(answer)) {
writeData3();
}
else if ("team4".equals(answer)) {
writeData4();
}
else {
response.sendRedirect("Success.jsp");
}
response.sendRedirect("UserPage.jsp");
}
}
public void writeData1() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db?autoReconnect=true&useSSL=FALSE", "root", "root");
String query = "insert into Total_Votes(Team1) values(?)";
PreparedStatement ps = con.prepareStatement(query);
ps.setInt(1, 1);
ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
public void writeData2() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db?autoReconnect=true&useSSL=FALSE", "root", "root");
String query = "insert into Total_Votes(Team2) values(?)";
PreparedStatement ps = con.prepareStatement(query);
ps.setInt(1, 1);
ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
public void writeData3() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db?autoReconnect=true&useSSL=FALSE", "root", "root");
String query = "insert into Total_Votes(Team3) values(?)";
PreparedStatement ps = con.prepareStatement(query);
ps.setInt(1, 1);
ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
public void writeData4() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db?autoReconnect=true&useSSL=FALSE", "root", "root");
String query = "insert into Total_Votes(Team4) values(?)";
PreparedStatement ps = con.prepareStatement(query);
ps.setInt(1, 1);
ps.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println(e.getMessage());
}
}
【问题讨论】:
-
它给你什么输出?你收到什么错误?数据库中的最终值是什么?到目前为止,您尝试过什么?
-
每当我选择一个选项并单击提交时,1 就会像投票一样插入到数据库的相应列中。我已将选项命名为 db 中的列名。我希望每一个新投票都是对其先前价值的补充。我已经提到了上面的代码,这就是我到目前为止所尝试的
-
@ShashankkShekarChaturvedi 提供更多详细信息作为对您问题的编辑,而不是作为评论。
标签: java mysql jsp servlets jdbc