Java 如果凭证不正确,如何将用户重定向到另一个JSP页面
我正在为java web应用程序创建登录表单。我让用户通过JavaServlet使用正确的密码登录,但是如果用户输入了错误的密码,我想将用户重定向到另一个JSP页面。我的第一个想法是创建一个try/catch语句。但是,当我尝试此操作时,会收到空白页。我如何确保用户知道他们何时输入了错误的密码?谢谢Java 如果凭证不正确,如何将用户重定向到另一个JSP页面,java,servlets,error-handling,Java,Servlets,Error Handling,我正在为java web应用程序创建登录表单。我让用户通过JavaServlet使用正确的密码登录,但是如果用户输入了错误的密码,我想将用户重定向到另一个JSP页面。我的第一个想法是创建一个try/catch语句。但是,当我尝试此操作时,会收到空白页。我如何确保用户知道他们何时输入了错误的密码?谢谢 public class Loginn extends HttpServlet { protected void processRequest(HttpServletRequest request
public class Loginn extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
String name = request.getParameter("name");
String pass = request.getParameter("pass");
MyDb1 db = new MyDb1();
Connection con = db.getCon();
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select uid,name,pass from register where email = '"+name+"' and pass = '"+pass+"'");
while ((rs.next())) {
String uid = rs.getString("uid");
HttpSession session=request.getSession();
session.setAttribute("name",uid);
response.sendRedirect("http://localhost:8080/Final_Year_Project_5_/userprofile.jsp");
}
} catch (SQLException ex) {
Logger.getLogger(Loginn.class.getName()).log(Level.SEVERE, null, ex);
}
}尝试使用if和else
你的代码是一个安全漏洞。想象一下我在web表单中的pass字段中:
whatever' OR TRUE;--
我会登录,把这个字符串放到你的查询中,然后打印出来,看看它会做什么
您需要使用PreparedStatement,用问号替换所有变量
你的代码有内存泄漏。连接、语句和结果集都是资源;它们需要显式关闭。谷歌搜索如何在java中使用“资源试用”。
JSP是过时的技术,您的异常处理使连接处于浮动状态。我建议这样做:抛出新的ServletExceptionex,至少在servlet容器的正确位置执行错误处理
空白页面可能是由于您处理异常的方式导致的,您将异常记录在日志中,然后什么也不做,导致出现空白页面。修复此问题,现在您可以查看实际错误
whatever' OR TRUE;--