本文所讲的都是Struts2和Spring集成小问题,这些问题虽小,但在实际开发过程中可能演变成阻碍项目进度的大问题,值得我们注意。

由于Struts2是线程安全的,每次恳求的时分都会创立一个Action实例,在与spring集成的时分,根据注解,有必要在控制器中参加@Scope("prototype")代码。

Struts2和Spring集成小问题(struts2和spring整合)  Struts2 第1张

再研讨Struts2的时分呈现以下问题:

Java代码

  1. Exceptionstartingfilterstruts2
  2. Actionclass[LogAction]notfound-action-file:/E:/software/apache-tomcat-6.0.16/webapps/ROOT/WEB-INF/classes/struts.xml:30:51
  3. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:374)
  4. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:329)
  5. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:429)
  6. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
  7. atorg.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
  8. atcom.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
  9. atcom.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
  10. atorg.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
  11. atorg.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
  12. atorg.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
  13. atorg.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
  14. atorg.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
  15. atorg.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
  16. atorg.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
  17. atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4356)
  18. atorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
  19. atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
  20. atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
  21. atorg.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
  22. atorg.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
  23. atorg.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
  24. atorg.apache.catalina.startup.HostConfig.start(HostConfig.java:1147)
  25. atorg.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
  26. atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
  27. atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
  28. atorg.apache.catalina.core.StandardHost.start(StandardHost.java:719)
  29. atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  30. atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  31. atorg.apache.catalina.core.StandardService.start(StandardService.java:516)
  32. atorg.apache.catalina.core.StandardServer.start(StandardServer.java:710)
  33. atorg.apache.catalina.startup.Catalina.start(Catalina.java:578)
  34. atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
  35. atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  36. atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  37. atjava.lang.reflect.Method.invoke(Method.java:597)
  38. atorg.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
  39. atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
  40. 2009-5-2115:05:02org.apache.catalina.core.StandardContextstart
  41. Exceptionstartingfilterstruts2
  42. Actionclass[LogAction]notfound-action-file:/E:/software/apache-tomcat-6.0.16/webapps/ROOT/WEB-INF/classes/struts.xml:30:51
  43. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyAction(XmlConfigurationProvider.java:374)
  44. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:329)
  45. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:429)
  46. atcom.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
  47. atorg.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
  48. atcom.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
  49. atcom.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
  50. atorg.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
  51. atorg.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
  52. atorg.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
  53. atorg.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
  54. atorg.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
  55. atorg.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
  56. atorg.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3709)
  57. atorg.apache.catalina.core.StandardContext.start(StandardContext.java:4356)
  58. atorg.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
  59. atorg.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
  60. atorg.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
  61. atorg.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:924)
  62. atorg.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:887)
  63. atorg.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
  64. atorg.apache.catalina.startup.HostConfig.start(HostConfig.java:1147)
  65. atorg.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
  66. atorg.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
  67. atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
  68. atorg.apache.catalina.core.StandardHost.start(StandardHost.java:719)
  69. atorg.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
  70. atorg.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
  71. atorg.apache.catalina.core.StandardService.start(StandardService.java:516)
  72. atorg.apache.catalina.core.StandardServer.start(StandardServer.java:710)
  73. atorg.apache.catalina.startup.Catalina.start(Catalina.java:578)
  74. atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)
  75. atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  76. atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  77. atjava.lang.reflect.Method.invoke(Method.java:597)
  78. atorg.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
  79. atorg.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
  80. 2009-5-2115:05:02org.apache.catalina.core.StandardContextstart

struts.xml中是这样装备的

Java代码

  1. <context:component-scanbase-package="net.shopin"/>
  2. <actionname="*"class="LogAction"method="{1}">
  3. <resultname="login">/WEB-INF/page/member/login.jsp</result>
  4. </action>
  5. <context:component-scanbase-package="net.shopin"/>
  6. <actionname="*"class="LogAction"method="{1}">
  7. <resultname="login">/WEB-INF/page/member/login.jsp</result>
  8. </action>

认为以上用到了spring的主动扫描工程中的bean,所以class那写的不是bean的全名,研讨了良久才发现本来class那写的时分,***个字母有必要小写,改后,问题解决……

修改后的struts.xml

Java代码

  1. <context:component-scanbase-package="net.shopin"/>
  2. <actionname="*"class="logAction"method="{1}">
  3. <resultname="login">/WEB-INF/page/member/login.jsp</result>
  4. </action>

【修改引荐】

  1. Struts2教程:拦截器概述
  2. Struts2教程:上传恣意多个文件
  3. Struts2教程:在Action类中取得HttpServletResponse目标
  4. Struts2教程:运用Validation结构验证数据
  5. Struts2教程:运用validate办法验证数据
转载请说明出处
知优网 » Struts2和Spring集成小问题(struts2和spring整合)

发表评论

您需要后才能发表评论