我是照着21天学通java web的第二十一章抄的,不过做的时候却出现了错误:type Exception reportmessage  description The server encountered an internal error () that prevented it from fulfilling this request.exception  java.lang.NullPointerException
com.javaweb.action.ShowAllAction.execute(ShowAllAction.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknow
...我的ShowAllAction.java文件内容如下:public class ShowAllAction extends ActionSupport {
private UserService userService;public UserService getUserService() {
return userService;
}public void setUserService(UserService userService) {
this.userService = userService;
}public String execute() throws Exception {
List all = userService.queryAllUser();//就是它出错啦,通过junit测试能够通过,在这里却不行[/color]
// 将用户list存储在request范围内
ServletActionContext.getRequest().setAttribute("all", all);
return SUCCESS;
}
}好像execute中第一句:List all = userService.queryAllUser();运行不通过,因为我把它删除了之后就可以了
但是我使用JUNIT测试时这一句却能够得出数据库中的数据,所以请各位大侠帮下忙,不胜感激!附:
web.xml:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>struts.xml:<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.ui.theme" value="simple"></constant>
<package name="javaweb" namespace="/javaweb" extends="struts-default">
<action name="showAll" class="com.javaweb.action.ShowAllAction">
<result name="success">/WEB-INF/page/showAll.jsp</result>
</action>
<action name="showUser" class="com.javaweb.action.ShowUserAction">
<result name="success">/WEB-INF/page/showUser.jsp</result>
</action>
</package>
</struts>   spring.xml:(省略数据库及sessionFactory配制)...
...<!-- 配置业务逻辑组件 -->
<bean id="userService" class="com.javaweb.service.UserServiceImpl">
<property name="userDAO" ref="userDAO"></property>
</bean><!-- 创建showAllAction实例 -->
<bean id="showAllAction" class="com.javaweb.action.ShowAllAction">
<property name="userService" ref="userService"></property>
</bean><!-- 创建showUserAction实例 -->
<bean id="showUserAction" class="com.javaweb.action.ShowUserAction">
<property name="userService" ref="userService"></property>
</bean>
源代码已经上传到我的CSDN上传文件中,各位同仁麻烦帮一下忙啊!MyEclipse项目来的。
运行http://localhost:8080/SSH2/javaweb/showAll.action时出现错误

解决方案 »

  1.   

    很明显就是找不到该方法,你的配置出问题了。<bean name="/showAll" class="com.javaweb.action.ShowAllAction">
    <property name="userService" ref="userService"></property>
    </bean>
      

  2.   

    要配合struts.xml来做控制的。讲你的package namespace设置为"/"吧
      

  3.   

    如果是:
    userService.queryAllUser();
    出错,
    很可能问题出在:
    <bean id="userService" class="com.javaweb.service.UserServiceImpl">
    <property name="userDAO" ref="userDAO"></property>
    </bean>
    中的UserServiceImpl或userDAO中。
    说明你没有正确的注入userService对象。
      

  4.   

    你要将业务逻辑实例通过spring注入到action中,要通过struts.xml去查找对应的action。
    你这个错误就是spring找不到对应的action类去注入。所以出现错误
      

  5.   

    你最好debug一下看到底哪一行出现了nullpointerexception,然后看这行哪个值为Null!再做处理!
      

  6.   

    你用的是struts2 和spring 整合的吧。你struts.xml 里面的配置错了,action里面的class不能写全路径的。应该和spring里的bean id 对应。
      

  7.   

    说的对,你的好像就不是struts与spring整合。两个是分开的。你应该把class写成相应的bean的名字。你的struts2.xml改为下面试试:<?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
    <constant name="struts.ui.theme" value="simple"></constant>
    <package name="javaweb" namespace="/javaweb" extends="struts-default">
    <action name="showAll" class="showAllAction">
    <result name="success">/WEB-INF/page/showAll.jsp</result>
    </action>
    <action name="showUser" class="showUserAction">
    <result name="success">/WEB-INF/page/showUser.jsp</result>
    </action>
    </package>
    </struts>    这样struts中的action的class对应的就是spring中的bean,才实现了整合。
      

  8.   

    List all = userService.queryAllUser();就是这一行,不知道是没有把spring和struts关联起来还是什么
      

  9.   

    注入配置错误? 导致 null
      

  10.   

    出现了 
    严重: Exception starting filter struts2
    Unable to load configuration. - action - file:/C:/Java/tomcat-7/webapps/SSH2/WEB-INF/classes/struts.xml:6:54 
    是不是我的web.xml也写错啦?
      

  11.   

    这上边不是写好了,在C:/Java/tomcat-7/webapps/SSH2/WEB-INF/classes/struts.xml:6:54 文件的第6行54列。你看看是什么东西。
      

  12.   

     <action name="showAll" class="showAllAction">中少了包的原因?
      

  13.   

    如果queryAllUser()执行了再抱错了,可能是这个方法里面的问题,如果连这个方法都没有进入,那就是你注入的service层的对象为空了。