<%@page contentType="text/html" pageEncoding="UTF-8" %>
 <%@page import="java.sql.*"%>
 <html>
 <head>
 </head>
 <body>
         <h1>登陆操作</h1>
     <hr>
     <%!//定义若干个数据库连接常量
    String DBDRIVER = "com.mysql.jdbc.Driver";
     String DBURL = "jdbc:mysql://127.0.0.1:3306/login";
      String DBUSER = "root";
     String DBPASS = "111111";
     boolean flag = false;
     String name = null;
     String pwd=null;
  %>
     <%
      Connection conn = null;  //数据库连接
      PreparedStatement pstmt = null;    //数据库预处理操作
      ResultSet rs = null;    //查询要处理结果集
   %>
     <%
   try{   
   %>
     <%
        Class.forName(DBDRIVER);
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS);       
        String sql = "select name from userinformation where username = ? and password = ?";
          pstmt = conn.prepareStatement(sql);
        pstmt.setString(1,request.getParameter("username"));
        pstmt.setString(2,request.getParameter("password"));
        rs = pstmt.executeQuery();
        if(rs.next()){
            flag = true;
            name = rs.getString(1);
             pwd = rs.getString(2);           
        }
         System.out.println("asd");
    %> 
     <%
    }catch(Exception e){
        e.printStackTrace();
    }
        try{
            rs.close();
            pstmt.close();
            conn.close();
        }catch(Exception e){
        e.printStackTrace();
        }  
     %>
 
     <%
         if(flag == true){
     %>
     <jsp:forward page="login_success.jsp">
         <jsp:param name="uname" value="<%=name %>" />
     </jsp:forward>
 
     <%    
         }else{
          %>
     <jsp:forward page="login_failure.jsp"/>  
     <%             
         }         
      %>
 </body>
 </html>
下面的是HTML的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <h1>登陆操作</h1>
     <hr>
     <form action="login.jsp" method="post">
         <table border="1">
             <tr>
                 <td colspan="2">用户登陆</td>
             </tr>
             <tr>
                 <td>用户名:</td>
                 <td><input type="text" name="username">
                 </td>
             </tr>
             <tr>
                 <td>密码:</td>
                 <td><input type="password" name="password">
                 </td>
             </tr> 
             <tr>
                 <td colspan="2"><input type="submit" value = "登陆">
                 <td colspan="2"><input type="reset" value = "重置">
                 </td>
             </tr>
         </table>
     </form>
</body>
</html>
即使是存在的用户名和密码,仍然会跳转到登录失败的界面,不知怎么回事,求高手指教。数据库的字段名是username和password。

解决方案 »

  1.   

    控制台没错误信息,就是怎么搞都会跳转到login_failure.jsp页面,就是登录失败的界面
      

  2.   

    输入的username password,数据库里对应的值吗
      

  3.   

    ->flag = false;
    打印username 和 password
    在数据库中执行sql 
     "select name from userinformation where username = ? and password = ?";上面有指出 “编码问题”...
      

  4.   


    String sql = "select name from userinformation where username = ? and password = ?";
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, request.getParameter("username"));
    pstmt.setString(2, request.getParameter("password"));
    rs = pstmt.executeQuery();
    if (rs.next()) {
    flag = true;
    name = rs.getString(1);
    pwd = rs.getString(2);
    }你sql就要一个name,rs.getString又想要两个值,还列名有问题String sql = "select username,password from userinformation where username = ? and password = ?";
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, request.getParameter("username"));
    pstmt.setString(2, request.getParameter("password"));
    rs = pstmt.executeQuery();
    if (rs.next()) {
    flag = true;
    name = rs.getString("username");
    pwd = rs.getString("password");
    }
      

  5.   

    数据库里有对应的值啊,编码哪里有问题,SQL哪里写着只要name的啊,不是应该和姓名和密码都对过吗
      

  6.   

    from   前面对应 rs.getString();中的值呀
      

  7.   

    你sql就要一个name,rs.getString又想要两个值,还列名有问题