好像你就是第一次有session对象,后面都为null了.这个问题要看你的代码!!!

解决方案 »

  1.   


    <%@ page contentType="text/html;charset=gbk" %>
    <html>
      <head>
        <title>留言管理程序——登陆</title>
      </head>
      <body>
        <center>
           <h1>留言管理范例——JSP+JDBC实现</h1>
           <hr>
           <br>
           <%
               //判断是否有错误信息,如果有则打印
               //如果没有此段代码,演示时会直接打印null
               if(request.getAttribute("err")!=null)
               {
           %>
               <h2><%=request.getAttribute("err") %></h2>
            <%  
               }
               
            %>
            <form action="login_conf.jsp" method="post">
             <table width="80">
             <tr>
                <td colspan="2">用户登陆</td>
             </tr>
             <tr>
               <td>用户名:</td>
               <td><input type="text" name="id"></td>
               
             </tr>
             <tr>
               <td>密&nbsp;&nbsp;码:</td>
               <td><input type="password" name="password"></td>
             </tr>
             <tr>
               <td colspan="2">
                 <input type="submit" value="登陆">
                 <input type="reset" value="重置">
             </tr>
             </table>
              
            </form>
        </center>
      </body>
      
    </html>
      

  2.   


    <%@ page contentType="text/html;charset=gbk" %>
    <%@ page import="java.sql.*"%>
    <html>
      <head>
        <title>留言管理程序——登陆</title>
      </head>
      <body>
        <center>
           <h1>留言管理范例——JSP+JDBC实现</h1>
           <hr>
           <br>
           <%
              String id=request.getParameter("id");
              String password=request.getParameter("password");
            %>
           <%!
              String DRIVER="com.mysql.jdbc.Driver";
              Connection conn=null;
      Statement stmt=null;
      PreparedStatement pstmt = null ;
      ResultSet rs=null;
      String sql=null;
      //声明一个boolean变量,用于保存用户是否是合法的状态
      boolean flag=false;
            %>
       <%
         String sql="select name from person where id=? and password=?";
         try{
           Class.forName(DRIVER);
           conn=DriverManager.
           getConnection("jdbc:mysql://localhost/mydemo3?user=root&password=loveyu");
           pstmt=conn.prepareStatement(sql);
           pstmt.setString(1,id);
           pstmt.setString(2,password);
           rs=pstmt.executeQuery();
           if(rs.next()){
            flag=true;
            //用户合法,将用户名保存在session之中
            session.setAttribute("uname",rs.getString(1));
           }
           else{
             //保存错误信息
             request.setAttribute("err","错误的用户名或密码");
           }
           rs.close();
           pstmt.close();
           conn.close();
         }catch(Exception e){}
        %>
        <%
           if(flag)
           {
           //用户合法
        %>
           <jsp:forward page="login_success.jsp"></jsp:forward>
        <%
           }
           else
           {//用户非法
          %>
            <jsp:forward page="index.jsp"></jsp:forward>
         <%
           }
         %>
           
        </center>
        </body>
        </html>  这页是进行验证的页面
      

  3.   


    <%@ page contentType="text/html;charset=gbk" %>
    <html>
      <head>
        <title>留言管理程序——登陆</title>
      </head>
      <body>
        <center>
           <h1>留言管理范例——JSP+JDBC实现</h1>
           <hr>
           <br>
           <%
            if(session.getAttribute("uname")!=null)
            {
           %>
           <h2>登陆成功</h2>
           
           <h2>欢迎<font color="red"><%=session.getAttribute("uname") %></font>光临</h2>
           <h3><a href="list_notes.jsp">进入留言管理程序</a></h3>
           <% 
           }
           else
           { //用户未登陆
             response.setHeader("refresh","2;URL=index.jsp");
           %>
             您还未登陆,请先登陆!<br>
             两秒钟后自动跳转到登陆窗口!<br>
             如果没有跳转,请按<a href=index.jsp>这里</a>
           <%
           }
           %>
           </center>
           </body>
           </html>验证成功或失败后的处理
      

  4.   

    你是看的MLDN的视频吧,你仔细读一下你的代码执行流程,看看哪里出问题了!
      

  5.   

    你说你第一次输入错误用户名和密码正常
    第二次就出现错误那你第二次时错误代码输出没   //用户合法,将用户名保存在session之中
            session.setAttribute("uname",rs.getString(1));
           }
           else{
             //保存错误信息
             request.setAttribute("err","错误的用户名或密码");
           }
    这是你第一次时把错误信息保存在request中,下次再登陆时就是新的请求了
    session.setAttribute("err","错误的用户名或密码");测试一下能不能输出当然if(request.getAttribute("err")!=null)改为if(session.getAttribute("err")!=null)
    你试试看看