SSH整合 出现HTTP Status 404 - Servlet action is not available 错误,请高手指点web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <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>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>stuts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="userForm" type="com.ssh.struts.form.UserForm" />
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="userForm"
      input="/index.jsp"
      name="userForm"
      path="/user"
      scope="request"
      type="com.ssh.struts.action.UserAction" >
      <forward name="success" path="/success.jsp" />
      <forward name="failure" path="/failure.jsp" />
    </action>
  </action-mappings>
  <controller>
   <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/>
  </controller>
  <message-resources parameter="com.ssh.struts.ApplicationResources" />
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
  </plug-in>
</struts-config>applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="net.sourceforge.jtds.jdbc.Driver">
</property>
<property name="url"
value="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=pubs">
</property>
<property name="username" value="sa"></property>
<property name="password" value=""></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ssh/vo/User.hbm.xml</value>
</list>
</property>
</bean>
<bean id="userDAO" class="com.ssh.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="userService" class="com.ssh.service.UserService"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="userDAO" ref="userDAO"/>
</bean>
<bean name="/user" class="com.ssh.struts.action.UserAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="userService" ref="userService"/>
</bean></beans>UserAction.java
public class UserAction extends Action {
private static String SUCCESS = "success";
private static String FAILURE = "failure";
private UserService userService;

public UserService getUserService() {
return userService;
}
public void setUserService(UserService userService) {
this.userService = userService;
}
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm uf = (UserForm) form;// TODO Auto-generated method stub
Logger log = Logger.getLogger(UserAction.class);
log.warn("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
User user = new User();
user.setUsername(uf.getUsername());
user.setPassword(uf.getPassword());
user.setEmail(uf.getEmail());
if(userService.registe(user) != null)
{
return mapping.findForward(SUCCESS);
}
else
{
return mapping.findForward(FAILURE);
}
}
}
index.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html> 
<head>
<title>JSP for UserForm form</title>
</head>
<body>
<html:form action="/user">
username : <html:text property="username"/><html:errors property="username"/><br/>
password : <html:password property="password"/><html:errors property="password"/><br/>
email : <html:text property="email"/><html:errors property="email"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>UserService.java
public class UserService {
private UserDAO userDAO ; public UserDAO getUserDAO() {
return userDAO;
} public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
//用户注册
public User registe(User user)
{
userDAO.save(user);
return user;
}
}

解决方案 »

  1.   

    stuts-config.xml <?xml version="1.0" encoding="UTF-8"?> 
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> 
    <struts-config> 
       <data-sources /> 
       <form-beans > 
         <form-bean name="userForm" type="com.ssh.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="/failure.jsp" /> 
         </action> 
       </action-mappings> 
       <controller> 
       <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> 
       </controller> 
       <message-resources parameter="com.ssh.struts.ApplicationResources" /> 
       <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> 
       <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/> 
       </plug-in> 
    </struts-config> 
    <action 
          attribute="userForm" 
          input="/index.jsp" 
          name="userForm" 
          path="/user" 
          scope="request"> 
    Action 已被被Spring托管,配置文件里type="com.ssh.struts.action.UserAction" 自然找不到。
      

  2.   

    spring的xml呢?你除了action里面用注入以外其他地方还用了么?用了的话是之写了个setXXX方法还是用在程序里写代码注入的?如果是用setXXX的话你的web.xml里要加一句.

            <context-param> 
            <param-name>contextConfigLocation</param-name> 
            <param-value>/WEB-INF/config/applicationContext.xml</param-value> 
    </context-param> 

    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
      

  3.   

    看到了...你的这个基本就是楼上说的问题,你的applicationContext里就没有给Action注入东西啊,另外你给service注入dao的时候看下有没有我说的那种情况.我觉得一般应该是给action注入service然后给service注入dao,给dao注入sessionfactory.除了因为在struts.xml里加了插件可以直接在action里用setXXX注入外,其他的都要在web.xml里加listener才可以.不然也会报你说的那种错误.
      

  4.   

    也有可能是JAR包的问题哦
      

  5.   

    是不应该有TYPE的属性,可是写了也不应该会报错吧?写了只是不会起作用的吧?楼上说是JAR问题的能说下是哪个JAR包的问题嘛?
      

  6.   

    这里肯定要有Type属性的
    不然怎么让Spring去转发你的请求呢?
    stuts-config.xml : <action parameter="method" path="/user"
    type="org.springframework.web.struts.DelegatingActionProxy">
    <forward name="index" path="/index.jsp" />
    <forward name="fail" path="/fail.jsp" />
    </action>
    applicationContext.xml <bean name="/user" class="org.awc.struts.action.UserinfoAction">
    <property name="service">
    <ref bean="UserinfoService" />
    </property>
    <property name="bservice">
    <ref bean="BaseTypeService" />
    </property>
    <property name="tservice">
    <ref bean="TopicService" />
    </property>
    </bean>
      

  7.   

    配置了   <controller> 
       <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> 
       </controller>不时就可以不用TYPE属性了吗?
    我前几天也时出现了这个问题。上网查了查,是MYEclipse5.5用来集成SSH时导入的JAR包之间有冲突。我是把asm_* 那个包给删了就可以了 。
    最好还是配上LOGJ查看下具体是什么问题。然后上网查下是哪个JAR包的问题,应该可以解决。
      

  8.   

    楼主的问题解决了吗,我也遇到此问题。
    我在stuts-config.xml和applicationContext.xml 都配置了,也出错
      

  9.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【EnsonHong】截止到2008-07-16 11:49:17的历史汇总数据(不包括此帖):
    发帖的总数量:5                        发帖的总分数:80                       每贴平均分数:16                       
    回帖的总数量:6                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:2                        结贴的总分数:30                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:3                        未结的总分数:50                       
    结贴的百分比:40.00 %               结分的百分比:37.50 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主该结一些帖子了
      

  10.   

    在WEB。XML文件里加入 
    <context-param> 
            <param-name>contextConfigLocation</param-name> 
            <param-value>/WEB-INF/config/applicationContext.xml</param-value> 
            <load-on-startup>0 </load-on-startup>     </context-param> 
        
        <listener> 
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
        </listener>如果用LISTENER出错。可以换成SERVLET。
      

  11.   

    1.楼主还是贴出完整的异常信息
    2.<servlet-name>action </servlet-name> 
        <url-pattern>*.do </url-pattern> 
      那么<html:form action="/user.do"> 
    3.struts-config.xml 中action 的type可以省略(有无都没有关系,Spring 管理action 通过 path="/user" 与<bean name="/user"  对应)
      

  12.   

    在MyEclipse中重新导入Spring Core包
      

  13.   

    楼主 大家好额,我也是这个问题  SSH整合HTTP Status 404 - Servlet action is not available 错误 就是访问不到 action的方法 ,,求救额,[email protected]
      

  14.   

    看看你的使用的struts JAR包对不对,是struts1.x还是struts2.x区别是很大的。
      

  15.   

    index.jsp里面的action好像也写错了吧。。没有那个/的吧。还有,你的Action给Spring托管,用你的这个方式,你要到代理里面去拿这个Action对象的,要是配置成Control,那就可以把这个type省去不写。。
      

  16.   

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobBiz' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
    这个错误怎么改正了