本人花了一天时间,做了个SSH登录示例!提交表单时出现HTTP Status 404 - Servlet action is not available错误!struts-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="loginForm" type="form.LoginForm">
     <form-property name="userName" type="java.lang.String" />
     <form-property name="password" type="java.lang.String" />
</form-bean>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      name="loginForm"
      path="/login"
      scope="request"
      type="action.LoginAction"
      validate="false">
      <forward name="success" path="/success.jsp"/>
      </action>
  </action-mappings>
  <message-resources parameter="propertice.ApplicationResources" />
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property property="contextConfigLocation" value="/WEB-INF/beans.xml"/>
  </plug-in>
</struts-config>

解决方案 »

  1.   

    还需要你的web.xml文件 以及你测试的时候的url,
    一般应该就是这些地方没有对应
      

  2.   

    如果是用myeclipse做的话
    applicationContext.xml中把datasource的class值改成
    org.springframework.jdbc.datasource.DriverManagerDataSource
    试试
      

  3.   

    绝对是hibernate中的配置文件 也就是楼上所指的applicationContext.xml里的问题
    我想应该是我以前经常遇到这个问题,一般都是采用的代理有问题,比如用这个文件来管理action,而action中没有注入DAO
      具体的还要看你的代码了。。
      

  4.   


    <bean id="userlogindao" class="dao.UserLoginDao">
    <property name="sessionFactory">
    <ref local="sessionFactory"/>
    </property>
    </bean>
    <bean name="/login" class="com.yourcompany.struts.action.LoginAction">
    <property name="userlogindao">
    <ref bean="userlogindao"/>
    </property>
    </bean>
    可能问题正如3楼所说的吧!我的applicationContext.xml中的关键内容如上所示!!
    并没有什么问题哦!!另外我的action中的代码如下所示:public class LoginAction extends Action {
    /*
     * Generated Methods
     */

    private UserLoginDao userlogindao;
    /** 
     * Method execute
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) 
    {
    UserloginForm userloginForm = (UserloginForm) form;
    String userName=userloginForm.getUsername().trim();
    String password=userloginForm.getPassword().trim();


    if(userlogindao.isUser(userName, password))
    {
    return mapping.findForward("success");
    }
    else
    {
    return null;
    }
    }

    public UserLoginDao getUserLoginDao()
    {
    return userlogindao;
    }

    public void setUserLoginDao(UserLoginDao userlogindao)
    {
    this.userlogindao=userlogindao;
    }
    }
      

  5.   

    <property  name="userlogindao">   
    <ref  bean="userlogindao"/>   
    </property>/*修改过的*/
    <property  name="userLoginDao"> // 指定注入的DAO的实例名   
    <ref  bean="UserLoginDao"/>  //你DAO的文件名   
    </property>这里<ref  bean="UserLoginDao"/> 
    name属性是自己取的名字,也就是实例名,而下面的bean属性指定的是的文件名!如果解决了话请给下分 谢谢。。
      

  6.   

    我刚刚遇到过这个问题,用了两天的时间解决了。在网上搜所这个问题,原因很多,没有定论。
    我的问题是因为导入的包有问题
    给你个提示,设置好log4j,这样后台可能有出错的提示,就好办了
      

  7.   

    这种问题,排除自己的一些细节错误,最容易出问题的是jar包,少了某个jar就会无法对bean进行加载,从而出现问题楼上的提示很不错,最好设置好log4j,看看出错提示。
      

  8.   

    你的strutsconfig.xml配置的有问题
      

  9.   

    导入hibernate框架的时候自动导入的也有 log4j这个文件,
    版主的问题很明显,配置的bean大小写没区分