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
请问我的错误在哪啊?哪位高手能帮忙解决下!
<?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
请问我的错误在哪啊?哪位高手能帮忙解决下!
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
就这么多了,谢谢各位高手的关注!如有还不明白之处请提: