我写了3个servlet,第一个为Login,只提交用户名和密码;第二个为Check,在这里连接oracle10g验证用户名和密码;提交用户名和密码后出现如下错误:HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NullPointerException
test.Check.doGet(Check.java:71)
test.Check.doPost(Check.java:106)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
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.20 logs.注:我已经在ClassPath中设置了oracle中lib下的ojdbc14.jar的路径;也已经在oracle10g中设置了我建立的数据库test的监听,但还是一直出现这个错误!请高手指教,在线等一下午,期待您的帮助!

解决方案 »

  1.   

    登录的servlet:import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class Login extends HttpServlet {
    public Login() {
    super();
    } public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("text/html;charset=gbk");
    PrintWriter out = response.getWriter();
    out.println("<HTML>");
    out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("  <BODY>");
    out.print("<h2>登录界面</h2>");
    out.print("<form action=Check method=post><br>");
    out.println("用户名:<input type=text name=username><br>");
    out.println("密  码:<input type=password name=passwd><br>");
    out.println("<input type=submit name=button><br>");
    out.println("<input type=hidden name=sex value=男><br>");
    out.println("</form>");
    out.println("  </BODY>");
    out.println("</HTML>");
    System.out.println("我开始登录了!");
    out.close();
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { this.doGet(request, response);
    } public void init() throws ServletException {
    // Put your code here
    }}
    验证的servlet:import java.io.IOException;
    import java.io.PrintWriter;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;import javax.sql.*;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class Check extends HttpServlet { public Check() {
    super();
    } public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
    } public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { response.setContentType("text/html;charset=GBK");
    String getname=request.getParameter("username");
    String password=request.getParameter("passwd");
    String ss=request.getParameter("sex");
    PrintWriter pw=response.getWriter();

    String sDBDriver="oracle.jdbc.driver.OracleDriver";
    String url="jdbc:oracle:thin@zxh:1521:test";//"scott","tiger"
    String user="scott";
    String pwd="tiger";
    try {
    Class.forName(sDBDriver);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    Connection conn=null;
    Statement state=null;
    ResultSet rs=null;
        try {
    conn=DriverManager.getConnection(url,user,pwd);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    try {
    state=conn.createStatement();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    try {
    rs=state.executeQuery("select pwd from users where name=getname");
    if (rs.next())
    {
    String data=rs.getString(1);
                       if (password.equals(data))
                       {
          response.sendRedirect("Welcome");
          pw.println(ss);
                       } else{
                 response.sendRedirect("Login");
                              }
     }
    } catch (SQLException e) {
    e.printStackTrace();
    }
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException { this.doGet(request, response);
    }
    public void init() throws ServletException {
    // Put your code here
    }}
      

  2.   

    没有人能解决我的问题么?郁闷,方法几乎都试了:设置ClassPath、Window-preferrence-jdk-add extennal jar,tomcat6-lib下也放置了ojdbc14.jar,jdk-lib下也放了,oracle10g也用net manager设置监听了;实在是不知问题出在哪里了!有知道的帮帮我吧,先谢谢了!!!
      

  3.   


    500是内部错误 。
    错误信息是空指针错误,看看是不是request里没值啊?检验一下。
      

  4.   

    顺便问一下,你怎么不用jsp啊?
      

  5.   

    1)将ojdbc14.jar放到工程的lib下试一试
    2)你的数据库是否有scott用于以及有select的权限吗/
      

  6.   

    我确实等了一下午,下班后就上不了网了,ojdbc14.jar也放到工程的lib下了,测试了一下端口监听也联通了;如果我在Check中将用户名和密码设为已知的定值,是可以跳转到Welcome页面的。