`
redleaf
  • 浏览: 127718 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

struts+spring+hibernate整合了一天了,还没成功

    博客分类:
  • JAVA
阅读更多
struts+spring+hibernate整合了一天了,还没成功,请各位看看,哪里不对了

错误提示如下:

HTTP Status 404 - Servlet action is not available

type Status report

message Servlet action is not available

description The requested resource (Servlet action is not available) is not available.
Apache Tomcat/5.5.23


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="findUserForm" type="org.xredleaf.form.FindUserForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="findUserForm"
      input="/form/findUser.jsp"
      name="findUserForm"
      path="/findUser" 
      scope="request" 
      validate="true"
     
       />

  </action-mappings>
	
  <message-resources parameter="org.xredleaf.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"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
	<bean id="DataSoure"
		class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName">
			<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
		</property>
		<property name="url">
			<value>jdbc:microsoft:sqlserver://localhost:1433</value>
		</property>
		<property name="username">
			<value>sa</value>
		</property>
		<property name="password">
			<value>123456</value>
		</property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="DataSoure" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.SQLServerDialect
				</prop>
			</props>
		</property> 
		<property name="mappingResources">
			<list>
				<value>org/xredleaf/dao/Sysuser.hbm.xml</value>
			</list>
		</property> 
	</bean>
	<bean id="SysuserDAO" class="org.xredleaf.dao.SysuserDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>
	
	<bean name="/findUser" class="org.xredleaf.action.FindUserAction" singleton="false">  
	    <property name="dao">
	        <ref bean="SysuserDAO"/>
	    </property>
	</bean>
	
</beans>


SysuserDAO.java内容如下:

package org.xredleaf.dao;

import java.util.Date;
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * Data access object (DAO) for domain model class Sysuser.
 * @see org.xredleaf.dao.Sysuser
 * @author MyEclipse - Hibernate Tools
 */
public class SysuserDAO extends HibernateDaoSupport {

    private static final Log log = LogFactory.getLog(SysuserDAO.class);

	//property constants
	public static final String USERNAME = "username";
	public static final String PASSWORD = "password";
	public static final String TYPE = "type";

	protected void initDao() {
		//do nothing
	}
    
	public void SysuserDAO(){
		log.debug("init SysuserDAO");
	}
    public void save(Sysuser transientInstance) {
        log.debug("saving Sysuser instance");
        try {
            getHibernateTemplate().save(transientInstance);
            log.debug("save successful");
        } catch (RuntimeException re) {
            log.error("save failed", re);
            throw re;
        }
    }
    
	public void delete(Sysuser persistentInstance) {
        log.debug("deleting Sysuser instance");
        try {
            getHibernateTemplate().delete(persistentInstance);
            log.debug("delete successful");
        } catch (RuntimeException re) {
            log.error("delete failed", re);
            throw re;
        }
    }
    
    public Sysuser findById( java.lang.Integer id) {
        log.debug("getting Sysuser instance with id: " + id);
        try {
            Sysuser instance = (Sysuser) getHibernateTemplate()
                    .get("org.xredleaf.pojo.Sysuser", id);
            return instance;
        } catch (RuntimeException re) {
            log.error("get failed", re);
            throw re;
        }
    }
    
    
    public List findByExample(Sysuser instance) {
        log.debug("finding Sysuser instance by example");
        try {
            List results = getHibernateTemplate().findByExample(instance);
            log.debug("find by example successful, result size: " + results.size());
            return results;
        } catch (RuntimeException re) {
            log.error("find by example failed", re);
            throw re;
        }
    }    
    
    public List findByProperty(String propertyName, Object value) {
      log.debug("finding Sysuser instance with property: " + propertyName
            + ", value: " + value);
      try {
         String queryString = "from Sysuser as model where model." 
         						+ propertyName + "= ?";
		 return getHibernateTemplate().find(queryString, value);
      } catch (RuntimeException re) {
         log.error("find by property name failed", re);
         throw re;
      }
	}

	public List findByUsername(Object username) {
		return findByProperty(USERNAME, username);
	}
	
	public List findByPassword(Object password) {
		return findByProperty(PASSWORD, password);
	}
	
	public List findByType(Object type) {
		return findByProperty(TYPE, type);
	}
	
    public Sysuser merge(Sysuser detachedInstance) {
        log.debug("merging Sysuser instance");
        try {
            Sysuser result = (Sysuser) getHibernateTemplate()
                    .merge(detachedInstance);
            log.debug("merge successful");
            return result;
        } catch (RuntimeException re) {
            log.error("merge failed", re);
            throw re;
        }
    }

    public void attachDirty(Sysuser instance) {
        log.debug("attaching dirty Sysuser instance");
        try {
            getHibernateTemplate().saveOrUpdate(instance);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw re;
        }
    }
    
    public void attachClean(Sysuser instance) {
        log.debug("attaching clean Sysuser instance");
        try {
            getHibernateTemplate().lock(instance, LockMode.NONE);
            log.debug("attach successful");
        } catch (RuntimeException re) {
            log.error("attach failed", re);
            throw re;
        }
    }

	public static SysuserDAO getFromApplicationContext(ApplicationContext ctx) {
    	return (SysuserDAO) ctx.getBean("SysuserDAO");
	}
}


FindUserAction.java内容如下:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package org.xredleaf.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.xredleaf.dao.Sysuser;
import org.xredleaf.dao.SysuserDAO;
import org.xredleaf.form.FindUserForm;

/** 
 * MyEclipse Struts
 * Creation date: 08-15-2007
 * 
 * XDoclet definition:
 * @struts.action path="/findUser" name="findUserForm" input="/form/findUser.jsp" scope="request" validate="true"
 */
public class FindUserAction extends Action {
	
	private static final Log log = LogFactory.getLog(FindUserAction.class);
	private SysuserDAO dao;
	 
	public FindUserAction(){
		log.debug("init FindUserAction");
	} 
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		log.debug("start...");
		FindUserForm findUserForm = (FindUserForm) form;
		
		List list = dao.getHibernateTemplate().loadAll(Sysuser.class);
		//dao=(SysuserDAO)getBean("SysuserDAO");

		log.debug(list.size()); 
		return null;
	}
	
	public void setDao(SysuserDAO dao){
		this.dao=dao;
	}
	
	public SysuserDAO getDao(){
		return dao;
	}
	
	
	
}



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>
</web-app>
分享到:
评论
30 楼 bei-jin-520 2008-01-07  
在STRUTS-CONFIG.XML配个控制器。你的STRUTS和SPRING就没整合在一快
29 楼 zhangpeng8394 2007-12-27  
在struts配置文件中使用controller
试一下
28 楼 红修罗 2007-11-16  
直接使用Struts2 配置起来比较简单
27 楼 梦之谷 2007-11-15  
这个问题我也碰过,应该是spring和hibernate结合有问题,你试着把
<property name="mappingResources"> 
     <list> 
        <value>org/xredleaf/dao/Sysuser.hbm.xml</value> 
     </list> 
</property> 
这配置注释掉,再运行,如果成功的话那真的是spring和hibernate的结合问题,关于这个问题我也正在困扰之中,急求别人帮我解决啊!!!我的同学跟我说过试着用桥连接,这样成功率会大点
26 楼 mhqawjh 2007-10-13  
在你的struts中的action配置中,应该加上这样一句话
type="org.springframework.web.struts.DelegatingActionProxy"

原因:你这里利用的是Spring委托的方式与Struts集成。
分析下你的代码:
你给出了URL,然后程序会在Struts配置文件里面找相应的Action,但是根本找不到。所以你要把这个任务交给Spring的一个类,让它去帮你找,加上上述代码以后,程序就会在Sring的配置文件里找,这样才找到了你自定义的Action处理类。大功告成!!!
25 楼 daydup 2007-10-10  
action的PATH有问题
24 楼 icream 2007-10-04  
看看hbing的代码吧
struts-config配置错误
需要配置代理bean
不过spring新的配置方式不需要这样配
struts-conifg还是照struts配法
参考下springside
23 楼 lgx522 2007-10-03  
别整了,找个现成的,比如说Appfuse
22 楼 mhqawjh 2007-10-02  
兄弟,看看本人写的这个东西,有没有收获???
http://mhqawjh.iteye.com/blog/128748
21 楼 hunter006 2007-09-25  
404 struts配置问题
20 楼 lsqlister 2007-09-25  
spring和struts有三种集成方式啊。
2.1 在struts-config.xml中加入ContextLoaderPlugIn
ContextLoaderPlunIn是Struts 1.1+ 的插件,用来为 Struts 的 ActionServlet 加载 Spring的Application Context。这个Context引用 WebApplicationContext (由 ContextLoaderListener 加载) 作为它的父Context。默认的context文件是映射的 ActionServlet 的名字,加上 -servlet.xml后缀。 如果 ActionServlet 在 web.xml 里面的定义是 action, 那么默认的文件就是 /WEB-INF/action-servlet.xml。

格式如下:

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"/>

2.2 在Struts-config.xml中加入DelegatingRequestProcessor
用Spring的DelegatingRequestProcessor重载Struts 默认的 RequestProcessor。这样当收到一个针对Action的请求时,DelegatingRequestProcessor会自动从Spring Context中查找对应的Action Bean。

格式如下:
<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/>
</controller>


2.3 建立struts-config.xml与action-servlet.xml中Action与Bean的对应关系
连接 struts-config.xml 和 action-servlet.xml 中的 Action与Bean的桥梁是action 的"path"和 bean 的"name"。
如果你在 struts-config.xml 文件中有如下配置:<action path="/users" .../>
你必须在 action-servlet.xml 中将 Action bean 的名字定义为 "/users":<bean name="/users" class="..."/>
设定完以后,action的type属性可以省略不写,因为所有的Action都在Spring Context中寻找。注意这里bean用的是name属性,而不是id,因为"/"在id属性中是非法字符。
19 楼 tovegar 2007-09-21  
建议看一下modelstry,虽然下载不到了,但是看一下他得主要流程!也是很有用处得
18 楼 abcde10156 2007-09-20  
我以前也出过和你一样的问题,是spring的配置文件不对
17 楼 liuzongan 2007-09-20  
在strurts-config.xml添加
16 楼 liuzongan 2007-09-20  
用Spring的DelegatingRequestProcessor重载Struts 默认的 RequestProcessor。这样当收到一个针对Action的请求时,DelegatingRequestProcessor会自动从Spring Context中查找对应的Action Bean。

格式如下:

<controller>
<set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/>
</controller>
15 楼 wenjinlan 2007-09-19  
web.xml要配上welcomefiles
14 楼 yapi 2007-09-19  
give up ,
take "Rails"
13 楼 fulianglove 2007-08-27  
9 lou right
12 楼 zhao 2007-08-19  
这样每个Action分别在struts-config.xml和Spring配置文件中要配置相应的内容,有个办法,在struts-config.xml配置文件中只加入
<controller processorClass= "org.springframework.web.struts.DelegatingRequestProcessor">
, 随后,只需在Spring配置文件中配置相应的Action即可
11 楼 redleaf 2007-08-19  
问题在前些天已经解决了,太忙了,没回贴,呵呵
主要就是少了个type="org.springframework.web.struts.DelegatingActionProxy"

相关推荐

    struts2+spring2.5+hibernate3.2整合的简单例子

    这两天做的一个适合初学者的SSH框架整合的例子,相信对初学者会有一定帮助。

    Struts2、 Spring、 Hibernate 开发入行真功夫源码

    因此,"Struts2、Spring、Hibernate开发入行真功夫源码"这一资源对于初学者或有一定经验的开发者来说,都是宝贵的参考资料。通过研究这些源码,可以深入了解这些框架的设计思想,为自己的职业生涯打下坚实的基础。

    Struts+Hibernate+Spring+Oracle 车辆管理系统

    5. **整合与优势**: SSH(Struts、Spring、Hibernate)的整合提供了良好的分层架构,使得代码组织清晰,易于维护。通过 Spring 的管理,SSH 之间的协作更加流畅,降低了系统的复杂性。结合 Oracle 数据库,系统能够...

    hibernate3+struts2+spring2 内容管理系统

    【标题】"hibernate3+struts2+spring2 内容管理系统"是一个基于Java技术的开源框架组合,用于构建高效、灵活的企业级Web应用。这个系统利用了Hibernate3作为对象关系映射(ORM)工具,Struts2作为表现层框架,Spring...

    hibernate + spring mvc + spring + maven整合开发 Java 开源博客系统

    在Java开发领域,SSH(Spring、Struts、Hibernate)是一个经典的三大框架组合,用于构建企业级Web应用。然而,随着技术的发展,Struts逐渐被更现代的Spring MVC所取代,形成了新的SSH组合:Spring MVC、Spring、...

    struts2、 spring4、 spring mvc、 hibernate4、 mybatis的三大框架(三套)

    Struts2、Spring4、Spring MVC、Hibernate4和MyBatis是Java开发中非常重要的五个框架,它们分别在Web应用的各个层面提供了强大的支持。这三套框架组合在一起,可以构建出高效、灵活且可维护的Java Web应用程序。 1....

    通用开发平台(spring mvc + spring + bootstrap + hibernate)

    这个框架整合了Spring MVC、Spring、Bootstrap和Hibernate四个核心组件,旨在提高开发效率,提供统一的开发规范,并优化用户体验。 1. Spring MVC:作为Spring框架的一部分,Spring MVC是用于构建Web应用程序的模型...

    struts2.3.7-spring3.1.0-hibernate4.0.0 整合源码

    这个源码包"struts2.3.7-spring3.1.0-hibernate4.0.0 整合源码"提供了一个完整的示例,展示了如何将这三个框架协同工作,实现MVC(模型-视图-控制器)架构和持久化层的高效管理。 Struts2是Apache软件基金会下的一...

    库存管理系统(Hibernate、 Struts2、 Spring、 easyui)

    此外,Spring还整合了Hibernate和Struts2,提供了一站式的解决方案。 4. EasyUI:EasyUI是一个基于jQuery的前端UI库,提供了丰富的组件,如表格、树形结构、下拉框等,用于构建美观、响应式的用户界面。在库存管理...

    spring mvc+spring+hibernate+bootstrap开发失物招领项目包括前台页面和后台管理系统

    这是一个典型的Java Web应用,利用了SSH(Spring、Struts和Hibernate)的经典组合,不过这里Struts被Spring MVC所替代,提供了更灵活的MVC架构。 1. **Spring MVC**:Spring MVC是Spring框架的一部分,用于构建Web...

    struts2.3.7、 spring3.1.0、 hibernate4.0.0 整合源码

    Struts2、Spring和Hibernate是Java开发中三大主流框架,它们各自在Web应用程序的不同层面上发挥作用,共同构建出高效、可维护的系统。Struts2是MVC(模型-视图-控制器)架构的实现,负责处理用户请求并控制应用程序...

    OA项目struts2、 spring、 hibernate 三大框架

    Spring还提供了大量的数据访问抽象,包括JDBC模板和ORM(对象关系映射)支持,与Hibernate整合时能简化数据库操作。 Hibernate是Java领域最著名的ORM框架,它将Java对象与数据库表进行映射,使得开发者可以使用面向...

    图解MyEclipse配置struts+hibernate+spring+FreeMarker

    这几天把hibernate和spring好好看了下,再想想struts的一些东西,决定把3个整合一下一起用,表现层用struts+freemarker,业务层用spring,hibernate处理持久层。在struts中,利用委托,将action的处理委托给spring...

    spring-struts2-hibernate-maven.zip

    本教程将详细介绍如何使用Maven来整合Spring、Struts2和Hibernate,以及如何将它们配置到一个可直接导入IDE的项目中。 【Spring框架】 Spring是一个开源的轻量级Java企业级应用框架,它提供了一个全面的编程和配置...

    OA项目struts2,spring,hibernate 三大框架

    Struts2、Spring和Hibernate是Java开发中三大主流的开源框架,它们各自负责Web应用程序的不同层面,协同工作可以构建出高效、可维护性高的企业级应用。以下将详细阐述这三个框架的核心功能和它们在OA(办公自动化)...

    Java博客系统源码 Hibernate4,Spring4,Struts2 整合 html5后台easyui

    这是一个基于Java技术栈开发的博客系统源码,它采用了经典的SSH框架组合——Hibernate4、Spring4和Struts2,同时结合了HTML5和EasyUI来构建现代化的后台管理界面。这个项目展示了如何在实际开发中整合这些技术,为...

    spirng mvc + spring + hibernate 框架实现的简单进销存后台管理系统

    Spring MVC、Spring 和 Hibernate 是Java开发中非常流行的三大框架,它们各自在应用程序的不同层面上发挥作用,共同构建了一个高效、灵活的后端系统。这个进销存后台管理系统就是基于这三个框架的整合应用,旨在提供...

    Struts2,Spring,Hibernate 开发入行真功夫源码

    Spring还提供了事务管理、数据访问集成、邮件服务、远程调用等功能,并且与众多其他框架如Hibernate、MyBatis等有良好的整合。Spring MVC是Spring的一部分,作为Web MVC框架,它提供了与Struts2类似的MVC功能,但...

Global site tag (gtag.js) - Google Analytics