2012-2-23 13:35:22 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.tm.action.testAction.execute(testAction.java:36)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
public class testAction extends Action {
private ITestService testService; public ITestService getTestService() {
return testService;
} public void setTestService(ITestService testService) {
this.testService = testService;
} @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Test test = new Test();
test.setId("1");
List<Test> list = new ArrayList();
list = testService.findAll(test);
return mapping.findForward("success");
}
}
public class TestDaoImpl extends SqlMapClientDaoSupport implements ITestDao {
private SqlMapExecutor dao;
// public SqlMapClient sqlMap(){
// com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
// java.io.Reader reader;
// try {
// reader = com.ibatis.common.resources.Resources.getResourceAsReader ("sql-map-config.xml");
// sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// return sqlMap;
// }
public List findAll(Test test) {
List <Test> list = null;
try {
list = (List<Test>) dao.queryForList("findAll",test);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
实体属性文件Test.xml
<sqlMap namespace="TEST"> <typeAlias alias="test" type="com.tm.model.Test" /> <resultMap class="test" id="TestResult">
<result property="id" column="ID" />
<result property="username" column="USERNAME" />
</resultMap> <select id="findAll" parameterClass="string" resultMap="TestResult" cacheModel="TEST.cache">
select * from test where id = #id#
</select>
<delete id="deleteById" parameterClass="String" >
delete from test where ID=#id#
</delete>
</sqlMap>spring配置文件
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test2" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sql-map-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean> <bean id="testDao" class="com.tm.dao.TestDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean> <bean id="testService" class="com.tm.service.TestServiceImpl">
<property name="dao">
<ref bean="testDao" />
</property>
</bean> <bean name="/test" class="com.tm.action.testAction"
abstract="false" lazy-init="default" autowire="default" >
<property name="testService">
<ref bean="testService" />
</property>
</bean>
struts配置文件<struts-config>
<form-beans>
<form-bean name="test" type="com.tm.model.Test" />
</form-beans>
<global-exceptions />
<global-forwards /> <action-mappings> <action path="/test"
type="com.tm.action.testAction"
parameter="p" scope="request" validate="false">
<forward name="success" path="/index.jsp" />
</action>
</action-mappings> <message-resources parameter="com.tm.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLoader" value="/WEB-INF/action-servlet.xm" />
</plug-in>
</struts-config>
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.tm.action.testAction.execute(testAction.java:36)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
public class testAction extends Action {
private ITestService testService; public ITestService getTestService() {
return testService;
} public void setTestService(ITestService testService) {
this.testService = testService;
} @Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
Test test = new Test();
test.setId("1");
List<Test> list = new ArrayList();
list = testService.findAll(test);
return mapping.findForward("success");
}
}
public class TestDaoImpl extends SqlMapClientDaoSupport implements ITestDao {
private SqlMapExecutor dao;
// public SqlMapClient sqlMap(){
// com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
// java.io.Reader reader;
// try {
// reader = com.ibatis.common.resources.Resources.getResourceAsReader ("sql-map-config.xml");
// sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// return sqlMap;
// }
public List findAll(Test test) {
List <Test> list = null;
try {
list = (List<Test>) dao.queryForList("findAll",test);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
实体属性文件Test.xml
<sqlMap namespace="TEST"> <typeAlias alias="test" type="com.tm.model.Test" /> <resultMap class="test" id="TestResult">
<result property="id" column="ID" />
<result property="username" column="USERNAME" />
</resultMap> <select id="findAll" parameterClass="string" resultMap="TestResult" cacheModel="TEST.cache">
select * from test where id = #id#
</select>
<delete id="deleteById" parameterClass="String" >
delete from test where ID=#id#
</delete>
</sqlMap>spring配置文件
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test2" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean> <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:sql-map-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean> <bean id="testDao" class="com.tm.dao.TestDaoImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean> <bean id="testService" class="com.tm.service.TestServiceImpl">
<property name="dao">
<ref bean="testDao" />
</property>
</bean> <bean name="/test" class="com.tm.action.testAction"
abstract="false" lazy-init="default" autowire="default" >
<property name="testService">
<ref bean="testService" />
</property>
</bean>
struts配置文件<struts-config>
<form-beans>
<form-bean name="test" type="com.tm.model.Test" />
</form-beans>
<global-exceptions />
<global-forwards /> <action-mappings> <action path="/test"
type="com.tm.action.testAction"
parameter="p" scope="request" validate="false">
<forward name="success" path="/index.jsp" />
</action>
</action-mappings> <message-resources parameter="com.tm.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLoader" value="/WEB-INF/action-servlet.xm" />
</plug-in>
</struts-config>
<param-name>contextConfigLoader</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
运行到这里就有错,,不知道什么原因,,求救!!!
abstract="false" lazy-init="default" autowire="default" >
<property name="testService">
<ref bean="testService" />
</property>
</bean>改为
<bean name="/test" class="com.tm.action.testAction"
abstract="false" autowire="default" id="test">
<property name="testService">
<ref bean="testService" />
</property>
</bean>
<action path="/test"
type="com.tm.action.testAction"
parameter="p" scope="request" validate="false">
<forward name="success" path="/index.jsp" />
</action>改为
<action path="/test"
type="test"
parameter="p" scope="request" validate="false">
<forward name="success" path="/index.jsp" />
</action>你的原因就是struts中的action没有从spring中拿
改完后出现这个错
HTTP Status 500 - No action instance for path /test could be created--------------------------------------------------------------------------------type Status reportmessage No action instance for path /test could be createddescription The server encountered an internal error (No action instance for path /test could be created) that prevented it from fulfilling this request.
当然也有可能我理解错了。
还有如果你delete好使的话 上下这俩个parameterClass
大小写也不一样。
在Test.xml好好查吧。<select id="findAll" parameterClass="string" resultMap="TestResult" cacheModel="TEST.cache">
select * from test where id = #id#
</select><delete id="deleteById" parameterClass="String" >
delete from test where ID=#id#
</delete>
所以查询是空的。
说明你findAll方法没查到数据。导致list为空。。
解决办法。
1,仔细检查下接口是否注入,然后测试下findAll方法是否可以查到数据
2,做个if判断