结果集jsp - 如何使用?

时间:2011-03-18 23:02:32

标签: java jsp jdbc

有人可以告诉我为什么这不起作用?我希望能够检查从DB查询返回的用户名/密码是否等于值。

会话属性“loginSuccess”始终返回false,即使值应匹配。

<%@ page language="java" import="java.sql.*" %>
<%
            String driver = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driver).newInstance();

            Connection con = null;
            ResultSet rst = null;
            Statement stmt = null;

            try {
                String url = "jdbc:oracle:thin:username/password@url:port:SID";
                con = DriverManager.getConnection(url);
                stmt = con.createStatement();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            if (request.getParameter("action") != null) {
                rst = stmt.executeQuery("select username, password"
                        + " from table");
                }
%>


                <%

                boolean loginCheck = false;
                           int count = 1;
                            while (rst.next()) {

if(request.getParameter("action")!=null){
    if("username1"==rst.getString("username")){
        if("password1"==rst.getString("password")){
            loginCheck = true;
            }
        }
    }

                            count++;
                            }

                           if(loginCheck==true){
                               session.setAttribute("loginSuccess", "true");
                               }else{
                               session.setAttribute("loginSuccess", "false");
                               }

                            rst.close();
                            stmt.close();
                            con.close();
                %>

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

2 个答案:

答案 0 :(得分:1)

您正在使用==来比较字符串。请尝试等于。

我建议不要以这种方式将scriptlet代码放在JSP中。您应该使用JSTL标记库编写JSP。

我还建议将该数据库代码放在POJO中,以便您可以离线测试它,与servlet / JSP引擎分开。然后让servlet实例化POJO,与数据库交互,并将结果发送到JSP。

这是一项更多的工作,但从长远来看,设计将扩展和扩展。

答案 1 :(得分:1)

我认为你在这行代码中遇到了一个基本的语法错误。

  

“USERNAME1” == rst.getString( “用户名”)

应该是这样的

  

rst.getString( “用户名”)equalsIgnoreCase( “USERNAME1”);

和密码类似。 请检查这是否有帮助。