开发者社区> 问答> 正文

注册jsp db后无法登录

我在“网站”上登录时遇到问题,尽管我写出了不错的登录名和密码,但我总是登录失败。它从数据库名称“ register”中获取值并进行检查。而且我在数据库的“注册”中有值,我通常将其写在登录页面上,并且出现问题导致它在“ loginfail.jsp”上重定向了我,这是我的代码:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

 <%@ page language="java" %>
        <%@ page import="java.sql.*" %>
         <%@ page import="java.sql.DriverManager.*" %>
<% 
       PreparedStatement ps;
        Connection conn;
        ResultSet rs= null;
       Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
        conn=DriverManager.getConnection("jdbc:derby://localhost:1527/onlineshop","root","root");

         Statement st=conn.createStatement();
%> 
<% 
boolean flag = false; 

String LOGIN = request.getParameter ("LOGIN"); 
String PASSWORD = request.getParameter ("PASSWORD"); 
%>

<% 

String sql = "SELECT LOGIN from REGISTER where LOGIN=? And PASSWORD =?"; 

try {  
ps = conn.prepareStatement(sql); 
ps.setString (7,LOGIN); 
ps.setString (8,PASSWORD); 
rs = ps.executeQuery (); 
if (rs.next ()) { 
out.println (rs.getString ("LOGIN")); 
flag = true; 
session.setAttribute("ULOGIN", rs.getString ("LOGIN")); 
} else { 
request.setAttribute("err", "user name or password error!"); 
}

rs.close (); 
ps.close (); 
conn.close ();

} catch (Exception e) { 
out.println (e); 
} 
%>


<% 

if (flag) { 

%>

<jsp:forward page="loginsucc.jsp" />

<%

} 
else { 
%>

<jsp:forward page="loginfail.jsp"/> 
<% 
} 
%>
</body>
</html>

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 17:34:32 440 0
1 条回答
写回答
取消 提交回答
  • 您的代码中的问题是由于在中使用了错误的索引setString。

    更换

    ps.setString (7,LOGIN); 
    ps.setString (8,PASSWORD);
    

    ps.setString (1,LOGIN); 
    ps.setString (2,PASSWORD);
    

    检查此示例以了解使用Prepared Statements的示例。检查此文档。

    [更新]

    在rs.next ()将返回false在你的代码。您可以验证以下工作示例:

    register.jsp:

    <html>
        <head>
            <title>Untitled Document</title>
        </head>
        <body>
            <%
                boolean flag = true;
                if (flag) {
            %>
    
            <jsp:forward page="loginsucc.jsp" />
    
            <%
                } else {
            %>
    
            <jsp:forward page="loginfail.jsp" />
            <%
                }
            %>
        </body>
    </html>
    

    loginsucc.jsp

    <html>
        <head>
            <title>Insert title here</title>
        </head>
        <body>
            Login successful
        </body>
    </html>
    

    回答来源:Stack Overflow

    2020-03-26 17:35:31
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载