0 0

struts+spring+hibernate配置出现问题,求解答25

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="userForm" type="cn.iomo.struts.form.UserForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="userForm"
      input="/errors.jsp"
      name="userForm"
      path="/user"
      scope="request"
      type="com.yourcompany.struts.action.UserAction">
      <forward name="success" path="/success.jsp" />
      <forward name="fail" path="/fail.jsp" />
    </action>
</action-mappings>

  
  
<!-- struts和spring联合在一起啦 -->
    <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
	<message-resources parameter="cn.iomo.struts.ApplicationResources" />
	<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
		<set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />
	</plug-in>
</struts-config>










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">
  <!-- 加载spring支持 -->	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/classes/applicationContext.xml
		</param-value>
	</context-param>
	<servlet>
		<servlet-name>context</servlet-name>
		<servlet-class>
			org.springframework.web.context.ContextLoaderServlet
		</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
  <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>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>



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.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="org.gjt.mm.mysql.Driver">
		</property>
		<property name="url"
			value="jdbc:mysql://localhost:3306/dream">
		</property>
		<property name="username" value="root"></property>
		<property name="password" value="123456"></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.MySQLDialect
				</prop>
	            <prop key="hibernate.connection.autocommit">true</prop>
				                                                     <!-- 显示SQL语句 -->
	            <prop key="hibernate.show_sql">true</prop>
		                                                              <!-- 自动提交 -->
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>cn/iomo/vo/User.hbm.xml</value></list>
		</property></bean>	
		<!-- Hibernate模板 -->
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory">
             <ref bean="sessionFactory"/>
        </property>
    </bean>
<!-- DAO管理 -->    
    <bean id="userDAO" class="cn.iomo.dao.UserDAO"></bean>
<!-- DAO实现类管理 -->    
    <bean id="userDAOImpl" class="cn.iomo.dao.impl.UserDAOImpl" parent="userDAO">
       <property name="hibernateTemplate">
             <ref bean="hibernateTemplate"/>
       </property>
    </bean>
<!-- Action管理 -->  
    <bean name="/user" class="cn.iomo.struts.action.UserAction">
        <property name="userDAO">
             <ref local="userDAO"/>
        </property>
    </bean>  
</beans>

问题补充:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<html>
<head>
<title>JSP for UserForm form</title>
</head>
<body>
<center> 
    <h1>用户注册</h1>
    <hr>
<html:form action="/user">
Username : <html:text property="username"/><html:errors property="username"/><br/>
Password : <html:text property="password"/><html:errors property="password"/><br/>
Sex : <html:radio property="sex" value="boy"></html:radio>
      <html:radio property="sex" value="girl"></html:radio><br/>
Email : <html:text property="email"/><html:errors property="email"/><br/>
<html:hidden property="type"/><html:errors property="type"/><br/>
<html:submit value="注册"/>&nbsp;&nbsp;<html:cancel value="重置"/>
</html:form>
</center>
</body>
</html>



当我点击SUBMIT的时候直接跳转到404窗口。应该是没有触发action,请问问题是出现在什么地方?
问题补充:
还有什么地方可以进行改进,优化的。

问题补充:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package cn.iomo.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import cn.iomo.dao.UserDAO;
import cn.iomo.struts.form.UserForm;
import cn.iomo.vo.User;

/**
* MyEclipse Struts
* Creation date: 05-22-2008
*
* XDoclet definition:
* @struts.action path="/user" name="userForm" input="/errors.jsp" scope="request" validate="true"
* @struts.action-forward name="success" path="success.jsp"
* @struts.action-forward name="fail" path="fail.jsp"
*/
public class UserAction extends DispatchAction {
/*
* Generated Methods
*/

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
private UserDAO userDAO;
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
/*
*
* 用户注册
*
*/
public ActionForward regist(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;// TODO Auto-generated method stub
User user = new User();
user.setUsername(userForm.getUsername());
user.setPassword(userForm.getPassword());
user.setSex(userForm.getSex());
user.setEmail(userForm.getEmail());
try {
userDAO.registUser(user);
request.getSession().setAttribute("username", user.getUsername());
return mapping.findForward("success");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return mapping.findForward("fail");
}
}
}
问题补充:
struts配置文件里
<action...
type="com.yourcompany.struts.action.UserAction">这不对,改成

type="org.springframework.web.struts.DelegatingActionProxy">



已经改过了,不行
2008年5月23日 09:11

8个答案 按时间排序 按投票排序

0 0

采纳的答案

web.xml

<!-- Spring初始化 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

2008年5月29日 09:47
0 0

感觉是JAR依赖的问题。

2008年5月27日 09:14
0 0

报错的异常也贴出来啊

把web.xml这段去掉
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContext.xml
</param-value>
</context-param>

2008年5月26日 14:18
0 0

struts配置文件里
<action...
type="com.yourcompany.struts.action.UserAction">这不对,改成

type="org.springframework.web.struts.DelegatingActionProxy">


2008年5月24日 12:51
0 0

你的Struts的action没有交给spring做代理。
看下我的写法
struts配置:
<action path="/action" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy"
validate="false">
</action>

spring配置
<bean name="/action"
class="Action类名如com.myaction.MyAction">
  <property name="bean属性明">
<ref bean="注入的bean" />
  </property>
</bean>

里面/action表示你的Action的路径为action.do
注入的bean为action中需要注入属性bean

2008年5月23日 13:17
0 0

<context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>  
            /WEB-INF/classes/applicationContext.xml  
        </param-value>  
    </context-param>
这段删了

2008年5月23日 13:11
0 0

问题原因肯定是多种多样的,而且开发环境的各种因素都有可能有这种事务。

之前碰到过一次,是因为依赖的jar不全。

解决的有效办法是自己找出原因:配置一下log4j,看看日志输出的错误信息。

2008年5月23日 12:42
0 0

<html:form action="/user">
看看是不是你的路径写正确了。。。

2008年5月23日 09:55

相关推荐

Global site tag (gtag.js) - Google Analytics