struts2-hibernate-spring整合 web访问action问题
大家好,在公司长时间没做codeing工作,对一些简单基础的框架运用生疏了好多好多,现阶段重新拾起编码能力,自己搭建简单的ssh2整合框架,遇到了让我很困惑的问题,希望能得到大家的帮助和解决。先在这谢谢你们!我的问题是:我在web界面index.jsp请求struts2配置中的一个action。action调用hibernate自动生成的dao.findALL方法查询到数据,action成功,返回success.jsp。但让我非常困惑的是如果action名称为"employee",请求就会失败:
<action name="employee" class="EmployeeAction"> 就会抛空指针异常
Messages:
File: com/wr/action/EmployeeAction.java
Line number: 28
--------------------------------------------------------------------------------
Stacktraces
java.lang.NullPointerException
com.wr.action.EmployeeAction.execute(EmployeeAction.java:28)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
只要action名称随便改一个,比如说employee123 ,
<action name="employee123" class="EmployeeAction"> 再次请求action,程序就能正常访问,且正常跳转到success.jsp页面来。
这问题已困扰两天了。刚无意中改下action名称才发现这错误的地方。我的问题是:为什么action名称不能使用"employee",和哪些地方配置有冲突?可我也没发现和哪些配置名称有冲突的地方。不知道了。。。。希望能得到贴里朋友的分析帮助和指点。先谢谢你们。。。。
Web 框架 Java --------------------编程问答-------------------- mark一下,看大神回复 --------------------编程问答-------------------- 配置文件中的name和页面中的action设置一致就OK了 --------------------编程问答--------------------
楼主说了 只要action名称随便改一个,比如说employee123 这样的话页面中的action和配置文件中的action应该是一样的吧 --------------------编程问答-------------------- com.wr.action.EmployeeAction.execute(EmployeeAction.java:28)写的是什么代码? --------------------编程问答--------------------
struts2配置文件中action名称和页面访问action名称是一致的。就action名称配置为”employee“ 访问程序就抛空指针异常。。。。 --------------------编程问答--------------------
里面就是执行数据库查询方法,成功范围success。
@Override
public String execute() throws Exception {
List<Employee> employees = employeeDAO.findAll();
return SUCCESS;
} --------------------编程问答-------------------- 查看下web.xml 的配置文件,action的后缀你写的是什么,还有查看(EmployeeAction.java:28)是否有对象没有声明! --------------------编程问答-------------------- <action name="employee123" class="EmployeeAction">
这样写你确定是执行的是com.wr.action.EmployeeAction这个类下的方法 --------------------编程问答--------------------
web.xml action路径名:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
EmployeeAction.java中对象也已经声明了吧,否则action名称为employee123 它也不会执行成功啊。。。
--------------------编程问答-------------------- 本人已在图中写出详细做法,请参考图:
--------------------编程问答-------------------- 那个图就是精髓所在 --------------------编程问答-------------------- 那个图就是精髓所在 --------------------编程问答-------------------- 那个图就是精髓所在,简单明了 --------------------编程问答-------------------- 直接配置,或者交给spring 配置,用注解等 --------------------编程问答-------------------- 有理 --------------------编程问答-------------------- 你acton 的class必须是包名加类名 不要搞错了 --------------------编程问答--------------------
非常感谢这位朋友能做出这么详细的效果图来,我的struts2.xml文件action就是配置的是sprin配置文件中的bean id ,也就是和你的第一种方案是吻合的。现在问题是:struts2配置文件中action名称不能为"employee" 只要是"employee" 就抛空指针异常,如非<action name="employee234" class="EmployeeAction">程序访问action就是正常的。。。。。搞不懂。。重新copy项目运行,结果依旧。。。。
补充:Java , Web 开发