错误是HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause java.lang.NullPointerException
org.apache.jsp.login_jsp.CheckLogin(login_jsp.java:49)
org.apache.jsp.login_jsp._jspService(login_jsp.java:108)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.源码是
<%@page contentType="text/html;charset=GB2312" import="java.sql.*" %>
<%@page import="java.io.*"%>
<%!
String CheckLogin(String Login1,String Password1) throws Exception 
{
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
String result=null;
String Login=Login1.trim();
String Password=Password1.trim();
try
{
String dbDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQL数据库引擎
String dbUrl = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Mydb";// 数据源
Class.forName(dbDriver);
con=DriverManager.getConnection(dbUrl);
stmt=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String strSQL="select * from Login"+"where xm='"+Login+"'";
rs=stmt.executeQuery(strSQL);
if(!rs.next())
{
result="无此账号";
}
else if(!rs.getString("PW").equals(Password))
{
result="密码错误";
}
else
{
result="成功登陆";
}
}
catch(Exception ex)
{
result="出现异常";
}
finally
{
rs.close();
stmt.close();
con.close();
}
return result;
}
%>
<%
String UserNm=request.getParameter("UserNm");
String UserPasswd=request.getParameter("UserPasswd");
if(UserNm==null||UserPasswd==null)
response.sendRedirect("LogFrm.html");
String strCheckLogin=CheckLogin(UserNm,UserPasswd);
if(strCheckLogin.equals("成功登陆"))
{
session.setAttribute("UserNm",UserNm);
session.setAttribute("UserPasswd",UserPasswd);
response.sendRedirect("LoginSuccess.jsp");
}
%>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<center>
<font size="5" color="blue">使用者登陆</font>
</center>
<hr>
<center>
<%=strCheckLogin %>
<p></p>
<a href="LogFrm.html">重新登陆</a>
</center>
</body>
</html>

解决方案 »

  1.   

    <%
    System.out.println(request==null);//这加输出看看,我猜是true,request是jsp的内置对象,可以直接用,但是<% %>中的java代码没有获得request对象
    //java.lang.NullPointerException
    //org.apache.jsp.login_jsp.CheckLogin(login_jsp.java:49)String UserNm=request.getParameter("UserNm");
    String UserPasswd=request.getParameter("UserPasswd");
      

  2.   

    String UserNm=request.getParameter("UserNm");
    String UserPasswd=request.getParameter("UserPasswd");
    分别打印出来看看 很可以有null
     
      

  3.   


    String strSQL="select * from Login "+"where xm=\'"+Login+"\'";在表名Login和where 之间加一个空格,单引号加个斜线。String dbDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQL数据库引擎
    String dbUrl = "jdbc:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Mydb";// 数据源
    Class.forName(dbDriver);
    con=DriverManager.getConnection(dbUrl);改为:String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";// SQL数据库引擎
    String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;integratedSecurity=true;DatabaseName=Mydb";// 数据源
    Class.forName(dbDriver);
    con=DriverManager.getConnection(dbUrl,databaseUserName,password);