用struts+hibernate没错用struts+hibernate+spring就这样,为什么呢???

weiweigogo 2008-10-02 12:30:44
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>


<title>display</title>

</head>

<body>
<h2>用户信息</h2><br></br>
<c:forEach items="${sessionScope['Users.display.list']}" var="user">
<a href="<c:url value="/getusers.do?method=delete&id=${user.id}"/>">删除</a>
<a href="<c:url value="/getusers.do?method=edit&id=${user.id}"/>">编辑</a>
用户编号:<cut value="${user.id}"/> <br></br>
用户姓名:<cut value="${user.usernamr}"/> <br></br>
用户邮箱:<cut value="${user.email}"/> <br></br>
用户电话:<cut value="${user.tel}"/> <br></br>
用户地址:<cut value="${user.adress}"/> <br></br>
<br></br>

</c:forEach>
<a href="edit.jsp">返回首页</a>
</body>
</html>
//////////////////////////////////
package com.yourcompany.struts.action;

import java.util.List;

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

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;

import com.wei.getusers.model.Users;
import com.wei.getusers.service.GetusersManager;

public class GetusersAction extends DispatchAction {


private GetusersManager manager ;

public void setGetusersManager(GetusersManager manager) {
this.manager = manager;
}

public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

HttpSession session=request.getSession();
List list=manager.Getusers();
session.setAttribute("Users.display.list",list);
return mapping.findForward("success");
}
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm m = (DynaActionForm) form;
Users user;
String id=request.getParameter("id");
if(id==null)
user=new Users();
else
user=manager.Getuser(id);
user.setAdress((String)m.get("adress"));
user.setEmail((String)m.get("email"));
user.setPassword((String)m.get("password"));
user.setTel((String)m.get("tel"));
user.setUsernamr((String)m.get("usernamr"));
manager.save(user);
return list(mapping,form,request,response);
}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {

manager.delete(request.getParameter("id"));

return list(mapping,form,request,response);
}
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm m = (DynaActionForm) form;
HttpSession session=request.getSession();
String id=request.getParameter("id");
Users user=manager.Getuser(id);
m.set("usernamr", user.getUsernamr());
m.set("password", user.getPassword());
m.set("tel", user.getTel());
m.set("email", user.getEmail());
m.set("adress", user.getAdress());
session.setAttribute("Users.display.id", id);

return mapping.findForward("edit");
}
}
///////////////////////////
会有这样的错误
javax.servlet.ServletException: java.lang.IllegalArgumentException: attempt to create delete event with null entity
org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


高手帮我看一下啊
...全文
268 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
laowai411 2011-04-06
  • 打赏
  • 举报
回复
我也遇见和你一样的问题,我认为应该是jsp向action传递时出多了,action收不到,所以认为数据库不存在此条记录。
ldwtxwh 2010-11-26
  • 打赏
  • 举报
回复
我也遇到这个问题,顶一下
跑跑鱼 2010-08-23
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分!
hepeng19861212 2008-10-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhj92lxs 的回复:]
lz还是把完整的信息贴出来吧
manager.delete这个方法也贴出来看看
[/Quote]
信息还是太少了
zhj92lxs 2008-10-02
  • 打赏
  • 举报
回复
lz还是把完整的信息贴出来吧
manager.delete这个方法也贴出来看看
cuilike 2008-10-02
  • 打赏
  • 举报
回复
public Users Getuser(Integer id) {
getHibernateTemplate().get(Users.class, id);
return null;
}
LZ的这个方法返回的是null啊。。。delete方法当然报错,
Dave 2008-10-02
  • 打赏
  • 举报
回复
attempt to create delete event with null entity
你检查下获取对象这块……
获取对象时print输出一下,看一下,是那里报错了。
weiweigogo 2008-10-02
  • 打赏
  • 举报
回复
明明可以获得这条记录的id,却删不掉,但可以添加
weiweigogo 2008-10-02
  • 打赏
  • 举报
回复
<?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="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="mappingResources">
<list>
<value>com/wei/getusers/model/Users.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
</bean>

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
<property name="username" value="root"></property>
<property name="password" value="862517a"></property>
</bean>

<bean id="getusersDAO"
class="com.wei.getusers.dao.hibernate.GetusersDaoHibernate"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="getusersManager"
class="com.wei.getusers.service.impl.GetusersManagerImpl"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="getusersDao">
<ref bean="getusersDAO" />
</property>
</bean>

