我是照着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项目来的。

解决方案 »

  1.   

    忘记说明了,运行http://localhost:8080/SSH2/javaweb/showAll.action时出现错误
      

  2.   

    你的spring 配置action 控制错了<bean name="/showAll" class="com.javaweb.action.ShowAllAction">
    <property name="userService" ref="userService"></property>
    </bean>
      

  3.   


    弱弱的说一句,是不是应该这样。<bean name="showAll" class="com.javaweb.action.ShowAllAction">
    <property name="userService" ref="userService"></property>
    </bean>而且你的Action 没有交给 Spring 创建吧...
      

  4.   

    http://sishuok.com/forum/blogPost/list/2512.html一个十分好的例子
      

  5.   

    web.xml没有spring的监听,应该导致了service没有注入到action中,所以空指针错误了。
    增加类似这样的配置 <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/spring*.xml</param-value>
    </context-param>
    <listener>
    <listener-class>
    org.springframework.web.context.ContextLoaderListener
    </listener-class>
    </listener>
      

  6.   

    顶 楼上   外加 struts.xml中的class=“”  换成spring 配置文件中产生的bean 的名称(showUserAction)