首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

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

2012-10-24 
struts+spring+hibernate整合了一天了,还没成功struts+spring+hibernate整合了一天了,还没成功,请各位看看

struts+spring+hibernate整合了一天了,还没成功
struts+spring+hibernate整合了一天了,还没成功,请各位看看,哪里不对了

错误提示如下:

HTTP Status 404 - Servlet action is not availabletype Status reportmessage Servlet action is not availabledescription 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"/></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" /></property></bean><bean name="/findUser" 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 constantspublic 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>
<controller processorClass= "org.springframework.web.struts.DelegatingRequestProcessor">, 随后,只需在Spring配置文件中配置相应的Action即可</controller></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属性中是非法字符。 21 楼 hunter006 2007-09-25   404 struts配置问题 22 楼 mhqawjh 2007-10-02   兄弟,看看本人写的这个东西,有没有收获???
http://mhqawjh.iteye.com/blog/128748 23 楼 lgx522 2007-10-03   别整了,找个现成的,比如说Appfuse 24 楼 icream 2007-10-04   看看hbing的代码吧
struts-config配置错误
需要配置代理bean
不过spring新的配置方式不需要这样配
struts-conifg还是照struts配法
参考下springside 25 楼 daydup 2007-10-10   action的PATH有问题 26 楼 mhqawjh 2007-10-13   在你的struts中的action配置中,应该加上这样一句话
type="org.springframework.web.struts.DelegatingActionProxy"

原因:你这里利用的是Spring委托的方式与Struts集成。
分析下你的代码:
你给出了URL,然后程序会在Struts配置文件里面找相应的Action,但是根本找不到。所以你要把这个任务交给Spring的一个类,让它去帮你找,加上上述代码以后,程序就会在Sring的配置文件里找,这样才找到了你自定义的Action处理类。大功告成!!! 27 楼 梦之谷 2007-11-15   这个问题我也碰过,应该是spring和hibernate结合有问题,你试着把
<property name="mappingResources"> 
     <list> 
        <value>org/xredleaf/dao/Sysuser.hbm.xml</value> 
     </list> 
</property> 
这配置注释掉,再运行,如果成功的话那真的是spring和hibernate的结合问题,关于这个问题我也正在困扰之中,急求别人帮我解决啊!!!我的同学跟我说过试着用桥连接,这样成功率会大点 28 楼 红修罗 2007-11-16   直接使用Struts2 配置起来比较简单 29 楼 zhangpeng8394 2007-12-27   在struts配置文件中使用controller
试一下 30 楼 bei-jin-520 2008-01-07   在STRUTS-CONFIG.XML配个控制器。你的STRUTS和SPRING就没整合在一快

热点排行