我用hibernate+struts+spring做了个程序!
搞了几天了!还是没有成功!在网上发了几个贴了!也下载几个相似示例!
问题还是没有解决哦!!现在的问题是当登录提交表单时!出现如下错误:
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.
--------------------------------------------------------------------------------Apache Tomcat/5.0.28相关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="userloginForm" type="com.yourcompany.struts.form.UserloginForm" />  </form-beans>  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="userloginForm"
      name="userloginForm"
      path="/login"
      scope="request"
      type="org.springframework.web.struts.DelegatingActionProxy"
      validate="false">
      <forward name="success" path="/success.jsp" />
    </action>  </action-mappings>  <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
   <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml"/>
  </plug-in>
</struts-config>相关的spring配置文件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.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url"
value="jdbc:microsoft:sqlserver://127.0.0.1:1433">
</property>
<property name="username" value="sa"></property>
<property name="password" value="sa"></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>./UserInfo.hbm.xml</value></list>
</property>
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<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>
</beans>

解决方案 »

  1.   

    很明显是找不到页面的404错误,肯定是页面的请求没有到服务器,建议查看path的设置和页面的url是否一致
      

  2.   

    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> 
    </beans> 
    你仔细看下这段代码吧  错误应该在这里
    <bean   name="/login"   class="com.yourcompany.struts.action.LoginAction"> 
    <property   name="userLoginDao"> 
    <ref   bean="UserLoginDao"/> 
    </property> 
    </bean> 
      

  3.   

    404不是路径问题么
    你看下你的action配置对了没。action类指定对了没
      

  4.   

            我的action的代码如下所示!!
            public   class   LoginAction   extends   Action   
            { 
                   private   UserLoginDao   userlogindao;                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;
                   }
            } 
            jsp内容如下:
            <%@ page language="java" pageEncoding="gb2312"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html lang="true">
      <head>
        <html:base />
        
        <title>userLogin.jsp</title> <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->  </head>
      
      <body>
        <html:form action="/login.do" method="post" focus="username">
          <table border="0">
            <tr>
              <td>用户名:</td>
              <td><html:text property="username" /></td>
            </tr>
            <tr>
              <td>密&nbsp;&nbsp;码:</td>
              <td><html:password property="password" /></td>
            </tr>
            <tr>
              <td colspan="2" align="center"><html:submit value="提交" /></td>
            </tr>
          </table>
        </html:form>
      </body>
    </html:html>

    本人猜测!!可能问题出在applicationContext.xml文件中!!!
    比如如下代码:
    <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>
    更奇怪的是:
    为什么com.yourcompany.struts.action.LoginAction会打不出来呢!也就是IDE找不到包下面的LoginAction类!
      

  5.   

    我不是给你说了么,你仔细看下你那里的代码和我改过之后的区别,
    <property  name="userlogindao">   
    <ref  bean="userlogindao"/>   
    </property>/*修改过的*/
    <property  name="userLoginDao"> // 指定注入的DAO的实例名   
    <ref  bean="UserLoginDao"/>  //你DAO的文件名   
    </property>这里<ref  bean="UserLoginDao"/> 
    name属性是自己取的名字,也就是实例名,而下面的bean属性指定的是的文件名!
      

  6.   

    你这个问题应该是路径不匹配导致路径找不到,可以先检查你的大小写是否正确,如果都没有问题的话你可以把你的<html:form   action="/login.do"   method="post"   focus="username"> 中的action="/login.do"改为action="/工程名/login.do"试试,也许会有你想要的结果.