나는 msacess db mydb.accdb을 생성했고 거기에 ODBC 소스를 알려 주었고 lserv.java 파일에 다음 코드가 있습니다. 모든 필수 구성이 완료되었습니다. 나는 다음과 같은 오류기본 자바 로그인 서블릿이 작동하지 않음
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)
자바 코드
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 페이지 코드
,617을 보여 주었다 init 메소드에 인쇄 오류를 추가하므로 서블릿은 응답이 없었다<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         <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을 입력하고 값을 전달합니다.
무엇이 문제인가요? 도와주세요
내가 할 것을 권하고 싶은 한 가지는 별도의 클래스를 만들고 그 클래스에서 처리하는 모든 DB를 넣는 것입니다. 서블릿의 모든 값을 해당 DB 클래스에 전달할 수 있습니다. 또한 POJO 클래스에 값을 전달하려면 JSTL (google it) 유스bean을 살펴야한다. –