java - 基本 Java 登录 Servlet 不工作

标签 java ms-access tomcat servlets

我已经创建了一个 msacess 数据库 mydb.accdb 并将 odbc 源指向它并且我在 lserv.java 文件中有以下代码 tomcat 的所有必要配置都已经完成并且 servlet没有响应,所以我在 init 方法中添加了一个打印错误,它显示了以下错误

javax.servlet.ServletException: Servlet.init() for servlet login threw exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
    java.lang.Thread.run(Thread.java:722)
root cause

java.lang.NullPointerException
    lserv.init(lserv.java:23)
    javax.servlet.GenericServlet.init(GenericServlet.java:212)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)
    org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:600)
    org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1703)
    java.lang.Thread.run(Thread.java:722)

java代码

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class lserv extends HttpServlet
{
Connection con;
ResultSet rs;
Statement st;
PrintWriter out;
public void init() 
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection("jdbc:odbc:mydb");
st=con.createStatement();

}
catch(Exception e)
{
out.println(e.getMessage());
}
}

public void doGet(HttpServletRequest req,HttpServletResponse res) 
{

try
{
out=res.getWriter();
res.setContentType("text/html");
if(req.getParameter("sub").equals("value"))
{
String s1=req.getParameter("t1");
String s2=req.getParameter("t2");
rs=st.executeQuery("SELECT * FROM login WHERE uname='"+s1.trim()+"AND pass='"+s2.trim()+"';" );
if(rs.next())
{
out.println("welcome");
}
else
{
out.println("sorry");
}

}
}
catch(Exception e){
out.println(e.getMessage());
}
}
}

html页面代码

<html>
<title>Login System</title>
<style type="text/css">
div.ex {
width:220px;
padding:10px;
border:5px solid gray;
margin:10px;
}
</style>

<body>
<div class="ex">
<strong>User Login</strong>
<form name=f1 method=get action="http://localhost:8080/login">
User &nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<input type=text name=t1><br>
Password <input type=password name=t2><br>
<input type=submit name=sub value="Login">
</div>

</body>
</html>

我有一个名为 login 的表,其中包含字段 uname 并传递值。

请问有什么问题吗

最佳答案

我觉得这个应该很清楚了;

java.lang.NullPointerException
    lserv.init(lserv.java:23)
    [...]

只需修复代码第 23 行中的 NPE。 :)

对我来说,这行似乎是导致错误的原因:

out.println(e.getMessage());

变量 out 未初始化,因此为 null

关于java - 基本 Java 登录 Servlet 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15044337/

相关文章:

sql - 通过在另一个表中查找来插入记录(Access 2007)

ms-access - 在两个表之间查询以查找包含 Null 值的相似记录

java - 虚拟主机 * :80 is not working

sql-server - 在 MS Access 中从 .mdf 文件创建数据库

java - JSP 尝试将 String 数组转换为 Int 数组

java - Java 中 JAX-RS Restful 服务的无容器部署

java - 如何为这个程序编写TreeMap?

java - "How to pass GregorianCalendar class object to a different class method ?"

java - 想要读取最大 1MB 的文本文件的完整内容

java - 将比较器传递给 java Collections.disjoint