我正在开发一个在线银行应用程序,这是我卡住的一部分。检索插入到数据库中的最后一行
- >用户在HTML页面上显示一个表单以输入他们的详细信息,以创建一个帐户。
- >然后将详细信息输入MySQL数据库,并将用户重定向到JSP页面,在那里他应该显示他的帐号(使用MySQL自动递增功能自动生成)和一个秘密的4位数字引脚(每个用户随机生成,而不是自动增量)。
从我的Servlet的doPost()方法的代码sinppet插入在DB值和重定向到JSP是这里 -
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/inb", "root", "root");
//The user's password has to be converted into a salted hash before storing in the database.
String hashed_password=CreateDigest.getPasswordDigest(request.getParameter("password"));
PreparedStatement ps=con.prepareStatement("insert into inb.users values (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
ps.setString(1, request.getParameter("name1"));
ps.setString(2, request.getParameter("name2"));
ps.setString(3, request.getParameter("name3"));
ps.setString(4, request.getParameter("dob"));
ps.setInt(5, Integer.parseInt(request.getParameter("age")));
ps.setString(6, request.getParameter("email"));
ps.setString(7, request.getParameter("mobnum"));
ps.setString(8, request.getParameter("address1"));
ps.setString(9, request.getParameter("address2"));
ps.setString(10, request.getParameter("pannum"));
ps.setString(11, request.getParameter("aadhar"));
ps.setString(12, hashed_password);
ps.setString(13, request.getParameter("acc_bal"));
ps.setInt(14, pin);
int i=ps.executeUpdate();
//Check if records have been actually been inserted or not.
if (i>0) {
response.sendRedirect("AccountOpened.jsp");
}
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
现在,这是JSP代码以显示帐户没有。和用户 的引脚(last_acc_no和last_pin都在我的Servlet类,我创建没有和引脚保持最后插入的帐户的静态变量。)
<%
String acc_no=CreateAccount.last_acc_No;
int pin=CreateAccount.last_pin;
%>
<h3>Congratulations ! Your account has been created.</h3>.
<br/><br/>
Your Account Number Is : <b> <%= acc_no %> </b>
<br/><br/>
Your Secret PIN No. Is : <b> <%= pin %> </b>
现在,我要检索的account_no上和销最后插入的用户,以便我可以在JSP页面上显示它。我无法弄清楚这个方法。
servlet类中的'static'变量** ** **!接下来的事情是不要在JSP中使用sriptlets!一个问题,为什么你使用'redirect()'而不是'RequestDispatcher'? – NINCOMPOOP
@TheNewIdiot更糟糕的是:OP手动创建数据库连接而不是使用数据库连接池,在此应用程序中模型和控制器之间没有区别,同时也表明缺乏开发用于维护目的的分层应用程序的知识。 –