Struts2和Spring集成小问题

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

因为Struts2是线程安全的,每次请求的时候都会创建一个Action实例,在与spring集成的时候,基于注解,必须在控制器中加入@Scope("prototype")代码。

再研究Struts2的时候出现以下问题:

Java代码

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

struts.xml中是这样配置的

Java代码

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

以为以上用到了spring的自动扫描工程中的bean,所以class那写的不是bean的全名,研究了好久才发现原来class那写的时候,***个字母必须小写,改后,问题解决……

修改后的struts.xml

Java代码

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

 

【编辑推荐】

  1. Struts2教程:拦截器概述
  2. Struts2教程:上传任意多个文件
  3. Struts2教程:在Action类中获得HttpServletResponse对象
  4. Struts2教程:使用Validation框架验证数据
  5. Struts2教程:使用validate方法验证数据
责任编辑:彭凡 来源: javaeye
相关推荐

2009-07-29 09:54:34

struts2和str

2011-05-13 09:53:02

strutsAjax

2009-07-17 17:45:56

iBATIS Spri

2009-06-19 15:52:58

Struts和Spri

2009-09-14 19:31:36

Struts1和Str

2009-06-25 15:11:28

Struts2教程Struts2程序

2011-05-03 09:40:58

iBatis

2009-02-04 10:51:07

2011-03-30 09:03:57

struts2

2011-11-25 13:01:16

JavaMVCstruts2

2009-07-03 09:35:57

Struts2 JSP

2009-06-04 08:34:24

Struts2配置struts.xml

2009-03-24 10:30:35

SpringStruts集成

2009-06-18 15:56:49

Struts和Spri

2009-06-04 10:44:18

struts2 乱码解决办法

2013-07-18 15:09:27

2009-07-14 17:10:44

struts2webwork

2009-06-25 16:04:30

2009-06-03 14:19:34

Struts2Guice

2009-06-04 09:20:19

struts2 if标使用
点赞
收藏

51CTO技术栈公众号