</beans>
/////////////////////////////////
<?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 name="/getusers"
class="com.yourcompany.struts.action.GetusersAction" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="getusersManager">
<ref bean="getusersManager" />
</property>
</bean>
</beans>
////////////////////////////////////
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>
<form-beans >
<form-bean name="getusersForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="password" type="java.lang.String" />
<form-property name="adress" type="java.lang.String" />
<form-property name="email" type="java.lang.String" />
<form-property name="usernamr" type="java.lang.String" />
<form-property name="tel" type="java.lang.String" />
</form-bean>
<form-bean name="deleteForm" type="org.apache.struts.action.DynaActionForm" />

</form-beans>

<global-exceptions />
<global-forwards >
<forward
name="success"
path="/display.jsp"
redirect="true" />
<forward
name="edit"
path="/edit.jsp"
redirect="true" />

</global-forwards>

<action-mappings >
<action
attribute="getusersForm"
input="/getusers.jsp"
name="getusersForm"
parameter="method"
path="/getusers"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" />



</action-mappings>

<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/action-servlet.xml"/>
</plug-in>

</struts-config>

///////////////////////////////
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>


<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>getusers.jsp</welcome-file>
</welcome-file-list>
</web-app>

weiweigogo 2008-10-02
  • 打赏
  • 举报
回复
package com.wei.getusers.service;

import java.util.List;

import com.wei.getusers.model.Users;

public interface GetusersManager {
public void save(Users user);

public void delete(String id);

public List Getusers();

public Users Getuser(String id);

}
//////////////////////
package com.wei.getusers.service.impl;

import java.util.List;

import com.wei.getusers.dao.GetusersDAO;
import com.wei.getusers.model.Users;
import com.wei.getusers.service.GetusersManager;

public class GetusersManagerImpl implements GetusersManager {
private GetusersDAO dao;

public void setGetusersDao(GetusersDAO dao) {
this.dao = dao;
}

public Users Getuser(String id) {
return dao.Getuser(new Integer(id));

}

public List Getusers() {

return dao.Getusers();
}

public void delete(String id) {

dao.delete(new Integer(id));
}

public void save(Users user) {
dao.save(user);
}

}
/////////////////////////////////////////////////////
package com.wei.getusers.dao;

import java.util.List;

import com.wei.getusers.model.Users;

public interface GetusersDAO {
public void save(Users user);

public void delete(Integer id);

public List Getusers();

public Users Getuser(Integer id);

}
//////////////////////
package com.wei.getusers.dao.hibernate;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.wei.getusers.dao.GetusersDAO;
import com.wei.getusers.model.Users;

public class GetusersDaoHibernate extends HibernateDaoSupport implements
GetusersDAO {

public Users Getuser(Integer id) {
getHibernateTemplate().get(Users.class, id);
return null;
}

public List Getusers() {
return getHibernateTemplate().find("from Users");

}

public void delete(Integer id) {

getHibernateTemplate().delete(Getuser(id));

}

public void save(Users user) {
getHibernateTemplate().saveOrUpdate(user);

}

}
《JavaWeb整合开发完全自学手册》介绍如何整合Struts+Hibernate+Spring+Eclipse进行J2EE开发,所有实例都基于MyEclipseIDE开发,引领读者快速进入基于JavaWeb的J2EE应用领域。《JavaWeb整合开发完全自学手册》主要介绍StrutsHibernateSpring、Eclipse的基础知识,如何整合这4个开源框架进行J2EE开发,如何基于MyEclipseIDE进行开发,J2EE开发的基础和基础环境搭配,StrutsHibernateSpring、Eclipse四个框架的使用,如何整合Struts+Hibernate+Spring+Eclipse框架。Struts+Hibernate+Spring+Eclipse已经成为轻量级开发J2EE的标准配置,被称为SHS经典组合,这也是目前Java程序员必须掌握的技能。由于使用范围广也使它们的版本更替非常之快,尤其是Java5推出以后这些项目都采用了Java5中的特性来重新实现并增加了很多新特性。以国内使用最广泛的Struts为例,其新版本Struts2与前一版Struts1.x已经有了天壤之别。Hibernate也从2.0升级为3.X,近期Spring也最新推出了2.5版。读者如果再参考以前的版本书籍学习,无异于南辕北辙,而《JavaWeb整合开发完全自学手册》的编写就是基于当前最新的版本,也着重于新版本中新功能的介绍。本书适合Java开发Web应用和J2EE的初学者阅读,同时也适合有一定基础并希望提高自己的系统设计水平的读者阅读。《JavaWeb整合开发完全自学手册》的重点第二篇Struts、第三篇Hibernate、第四篇Spring采用了相似的行文结构,条理清楚,不仅可作为stepbystep的入门书籍,也可作为读者自学的案头参考书。

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