web.xml文件的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
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">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
   <servlet-name>Action</servlet-name>
  <servlet-class>day001.ActionServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  
  <servlet-mapping>
   <servlet-name>Action</servlet-name>
   <url-pattern>*.action</url-pattern>
  </servlet-mapping>
</web-app>struts-config.xml文件的配置:
<?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>
<form-beans>
<form-bean name="lf" type="day001.LoginForm"/>
<form-bean name="rf" type="day001.RegisterForm"/>
</form-beans>


<action-mappings>
<action path="/login" type="day001.Forward" name="lf" scope="session">
<forward name="success" path="/WEB-INF/jsp/user_login.jsp" />
</action>
<action path="/register" type="day001.Forward" name="rf" scope="session">
<forward name="success" path="/WEB-INF/jsp/user_register.jsp" />
</action>
<action path="/adduser" type="day001.addUserAction" name="lf" scope="session">
<forward name="success" path="login.action" />
<forward name="fail" path="/WEB-INF/jsp/user_register.jsp" />
</action>
</action-mappings>
</struts-config>这里的day001.Forward时那些直接返回success的类!ActionServlet初始化部分代码为:
System.out.println("initconfig()");
Digester digester = DigesterLoader.createDigester(
ActionServlet.class.getClassLoader().getResource("rule.xml"));
 structsConfig = new  StructsConfig();
 System.out.println("digester="+digester);
 digester.push(structsConfig);
 System.out.println("structsConfig="+structsConfig);
 digester.parse(ActionServlet.class.getClassLoader().getResource("struts-config.xml"));
 actionMappings = structsConfig.getActionMappings();
 System.out.println("actionMappings="+actionMappings);
 formBeans = structsConfig.getFormBeans();
 System.out.println("formBeans="+formBeans);
打印的结果是:
initconfig()
digester=org.apache.commons.digester.Digester@caf083
structsConfig=day001.StructsConfig@1742dfe
actionMappings=null
formBeans=null
请问我的错误在哪啊?哪位高手能帮忙解决下!

解决方案 »

  1.   

    我初始化initconfig()后,接着的代码是:在service()方法里取mapping;
    69   String path = getPath(request,response);
    70   ActionMapping mapping = actionMappings.findActionMappings(path);//也就是这行出错, actionMappings=null值引起的错误,我就测试上面的代码发现formBeans也取到的NULL值,这是不对的,也就是加载时没加载到struts-config.xml文件的内容!
    异常代码:空指针异常!即如下:
    java.lang.NullPointerException
    at day001.ActionServlet.service(ActionServlet.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:595)
    环境如下:
    1.JDK1.5.0
    2.MyEclipse5.5.1
    3.数据库为MySql
    4.标记库包有standard.jar,jstl.jar
    5.阿帕奇的包有:commons-loggin.jar,commons-beanutil-1.8.0jar,commons-io-1.4.jar,
    commons-collections-3.2.1.jar,commons-digester-1.8.jar,commons-fileupload-1.2.1.jar
    commons-validate-1.8.0.jar.
    6.服务器用的时tomcat5.0
    7.还有J2EE 1.4.0 Libraries
    就这么多了,谢谢各位高手的关注!如有还不明白之处请提:
      

  2.   

    2楼的建议不错,正在学struts,昨天才学,来学习一下,等高手解决...