Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSP Servlet登录问题_Java_Jsp_Servlets - Fatal编程技术网

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的一些测试?这是一个小型个人项目,不会用于公共用途。我不想粗鲁,但这是一个完美的例子,说明了你所做的一切