javax.servlet.ServletException: java.lang.NullPointerException
EmpServlet.doPost(EmpServlet.java:52)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
EncodingFilter.doFilter(EncodingFilter.java:25)BaseDAO.javaimport java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.*;
public abstract class BaseDAO {
boolean isTestCase = true;
Connection con;
/**
* Obtain the connection
*/
public Connection getConnection() throws Exception {
try {
if(!isTestCase) {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
// Look up our data source
DataSource ds = (DataSource)envCtx.lookup("jdbc/petclinic");
                        //DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/petclinic");
// Allocate and use a connection from the pool
con = ds.getConnection();
} else {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:petclinicapps","sa","sa");
} } catch (Exception e) {
System.out.println(e) ;
}
return con;
}
/**
* Closes the connection
*/
public  Connection closeConnection(Connection con) {
try {
if (con!=null) {
con.close() ;
} else {
System.out.println("Connection is not open ");
}
} catch (Exception e) {
System.out.println(e) ;
}
return null;
}
/**
* Closes the resultset
*/
public void closeResultSet(ResultSet rs) {
try {
if (rs!=null) {
rs.close() ;
}
} catch (Exception e) {
System.out.println(e) ;
}
}
/**
* Closes the prepared statement
*/
public void closePreparedStatement(PreparedStatement pstmt) {
try {
if (pstmt!=null) {
pstmt.close() ;
}
} catch (Exception e) {
System.out.println(e) ;
}
}
/**
* Closes the statement
*/
public void closeStatement(Statement stmt) throws Exception {
try {
if (stmt!=null) {
stmt.close();
}
} catch (Exception e) {
System.out.println(e) ;
}
} public void closeCursors(Connection con, PreparedStatement pstmt) throws Exception {
closeStatement(pstmt) ;
closeConnection(con) ;
} public void closeCursors(Connection con, Statement stmt, ResultSet rs) throws Exception {
closeResultSet(rs) ;
closeStatement(stmt) ;
closeConnection(con) ;
}
};
EmpServlet.javaimport javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;public class EmpServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
try {
String userName = null ;
String passWord = null ;
String msg = null ;
HttpSession session = null ;
boolean flag = false ;
String param = request.getParameter("param") != null ? request.getParameter("param") : "" ;
userName = request.getParameter("username");
passWord = request.getParameter("password");
if (param.trim().equalsIgnoreCase("logout")) {
session = request.getSession();
session.invalidate();
                                msg=(String) EchoMessage.get(this,"logoutsuccess.message.empservlet");
request.setAttribute("message",msg);
request.getRequestDispatcher("/login.jsp").forward(request,response);
} else {
EmpDTO emp = new EmpDTO() ;
emp.setEmpName(userName) ;
emp.setEmpPassword(passWord) ;
EmpDAO empDao = new EmpDAO() ;
flag = empDao.verify(emp) ;
if (flag) {
session = request.getSession();
session.setAttribute("username",userName);
                                        msg=(String) EchoMessage.get(this,"loginsuccess.message.empservlet");
request.setAttribute("message",msg);
request.getRequestDispatcher("/vetsearch.jsp").forward(request,response);
} else {
                                        msg=(String) EchoMessage.get(this,"loginfail.message.empservlet");
request.setAttribute("message",msg);
request.getRequestDispatcher("/login.jsp").forward(request,response);
}
}
} catch (Exception e) {
throw new ServletException(e.toString());
}
}
};
EncodingFilter.javaimport javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;public class EncodingFilter implements Filter {
    protected FilterConfig filterConfig;
    private String targetEncoding = "gb2312";
    public void destroy() {
        this.filterConfig = null;
    }    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException,
            ServletException {
        HttpServletRequest hreq = (HttpServletRequest)request;
        hreq.setCharacterEncoding(targetEncoding);
        chain.doFilter(request,response);
    }    public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
    }
}
EmpDAO.javaimport java.sql.*;
import javax.sql.*;/**
* Data  access class for an employee 
*/
public class EmpDAO extends BaseDAO {
/**
* Validates the employee
*/
ResultSet rs = null;
Connection con = null;
Statement stmt = null;
PreparedStatement pstmt = null;
boolean flag = false ;
public boolean verify(EmpDTO edto) throws Exception {
try {
con=getConnection() ;
pstmt=con.prepareStatement("Select * from employee where name=?") ;
pstmt.setString(1,edto.getEmpName());
rs=pstmt.executeQuery() ;
if (rs.next()) { 
if ((edto.getEmpName().equalsIgnoreCase(rs.getString(1))) &&
(edto.getEmpPassword().equals(rs.getString(2)))) {
flag = true;
} else {
flag = false;
}
}
return flag;
} catch (Exception e) {
throw  e;
} finally {
closeCursors(con,pstmt,rs) ;
}
}
};
EmpDTO.javapublic class EmpDTO {
private String emp_name;
private String emp_pwd; public void setEmpName(String emp_name) {
this.emp_name=emp_name;
}
public String getEmpName() {
return emp_name;
}
public void setEmpPassword(String emp_pwd) {
this.emp_pwd=emp_pwd;
}
public String getEmpPassword() {
return emp_pwd;
}
};不清楚哪里出的问题。。

