以上是我写的程序,主要是用户登陆方面的,我的意图是:当输入正确的用户名和密码时才能进
入“testsql.jsp"这个页面,如果没有输入登录信息,而直接在浏览器中输入:http://localhost/testsql.jsp,则会提示没有登录请重新登陆!!可是现在有了点小问题,当我不
输入登陆信息,而直接输入:http://localhost/testsql.jsp,出现了以下错误提示。。
  description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:293)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause java.lang.NullPointerException
org.apache.jsp.testsql_jsp._jspService(testsql_jsp.java:73)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:136)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:320)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:293)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
-----------------------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>用 户 登 录</title>
</head>
<body bgcolor="#CC99FF">
<p align="center"><b>&nbsp;用 户 登 录</b></p>
<form method="POST" action="Checklogin.jsp">
<p align="center">用户名:<input type="text" name="loginid" size="20"></p>
<p align="center">密&nbsp; 码:<input type="password" name="loginpwd" size="20"></p>
<p align="center">&nbsp; <input type="submit" value="提    交" name="B1">&nbsp;
<input type="reset" value="重     置" name="B2">&nbsp;&nbsp;&nbsp; </p>
</form>
<p align="center"></p>
</body>
</html>
-------------------------
第二段程序是:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<jsp:useBean id="dbtest" scope="page" class="com.jspdev.ch5.connectdb"/>
<%
   String user=request.getParameter("loginid");
   String pwd=request.getParameter("loginpwd");
   ResultSet rst=dbtest.executesql(user,pwd);
   if(rst.next())
      {    
           session.setAttribute("name",user); 
           response.sendRedirect("testsql.jsp");
        }
    else
       {
           response.sendRedirect("userlogin.html");
         }
    %>    
</body>
</html>
-------------------------------------------------------
第三段程序是:
   <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<html>
<center><b>电脑配置资料</b><center><hr>
欢迎光临:<%=session.getAttribute("name")%>
<table border=1>
<tr>
<td>电脑名称</td><td>IP地址</td><td>用户姓名</td><td>职务</td><td>所在部门
</td><td>CPU型号</td><td>内存容量</td><td>操作系统</td><td>INTERNET服务</td>
</tr>
<%
 if(!session.getAttribute("name").equals(""))
   {
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
       Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=booksys","sa","mayer");
       Statement stmt=con.createStatement();
       ResultSet rst=stmt.executeQuery("select * from pcmanage;");
       while(rst.next())
          {
    out.println("<tr>");
    out.println("<td>"+rst.getString(1)+"</td>");
            out.println("<td>"+rst.getString(2)+"</td>");
            out.println("<td>"+rst.getString(3)+"</td>");
            out.println("<td>"+rst.getString(4)+"</td>");
            out.println("<td>"+rst.getString(5)+"</td>");
            out.println("<td>"+rst.getString(6)+"</td>");
            out.println("<td>"+rst.getString(7)+"</td>");
            out.println("<td>"+rst.getString(8)+"</td>");
            out.println("<td>"+rst.getString(9)+"</td>");
    out.println("</tr>");
          }
    //关闭连接、释放资源
    rst.close();
    stmt.close();
    con.close();
      }
   else
      {
         %>
          <a href="userlogin.html">返回--></a>
   <%
       }
    %>    
</table>
</body>
</html>
    
    
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.io.*"%>
<html>
<center><b>电脑配置资料</b><center><hr>
欢迎光临:<%=session.getAttribute("name")%>
<table border=1>
<tr>
<td>电脑名称</td><td>IP地址</td><td>用户姓名</td><td>职务</td><td>所在部门
</td><td>CPU型号</td><td>内存容量</td><td>操作系统</td><td>INTERNET服务</td>
</tr>
<%
 if(!session.getAttribute("name").equals(""))
   {
       Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
       Connection con=java.sql.DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=booksys","sa","mayer");
       Statement stmt=con.createStatement();
       ResultSet rst=stmt.executeQuery("select * from pcmanage;");
       while(rst.next())
          {
    out.println("<tr>");
    out.println("<td>"+rst.getString(1)+"</td>");
            out.println("<td>"+rst.getString(2)+"</td>");
            out.println("<td>"+rst.getString(3)+"</td>");
            out.println("<td>"+rst.getString(4)+"</td>");
            out.println("<td>"+rst.getString(5)+"</td>");
            out.println("<td>"+rst.getString(6)+"</td>");
            out.println("<td>"+rst.getString(7)+"</td>");
            out.println("<td>"+rst.getString(8)+"</td>");
            out.println("<td>"+rst.getString(9)+"</td>");
    out.println("</tr>");
          }
    //关闭连接、释放资源
    rst.close();
    stmt.close();
    con.close();
      }
   else
      {
         %>
          <p>没有登录,请重新登录</p>
          <a href="userlogin.html">返回--></a>
   <%
       }
    %>    
</table>
</body>
</html>
    
        

解决方案 »

  1.   

    把那些参数一个一个打印出来,就这样跟踪下去看看那个传的值是null
      

  2.   

    这句肯定出错,if(!session.getAttribute("name").equals(""))
    没有经过登录,session.getAttribute("name")==null
    当你试图调用其equals方法时,就会抛出
    java.lang.NullPointerException异常
    建议改成if(session.getAttribute("name")!=null)
      

  3.   

    if(!session.getAttribute("name").equals(""))
    改成
    if(session.getAttribute("name")!=null&&!session.getAttribute("name").equals(""))
    就ok了