gpt4 book ai didi

java - JSP Servlet 登录问题

转载 作者:行者123 更新时间:2023-12-01 23:12:09 25 4
gpt4 key购买 nike

我的登录验证码有问题。我有以下验证登录的代码:

String customer_number=request.getParameter("customerNumber");
String Passphrase=request.getParameter("passphrase");

Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","db_erewhon");
Statement st= con.createStatement();
ResultSet rs=st.executeQuery("select * from Customers where customer_number='"+customer_number+"'");
if(rs.next())
{
if(rs.getString(2).equals(Passphrase)){
out.println("Welcome"+customer_number);

}
else
{
out.println("Customer ID or Passphrase are Invalid. Please try again");
}
}

我得到 customer_number 无法解析,密码短语也是如此。有任何想法吗?所有变量在整个过程中都是正确的,包括在银行数据库中。

最佳答案

问题出在这里:

session.setAttribute("customer_number",customer_number);

直到下一条语句之前,您尚未定义 customer_number 变量:

String customer_number=request.getParameter("customer_number");

一个可能的解决方案可能是声明并初始化变量,然后将其保存到 session 中:

String customer_number=request.getParameter("customer_number");
session.setAttribute("customer_number",customer_number);
<小时/>

既然你正在学习JSP和Servlet,你应该首先了解to not use scriptlets in JSP 。了解这一点后,您应该将业务逻辑移至 Controller 类中,例如一个 Servlet。 servlet 必须处理业务逻辑和其他操作来处理数据,例如登录验证(应通过 POST 请求而不是 GET 请求访问),然后它应该向 View 发出响应,例如通过转发到 JSP 文件。

此外,您不应粗心地使用以下方式打开数据库连接:

Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","db_customer_number","db_Passphrase");

而是使用数据库连接池和DataSource。您可以在这里查看更多信息:Is it a good idea to put jdbc connection code in servlet class? .

最后但并非最不重要的一点是,对于需要传递参数的查询,您应该使用 PreparedStatement。这是为了防止SQL Injection attacks 。您可以在此处阅读有关如何使用 PreparedStatement 的更多信息:Java - escape string to prevent SQL injection

相关问题:Creating a user object from login parameters

关于java - JSP Servlet 登录问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21782789/

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