HTTP Status 404 - Servlet action is not available--------------------------------------------------------------------------------type Status reportmessage Servlet action is not availabledescription The requested resource (Servlet action is not available) is not available.提示这种错误 难道真要换回Spring1去?
你使用Struts1.1呢? 看你的配置没有问题,
用的1.2配置没什么问题 不用spring的时候struts一点问题没有 不用spring管理struts的action,就只在struts的配置文件中使用plugin载入spring,也是一样的错误,.do文件都提示HTTP Status 404 - Servlet action is not available
Struts+hibernate
都没什么问题
如果不整合Spring和Struts,只在wen.xml中使用listener加载spring,不用struts的时候能用,
一旦在web.xml中再加入了
<servlet>
<servlet-name>action </servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet </servlet-class>
............
</servlet-mapping>
又就不能用了,什么原因啊?
用的eclipse6
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring*.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<listener-class>
org.springframework.web.context.request.RequestContextListener
</listener-class>
</listener>
午饭以后试试,只用org.springframework.web.context.request.ContextLoaderListener
为什么加入Struts的action就出错呢?
Struts中整合Spring还是出错,快崩溃了。
如果不用
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener>
不加spring,只用struts一直没问题
或者只用spirng+servlet 不用struts也没问题
在web.xml中配置了spring,在配置了struts就不行了
在struts配置文件中使用plugin也不行,.do文件不能访问,去掉plugin又行了
头都大了
把SPRING2换成SPRING1试试.
难道真要换回Spring1去?
看你的配置没有问题,
不用spring管理struts的action,就只在struts的配置文件中使用plugin载入spring,也是一样的错误,.do文件都提示HTTP Status 404 - Servlet action is not available
spring管理struts的action,action不用写type
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"><struts-config> <data-sources /> <form-beans >
<form-bean name="userForm" type="org.tie.struts.form.UserForm" /> </form-beans>
<global-exceptions /> <global-forwards /> <action-mappings >
<action
attribute="userForm"
input="/index.jsp"
name="userForm"
path="/user"
scope="request"
>
<forward name="success" path="/success.jsp" />
<forward name="failure" path="/index.jsp" />
</action>
</action-mappings>
<controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor" /> </controller> <message-resources parameter="org.tie.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in>
</struts-config>
用MyEclipse6.0发布的时候 applicationContext.xml在classes目录下
指定plugin contextConfigLocation的时候value="/WEB-INF/applicationContext.xml" 可以
value="/WEB-INF/classes/applicationContext.xml"就完蛋了 搞的真郁闷
asm-2.2.3和hibernate-annotations两个JAR包还要删除 不然还没法用
用MyEclipse6.0发布的时候 applicationContext.xml在classes目录下
指定plugin contextConfigLocation的时候value="/WEB-INF/applicationContext.xml" 可以
value="/WEB-INF/classes/applicationContext.xml"就完蛋了 搞的真郁闷
asm-2.2.3和hibernate-annotations两个JAR包还要删除 不然还没法用
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(应该和2.0是一样的,只不过是2.5把包分开了,2.5中的struts支持是在dist\modules\spring-webmvc-struts.jar里)
我的配置和楼主一样的,如下(这是我自己的例子)
<action-mappings >
<action path="/listDocument" scope="request" name="queryDocumentForm" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="success" path="/documentList.jsp"></forward>
</action>
</action-mappings>
........
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
</plug-in>applicationContext.xml也位于/WEB-INF/classes下,配置如下
<bean name="/listDocument" class="com.lan.oaapp.web.ListDocumentAction" scope="prototype"></bean>action中我是用注释写的,不过用2.0声明式的注入应该也没有问题
public class ListDocumentAction extends Action {
@Autowired
private DocumentService documentService;
....
}
以上如果换成2.0的话应该没有问题,因为我的service和持久层用的是anotation所以就没有全改成2.0,希望楼主能配置成功!
我的web.xml如下配置的
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>/WEB-INF/classes/applicationContext.xml </param-value>
</context-param> 才能指定到classpath路径中