gpt4 book ai didi

java - 如果凭据不正确,如何将用户重定向到另一个 JSP 页面

转载 作者:行者123 更新时间:2023-12-02 10:11:32 24 4
gpt4 key购买 nike

我正在为 Java Web 应用程序创建登录表单。我让用户通过 java servlet 使用正确的密码登录,但如果用户输入错误的密码,我想将用户重定向到另一个 JSP 页面。我的第一个想法是创建一个 try/catch 语句。但是,当我尝试执行此操作时,我收到空白页。如何确保用户知道何时输入了错误的密码?谢谢

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);

}

}

最佳答案

  1. 您的代码存在安全漏洞。假设我将 Web 表单放入 pass 字段中:

    whatever' OR TRUE;--

我会登录(只需将该字符串放入您的查询中并将其打印回来,看看它会做什么......

您需要使用PreparedStatement,将所有变量替换为问号。

  • 您的代码存在内存泄漏。连接、语句和结果集都是资源;他们需要明确的结束。 Google 一下如何在 java 中使用“try-with-resources”。
  • JSP 是过时的技术,异常处理会使连接处于 float 状态。我建议这样做:抛出 new ServletException(ex),至少这样您可以在正确的位置(servlet 容器)进行错误处理。

    空白页可能是由于您处理异常的方式造成的(您记录它们然后不执行任何操作,从而导致空白页)。解决这个问题,现在您可以查看一个实际错误。

    关于java - 如果凭据不正确,如何将用户重定向到另一个 JSP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54970147/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com