解决方案 »

  1.   

    <?xml version="1.0" encoding="UTF-8" ?> 
    - <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
      <description>MSSQL 2000 Test App</description> 
      <display-name xml:lang="zh_CN">petclinic</display-name> 
    - <resource-ref>
      <description>DB Connection</description> 
      <res-ref-name>jdbc/petclinic</res-ref-name> 
      <res-type>javax.sql.DataSource</res-type> 
      <res-auth>Container</res-auth> 
      </resource-ref>
    - <welcome-file-list>
      <welcome-file>login.jsp</welcome-file> 
      </welcome-file-list>
    - <servlet>
      <servlet-name>messagereadingservlet</servlet-name> 
      <servlet-class>MessageReadingServlet</servlet-class> 
    - <init-param>
      <param-name>filename</param-name> 
      <param-value>D:\JBuilderProject\ACCP40S2JavaDesign\petclinic/WEB-INF/messages.txt</param-value> 
      </init-param>
      <load-on-startup>1</load-on-startup> 
      </servlet>
    - <servlet>
      <servlet-name>pageview</servlet-name> 
      <servlet-class>PageView</servlet-class> 
      <load-on-startup>2</load-on-startup> 
      </servlet>
    - <servlet>
      <servlet-name>EmpServlet</servlet-name> 
      <servlet-class>EmpServlet</servlet-class> 
      </servlet>
    - <servlet-mapping>
      <servlet-name>EmpServlet</servlet-name> 
      <url-pattern>/EmpServlet</url-pattern> 
      </servlet-mapping>
    - <servlet>
      <servlet-name>PetServlet</servlet-name> 
      <servlet-class>PetServlet</servlet-class> 
      </servlet>
    - <servlet-mapping>
      <servlet-name>PetServlet</servlet-name> 
      <url-pattern>/PetServlet</url-pattern> 
      </servlet-mapping>
    - <servlet>
      <servlet-name>PetOwnerServlet</servlet-name> 
      <servlet-class>PetOwnerServlet</servlet-class> 
      </servlet>
    - <servlet-mapping>
      <servlet-name>PetOwnerServlet</servlet-name> 
      <url-pattern>/PetOwnerServlet</url-pattern> 
      </servlet-mapping>
    - <servlet>
      <servlet-name>PetVisitServlet</servlet-name> 
      <servlet-class>PetVisitServlet</servlet-class> 
      </servlet>
    - <servlet-mapping>
      <servlet-name>PetVisitServlet</servlet-name> 
      <url-pattern>/PetVisitServlet</url-pattern> 
      </servlet-mapping>
    - <servlet>
      <servlet-name>VetServlet</servlet-name> 
      <servlet-class>VetServlet</servlet-class> 
      </servlet>
    - <servlet-mapping>
      <servlet-name>VetServlet</servlet-name> 
      <url-pattern>/VetServlet</url-pattern> 
      </servlet-mapping>
    - <filter>
      <filter-name>auth</filter-name> 
      <filter-class>AuthFilter</filter-class> 
      </filter>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/headerpet.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/headervet.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/newpetowner.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/ownerupdate.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petnew.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petnewvisit.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petsearch_name.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petsearch.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petupdate.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petview_name.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/petvisithistory.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/vetsearch_name.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/vetsearch_spec.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <url-pattern>/vetsearch.jsp</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <servlet-name>PetOwnerServlet</servlet-name> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <servlet-name>PetServlet</servlet-name> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <servlet-name>PetVisitServlet</servlet-name> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>auth</filter-name> 
      <servlet-name>VetServlet</servlet-name> 
      </filter-mapping>
    - <filter>
      <filter-name>encoding</filter-name> 
      <filter-class>EncodingFilter</filter-class> 
      </filter>
    - <filter-mapping>
      <filter-name>encoding</filter-name> 
      <url-pattern>/*</url-pattern> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>encoding</filter-name> 
      <servlet-name>PetOwnerServlet</servlet-name> 
      </filter-mapping>
    - <filter-mapping>
      <filter-name>encoding</filter-name> 
      <servlet-name>PetServlet</servlet-name> 
      </filter-mapping>
      </web-app>
      

  2.   

    你可以在那个action类中设置一个断点,查看username password 值有没有获取到。