最近搞了个MyEclipse8,据说支持struts2,盛名之下决定试试,结果……
唉,先上代码!
web.xml <context-param>
<param-name>webAppRootKey</param-name>
<param-value>newpro.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>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.objectFactory.spring.autoWire" value="type" />
<constant name="struts.objectFactory" value="spring" />
<include file="struts-default.xml" />
<package name="comnewpro.web" extends="struts-default">
<action name="login" class="loginAction">
<result name="success">/success.jsp</result>
<result name="failure">/index.jsp</result>
<result name="login.success">/index.jsp</result>
</action>
</package>
</struts>applicationContext.xml <bean id="loginAction" class="com.newpro.web.LoginAction" scope="request">
</bean>
其他省略……
问题就出在红色的部分,如果直接写com.newpro.web.LoginAction可以执行,否则就出错
exceptionUnable to instantiate Action, loginAction, defined for 'login' in namespace '/'loginAction
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:307)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)root causejava.lang.ClassNotFoundException: loginAction
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:146)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:212)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:132)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:288)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) 感觉就是spring没能给struts2创建出action来,不知道错哪了,弄了一天其他的问题一大堆,后来发现都是包有冲突,不知道这次是不是又有哪个冲突了,各位给看看吧!
唉,先上代码!
web.xml <context-param>
<param-name>webAppRootKey</param-name>
<param-value>newpro.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext-*.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>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.objectFactory.spring.autoWire" value="type" />
<constant name="struts.objectFactory" value="spring" />
<include file="struts-default.xml" />
<package name="comnewpro.web" extends="struts-default">
<action name="login" class="loginAction">
<result name="success">/success.jsp</result>
<result name="failure">/index.jsp</result>
<result name="login.success">/index.jsp</result>
</action>
</package>
</struts>applicationContext.xml <bean id="loginAction" class="com.newpro.web.LoginAction" scope="request">
</bean>
其他省略……
问题就出在红色的部分,如果直接写com.newpro.web.LoginAction可以执行,否则就出错
exceptionUnable to instantiate Action, loginAction, defined for 'login' in namespace '/'loginAction
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:307)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395)root causejava.lang.ClassNotFoundException: loginAction
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
com.opensymphony.xwork2.util.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:146)
com.opensymphony.xwork2.ObjectFactory.getClassInstance(ObjectFactory.java:96)
com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:212)
com.opensymphony.xwork2.spring.SpringObjectFactory.buildBean(SpringObjectFactory.java:132)
com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:139)
com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:109)
com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:288)
com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:388)
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:187)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:47)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:478)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) 感觉就是spring没能给struts2创建出action来,不知道错哪了,弄了一天其他的问题一大堆,后来发现都是包有冲突,不知道这次是不是又有哪个冲突了,各位给看看吧!
解决方案 »
- Struts2 select标签问题
- 请大家帮忙看看我的代码,限制机器人访问网站
- 问一个网站链接的问题
- MyEclipse制作JAR包有关资源问题
- jsp时间格式的问题
- oracle数据库的这个Sql语句什么意思!
- [100]求ibatis传值问题?
- j2ee中s2sh项目中,查询结果显示在一个table中,怎样可以对查询出来的结果,进行二次筛选?就是在查询结果中进行二次查询?
- 求救:部署了web modules但web.xml文件却没反应?
- 各位大哥,我用jb5整合weblogic来开发ejb,有个问题,请帮我。
- 最近打算写个关于cas的系列博客,欢迎各位大牛提出宝贵的意见建议
- 在eclipse3.2中如何启动weblogic9.2
是把struts.xml中<action name="login" class="loginAction">换成<action name="login" class="com.newpro.web.LoginAction">就一切正常,想交给spring就不行
<action name="自定义action名" class="loginAction">
所以建议楼主先老老实实用eclipse自己手动编写配置文件,熟悉一下配置。
IDE的强大果然掩盖了很多基础问题。
不应该是楼上包的问题吧
这样 在struts中type设置为如下
<action path="/user"
type="org.springframework.web.struts.DelegatingActionProxy"
name="userForm"
scope="request"
parameter="method"
>
<forward name="list" path="/user/list.jsp" />
<forward name="gotoregister" path="/user/register.jsp" />
</action>而在spring配置中,
<bean name="/user" class="cn.wang.usermanager.actions.UserAction">
<property name="userManager" ref="userManager"/>
</bean>
记住, name属性值要与struts的path属性值相同
<constant name="struts.objectFactory" value="spring" />
这个没必要啦struts2-spring-plugin-2.1.8.1.jar 加上
测试下 <bean id="loginAction" class="com.newpro.web.LoginAction" scope="request">
</bean>是否成功交给spring的ioc啦
</bean>
这个包已经在了啊
感觉就是包的问题,不过不知道哪些有冲突,就是想试试MyEclipse到底有什么问题
那两句不需要的话怎么告诉struts2它的action从spring查找?
scope="request"和scope="prototype"都加试过了,没好使
web.xml中的contextConfigLocation路径写错了……<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:applicationContext-*.xml
</param-value>
</context-param>而我的配置文件叫applicationContext.xml
目前我也不知道struts是在哪设置连接applicationContext.xml路径的
哪位大侠知道麻烦告诉下