Java JSP Servlet登录问题
我的登录验证代码有问题。我有以下验证登录的代码:Java JSP Servlet登录问题,java,jsp,servlets,Java,Jsp,Servlets,我的登录验证代码有问题。我有以下验证登录的代码: 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:/
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");
}
}
我得到的客户号码无法解析,密码短语也是如此。有什么想法吗?包括银行数据库在内的所有变量都是正确的。问题在于:
session.setAttribute("customer_number",customer_number);
在下一条语句之前,您还没有定义客户号
变量:
String customer_number=request.getParameter("customer_number");
可能的解决方案是声明和初始化变量,然后将其保存到会话中:
String customer_number=request.getParameter("customer_number");
session.setAttribute("customer_number",customer_number);
既然您正在学习JSP和servlet,那么首先应该理解。了解这一点后,您应该将业务逻辑移动到控制器类中,例如Servlet。servlet必须处理业务逻辑和其他操作,以处理登录验证(应该通过POST请求而不是GET请求访问)等数据,然后它应该触发对视图的响应,例如通过转发到JSP文件 此外,您不应不小心地使用以下方法打开数据库连接:
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","db_customer_number","db_Passphrase");
而是使用数据库连接池和数据源
。有关更多信息,请参见:
最后但并非最不重要的一点是,对于需要传递参数的查询,应该使用PreparedStatement
s。这是为了防止。您可以在此处阅读有关如何使用PreparedStatement
的更多信息:
相关问题:问题在于:
session.setAttribute("customer_number",customer_number);
在下一条语句之前,您还没有定义客户号
变量:
String customer_number=request.getParameter("customer_number");
可能的解决方案是声明和初始化变量,然后将其保存到会话中:
String customer_number=request.getParameter("customer_number");
session.setAttribute("customer_number",customer_number);
既然您正在学习JSP和servlet,那么首先应该理解。了解这一点后,您应该将业务逻辑移动到控制器类中,例如Servlet。servlet必须处理业务逻辑和其他操作,以处理登录验证(应该通过POST请求而不是GET请求访问)等数据,然后它应该触发对视图的响应,例如通过转发到JSP文件 此外,您不应不小心地使用以下方法打开数据库连接:
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","db_customer_number","db_Passphrase");
而是使用数据库连接池和数据源
。有关更多信息,请参见:
最后但并非最不重要的一点是,对于需要传递参数的查询,应该使用PreparedStatement
s。这是为了防止。您可以在此处阅读有关如何使用PreparedStatement
的更多信息:
相关问题:问题在于:
session.setAttribute("customer_number",customer_number);
在下一条语句之前,您还没有定义客户号
变量:
String customer_number=request.getParameter("customer_number");
可能的解决方案是声明和初始化变量,然后将其保存到会话中:
String customer_number=request.getParameter("customer_number");
session.setAttribute("customer_number",customer_number);
既然您正在学习JSP和servlet,那么首先应该理解。了解这一点后,您应该将业务逻辑移动到控制器类中,例如Servlet。servlet必须处理业务逻辑和其他操作,以处理登录验证(应该通过POST请求而不是GET请求访问)等数据,然后它应该触发对视图的响应,例如通过转发到JSP文件 此外,您不应不小心地使用以下方法打开数据库连接:
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","db_customer_number","db_Passphrase");
而是使用数据库连接池和数据源
。有关更多信息,请参见:
最后但并非最不重要的一点是,对于需要传递参数的查询,应该使用PreparedStatement
s。这是为了防止。您可以在此处阅读有关如何使用PreparedStatement
的更多信息:
相关问题:问题在于:
session.setAttribute("customer_number",customer_number);
在下一条语句之前,您还没有定义客户号
变量:
String customer_number=request.getParameter("customer_number");
可能的解决方案是声明和初始化变量,然后将其保存到会话中:
String customer_number=request.getParameter("customer_number");
session.setAttribute("customer_number",customer_number);
既然您正在学习JSP和servlet,那么首先应该理解。了解这一点后,您应该将业务逻辑移动到控制器类中,例如Servlet。servlet必须处理业务逻辑和其他操作,以处理登录验证(应该通过POST请求而不是GET请求访问)等数据,然后它应该触发对视图的响应,例如通过转发到JSP文件 此外,您不应不小心地使用以下方法打开数据库连接:
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test","db_customer_number","db_Passphrase");
而是使用数据库连接池和数据源
。有关更多信息,请参见:
最后但并非最不重要的一点是,对于需要传递参数的查询,应该使用PreparedStatement
s。这是为了防止。您可以在此处阅读有关如何使用PreparedStatement
的更多信息:
相关问题:这是一个真实世界的应用程序还是只是学习JSP的一些测试?这是一个小型个人项目,不会用于公共用途。我不想粗鲁,但这是一个完美的例子,说明了所有不应该做的事情:使用scriptlet,不遵守命名约定,不缩进代码,不使用准备好的语句,在会话中填充随机内容,在每次请求时打开一个新连接,而从不关闭它。从使用servlet而不是JSP来编写Java代码开始,至少编译器会发现您的语法错误。是的,我知道代码看起来很粗糙,并且没有遵循变量约定(希望保持变量与数据库中的变量相同)。我在记事本上做这件事时,缩进很困难。哦,这是我第一次使用这种编码,所以它不会运行得很好,但是因为它现在被用于任何有用的目的,所以我认为它不太重要。想和大家分享一下我在哪里可以增强它吗?@Softey检查一下我的答案上的更新,我试图涵盖JBNizet所谈论的所有内容。此外,还有另一个关于这一切的问题。这是一个真实世界的应用程序,还是只是学习JSP的一些测试?这是一个小型个人项目,不会用于公共用途。我不想粗鲁,但这是一个完美的例子,说明了你所做的一切