整合Spring+Hibernate+Struts时抛Servlet action is not available异常解决

本文介绍了一种常见的Servletactionisnotavailable异常及其解决方案,包括检查配置文件路径、添加缺失的jar包、调整hibernate.cfg.xml路径等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Servlet action is not available异常解决方案,根据个人eclipse配置不同,处理方式也不同,仅作参考:

开发环境:MyEclipse4.1 + Eclipse3.1 + tomcat6.0

一、问题描述:

我的整合顺序是:先加载Struts,然后加载Hibernate,最后加载Spring,具体步骤为:

1、检查web.xml文件中ActionServlet配置,具体如下:

<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>

 

 2、struts-config.xml文件配置:

<struts-config>
    
<data-sources />
    
<form-beans>
        
<form-bean name="userForm" type="org.wind.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="org.wind.struts.ApplicationResources" />

    
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
        
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
    
</plug-in>
</struts-config>

 

 3、jsp文件form标记中action属性的路径名是否错误,具体如下:

<html:form action="/user">
    username : 
<html:text property="username"/><html:errors property="username"/><br/>
    password : 
<html:password property="password"/><html:errors property="password"/><br/>
    
<html:submit/><html:cancel/>
</html:form>

 

4、接下来查看applicationContext.xml文件,具体如下:

<beans>
    
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="configLocation">
            
<value>file:src/hibernate.cfg.xml</value>
        
</property>
    
</bean>
    
<bean name="/user" class="org.wind.struts.action.UserAction" abstract="false" singleton="false" lazy-init="default" autowire="default" dependency-check="default">
    
</bean>
</beans>

 

5、以上均为MyEclipse自动生成的代码,看起来似乎没什么错误,路径检查也正确,测试applicationContext.xml注入也没有任何问题,Tomcat也没抛任何异常,但是登录提交时总是抛Servlet action is not available异常,后来在网上找了一些解决方案,综合起来才总算解决了

二、解决方案:

1、检查applicationContext.xml文件和struts-config.xml的路径没有问题

2、检查项目下的bin目录发现原来缺少spring.jar这个包,添加进包以后运行,异常依旧

3、启动Tomcat,查看apache-tomcat-6.0.14/logs/localhost.2008-01-12.log日志,出现错误:

严重: action: null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.hibernate.HibernateException: could not configure from URL: file:src/hibernate.cfg.xml

 

4、原来是file:src/hibernate.cfg.xml文件找不到,修改为:

<beans>
    
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        
<property name="configLocation">
            
<value>classpath:hibernate.cfg.xml</value>
        
</property>
    
</bean>
    
<bean name="/user" class="org.wind.struts.action.UserAction" abstract="false" singleton="false" lazy-init="default" autowire="default" dependency-check="default">
    
</bean>
</beans>

 

再次启动Tomcat,提交,显示结果OK

 

三、总结:

出现 Servlet action is not available问题的处理要因开发环境不同而处理方式不同,但个人觉得最重要的是解决方法:

1、首先检查是否缺少jar包

2、然后检查file:src/hibernate.cfg.xml问题

3、最主要的是要多看容器的日志文件

2、struts-config.xml文件要访问的Action,具体如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值