我写了一个登陆程序。Action类是如下方式 
public   class   LoginAction   extends   DispatchAction   { 
public   ActionForward   selectOneUser(ActionMapping   mapping,   ActionForm   form, 
HttpServletRequest   request,   HttpServletResponse   response)   throws   Exception   { 
//   TODO   Auto-generated   method   stub 
String   name=request.getParameter( "name "); 
LoginForm   loginForm   =   LoginImplFactory.getLoginInstance().selectOneUser(name); 
if(loginForm==null){ 
request.setAttribute( "errors ",   "用户名不存在 "); 
return   mapping.findForward( "login_failure "); 
}else   if(!loginForm.getPassword().equals(request.getParameter( "password "))){ 
request.setAttribute( "errors ",   "密码不正确 "); 
return   mapping.findForward( "login_failure "); 
}else{ 
request.setAttribute( "person ",   loginForm); 
return   mapping.findForward( "login_success "); 



Login.jsp         主要代码如下: <html:form   action= "login.do?method=selectOneUser "> ... </form> 
但是无法运行,错误如下:
HTTP   Status   500   -   -------------------------------------------------------------------------------- type   Exception   report message   description   The   server   encountered   an   internal   error   ()   that   prevented   it   from   fulfilling   this   request. exception   javax.servlet.ServletException:   java.lang.NullPointerException 
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523) 
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421) 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
root   cause   java.lang.NullPointerException 
org.shuye100.struts.action.LoginAction.selectOneUser(LoginAction.java:45) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native   Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown   Source) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown   Source) 
java.lang.reflect.Method.invoke(Unknown   Source) 
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274) 
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194) 
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) 
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) 
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
note   The   full   stack   trace   of   the   root   cause   is   available   in   the   Apache   Tomcat/6.0.13   logs. 
-------------------------------------------------------------------------------- 
后台错误如下:
警告:   Unhandled   Exception   thrown:   class   java.lang.NullPointerException 
2007-11-9   11:27:57   org.apache.catalina.core.StandardWrapperValve   invoke 
严重:   Servlet.service()   for   servlet   action   threw   exception 
java.lang.NullPointerException 
at   org.shuye100.struts.action.LoginAction.selectOneUser(LoginAction.java:45) 
at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native   Method) 
at   sun.reflect.NativeMethodAccessorImpl.invoke(Unknown   Source) 
at   sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown   Source) 
at   java.lang.reflect.Method.invoke(Unknown   Source) 
at   org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274) 
at   org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194) 
at   org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) 
at   org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) 
at   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 
at   org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) 
at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) 
at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
at   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) 
at   org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
at   java.lang.Thread.run(Unknown   Source) struts-config配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="loginForm" type="org.shuye100.struts.form.LoginForm" />  </form-beans>  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
    parameter="method"
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="org.shuye100.struts.action.LoginAction" >
      <forward name="login_success" path="/login_success.jsp"/>
      <forward name="login_failure" path="/login_failure.jsp"/>
      </action>  </action-mappings>  <message-resources parameter="org.shuye100.struts.ApplicationResources" />
</struts-config>帮帮忙啊!在线等!!谢谢啦!!!!

解决方案 »

  1.   


    class       java.lang.NullPointerException   说明你的代码有问题,可能是这里:
    else       if(!loginForm.getPassword().equals(request.getParameter(   "password   "))){   
    request.setAttribute(   "errors   ",       "密码不正确   "); 你前面仅仅判断loginForm!=null是不够的,因为密码可能为空,你贸然使用equals()很可能要甩空指针了。
    其他的你再看看吧。
      

  2.   

    <html:form       action=   "login.do?method=selectOneUser   ">   ...   </form>   试试改成 action="/login.do?method=selectOneUser"
      

  3.   

    String       name=request.getParameter(   "name   ");   
    LoginForm       loginForm       =       LoginImplFactory.getLoginInstance().selectOneUser(name); 
    NAME如果等于NULL的话,LoginImplFactory.getLoginInstance().selectOneUser(name); 会不会出现问题?
    还有你DEBUG看看在哪出现的错误,selectOneUser(LoginAction.java:45)45行在哪个位子?