`
laitaogood
  • 浏览: 107584 次
  • 性别: Icon_minigender_1
  • 来自: 豫章郡→紫禁城
社区版块
存档分类
最新评论

基于Struts2+Spring2+Hibernate3的CRUD(附源代码)

阅读更多
闲来无事做了一个关于struts2+spring2+hibernate3的整合示例。
废话少说,先看代码!
首先是web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="person" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>person</display-name>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
		<init-param>
			<param-name>classes</param-name>
			<param-value>java.lang.Object</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<!-- 如果要整合spring的话,请添加该监听器 -->
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>
</web-app>

然后是struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.i18n.encoding" value="UTF-8"/>
    <!-- 一定要加,对象工厂是spring -->
    <constant name="struts.objectFactory" value="spring" />
    <!-- 开启开发模式 -->
    <constant name="struts.devMode" value="true" />

    <package name="login" extends="struts-default">
        <!-- 保存 -->
        <action name="Login" method="save" class="LoginAction">
            <result type="redirect-action">list</result>
            <!-- <result name="error">error.jsp</result> -->
        </action>
        <!-- 显示出所有列表 -->
        <action name="list" method="list" class="LoginAction">
        	<result>success.jsp</result>
        </action>
        <!-- 删除 -->
        <action name="delete" method="delete" class="LoginAction">
        	<result type="redirect-action">list</result>
        </action>
        <!-- 更新 -->
        <action name="update" method="update" class="LoginAction">
        	<result>index.jsp</result>
        </action>
    </package>

</struts>

由以上配置信息可以看到,我们是将所有的CRUD操作写在一个Action中的。那这里的class的值为什么没有包路径呢?因为我们用到了spring,当然是交给spring容器去管理了。请看spring的配置文件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="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306"></property>
		<property name="username" value="root"></property>
		<property name="password" value="sa"></property>
		<property name="initialSize" value="10"></property>
		<property name="maxActive" value="50"></property>
		<property name="maxIdle" value="30"></property>
		<!-- 可以继续配置其他的属性 -->
	</bean>
	<!-- 配置session工厂 -->
	<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>
			</props>
		</property>
		<property name="mappingResources">
			<list>
				<value>org/s2s2h3/po/Person.hbm.xml</value></list>
		</property>
	</bean>
	<!-- 配置具体的数据访问类 -->
	<bean id="dao" class="org.s2s2h3.dao.hibernate.PersonHibernateDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory"/>
		</property>
	</bean>
	<!-- 配置具体的业务逻辑类 -->
	<bean id="personService" class="org.s2s2h3.service.PersonService">
		<property name="personHibernateDAO">
			<ref bean="dao"/>
		</property>
	</bean>
	<!-- 配置Action -->
	<bean id="LoginAction" class="org.s2s2h3.action.LoginAction">
		<property name="personService">
			<ref bean="personService"/>
		</property>
	</bean>
</beans>

从该配置文件可以看出,我们的程序分成了几层:DAO层,业务层,还有基于struts2的MVC架构。
具体的Action类。
package org.s2s2h3.action;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.s2s2h3.po.Person;
import org.s2s2h3.service.PersonService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
//import com.opensymphony.xwork2.Action;
//public class LoginAction implements Action
/**
 * CRUD类
 */
public class LoginAction extends ActionSupport
{
	private PersonService personService;
	
	//private Person person = new Person();
	private Person person ;
	private List<Person> persons;
	private String id;
	
	
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public List<Person> getPersons() {
		return persons;
	}

	public void setPersons(List<Person> persons) {
		this.persons = persons;
	}

	public LoginAction()
	{
		
	}

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

	public PersonService getPersonService() {
		return personService;
	}

	public void setPersonService(PersonService personService) {
		this.personService = personService;
	}

	public String execute() throws Exception
	{
		if(person!=null&& !person.equals(""))
		{
			personService.saveOrUpdate(person);
		}
		persons = personService.findAll();
		setPersons(persons);
		
		System.out.println(persons.size());
		return SUCCESS;
    }
	
	public String list() throws Exception
	{
		persons = personService.findAll();
		setPersons(persons);
		return SUCCESS;
	}

	public String save() throws Exception
	{
		personService.saveOrUpdate(person);
		return SUCCESS;
	}
	
	public String update() throws Exception
	{
		person = personService.get(id);
		return SUCCESS;
	}

	public String getValue() throws Exception
	{
		
		return SUCCESS;
	}
	
	public String delete() throws Exception
	{
		//System.out.println("id is ==="+id);
		person = personService.get(id);
		personService.delete(person);
		return SUCCESS;
	}
}

DAO实现类。继承了HibernateDaoSupport。
package org.s2s2h3.dao.hibernate;

import java.util.List;

import org.s2s2h3.dao.PersonDAO;
import org.s2s2h3.po.Person;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class PersonHibernateDAO extends HibernateDaoSupport implements
		PersonDAO {

	@Override
	public void delete(Person person) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().delete(person);
	}

	@Override
	public List<Person> findAll() {
		// TODO Auto-generated method stub
		List<Person> persons = this.getHibernateTemplate().find("from Person");
		return persons;
	}

	@Override
	public Person get(String id) {
		// TODO Auto-generated method stub
		Person person = (Person)this.getHibernateTemplate().get(Person.class, id);
		return person;
	}

	@Override
	public void saveOrUpdate(Person person) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().saveOrUpdate(person);
	}

	@Override
	public void update(Person person) {
		// TODO Auto-generated method stub
		this.getHibernateTemplate().saveOrUpdate(person);
	}

}

PO类 及其 映射文件。
package org.s2s2h3.po;
/**
 * Person entity.
 * 
 * @author MyGod
 */
public class Person implements java.io.Serializable {

	// Fields
	private String id;
	private String name;
	private String age;
	private String sex;
	private String address;

	// Constructors
	/** default constructor */
	public Person() {
	}

	/** minimal constructor */
	public Person(String name) {
		this.name = name;
	}

	/** full constructor */
	public Person(String name, String age, String sex, String address) {
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.address = address;
	}

	// Property accessors

	public String getId() {
		return this.id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return this.age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getSex() {
		return this.sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getAddress() {
		return this.address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

}

hbm文件。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.s2s2h3.po.Person" table="person" catalog="ssh2">
        <id name="id" type="java.lang.String">
            <column name="id" length="10" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="30" not-null="true" />
        </property>
        <property name="age" type="java.lang.String">
            <column name="age" length="10" />
        </property>
        <property name="sex" type="java.lang.String">
            <column name="sex" length="10" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="address" length="50" />
        </property>
    </class>
</hibernate-mapping>

业务逻辑类及其实现。
package org.s2s2h3.service;

import java.util.List;

import org.s2s2h3.dao.hibernate.PersonHibernateDAO;
import org.s2s2h3.po.Person;
/**
 * 
 * @author MyGod
 * @version 1.0
 */
public class PersonService {

	private PersonHibernateDAO personHibernateDAO;
	
	public void setPersonHibernateDAO(PersonHibernateDAO personHibernateDAO) {
		this.personHibernateDAO = personHibernateDAO;
	}

	public void saveOrUpdate(Person person)
	{
		personHibernateDAO.saveOrUpdate(person);
	}

	public void update(Person person)
	{
		personHibernateDAO.update(person);
	}

	public void delete(Person person)
	{
		personHibernateDAO.delete(person);
	}

	public List<Person> findAll()
	{
		return personHibernateDAO.findAll();
	}

	public Person get(String id)
	{
		return personHibernateDAO.get(id);
	}
	
}

数据库初始化文件
create database ssh2;

use ssh2;

create table person
(
	id varchar(10) primary key,
	name varchar(30) not null,
	age varchar(10),
	sex varchar(10),
	address varchar(50)
);

首页及成功页。
index.jsp。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>    
    <title>客户管理</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  <s:if test="null == person">
  Add Customer
  </s:if>
  <s:else>
  Update Customer
  </s:else>
    <s:form action="Login" method="post">
    <table>
    <caption>客户管理</caption>
    	<tr>
    		<td><s:textfield name="person.id" label="ID"/></td>
    	</tr>
        <tr>
            <td><s:textfield name="person.name" label="Name"/></td>
        </tr>
        <tr>
            <td><s:textfield name="person.age" label="Age"/></td>
        </tr>
        <tr>
        	<td><s:textfield name="person.sex" label="Sex"/></td>
        </tr>
        <tr>
        	<td><s:textarea name="person.address" label="Address"/></td>
        </tr>
        <tr>
            <td colspan="2"><s:submit value="提交"/><s:reset value="重填"/></td>
        </tr>
    </table>
	</s:form>
  </body>
</html>

success.jsp。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>客户一览</title>

		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

	</head>

	<body>
		<table>
			<tr>
				<td>
					ID
				</td>
				<td>
					Name
				</td>
				<td>
					Age
				</td>
				<td>
					Sex
				</td>
				<td>
					Address
				</td>
				<td>
					Update
				</td>
				<td>
					Delete
				</td>
			</tr>
			<s:iterator value="persons">
				<tr>
					<td>
						<s:property value="id" />
					</td>
					<td>
						<s:property value="name" />
					</td>
					<td>
						<s:property value="age" />
					</td>
					<td>
						<s:property value="sex" />
					</td>
					<td>
						<s:property value="address" />
					</td>


					<td>
						<a
							href='<s:url action="update"><s:param name="id" value="id" /></s:url>'>Update</a>
					</td>
					<!-- <s:url id="linkTest" action="delete" ><s:param name="id" value="id" /></s:url> -->
					<s:url id="linkTest" action="delete">
						<s:param name="id" value="id" />
					</s:url>
					<td>
						<s:a href="%{linkTest}">Delete</s:a>
					</td>
				</tr>
			</s:iterator>
		</table>
		<hr>
		<a href="index.jsp">Add</a>
	</body>
</html>

好了,这下差不多全了,至于那些包用什么,自己去找吧。呵呵。希望对您有点帮助。
  • s2s2h3.rar (19.4 KB)
  • 描述: 源代码,但是删除了jar包
  • 下载次数: 593
分享到:
评论
9 楼 jfk1983 2011-10-19  
不错啊 支持下  程序员之家
8 楼 jfk1983 2011-10-19  
不错啊 支持下 www.chengxuyuans.com
7 楼 aliuwoai 2010-11-17  
好长的代码啊,有空给歌培训一下成么
6 楼 lixia0417 2010-05-11  
<bean id="LoginAction" class="org.s2s2h3.action.LoginAction">  差了scope的配置吧
5 楼 heppytt 2009-06-27  
如果加上一个分页就好了啊  不错还是谢谢
4 楼 laitaogood 2009-02-20  
yangxiangsui 写道

嗯 。 好东西,支持。 不过我认为在Service层还是要先建一个interface再去实现它会好一点。

只是个示例,具体应用可以具体设置分层结构。谢谢关注!
3 楼 yangxiangsui 2009-02-20  
嗯 。 好东西,支持。 不过我认为在Service层还是要先建一个interface再去实现它会好一点。
2 楼 laitaogood 2008-10-31  
joylili 写道

学习中~~支持ING

谢谢美女赏光啊,呵呵
1 楼 joylili 2008-10-30  
学习中~~支持ING

相关推荐

    struts1.2 + spring2.5 + hibernate3.2框架demo

    2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...

    10.6struts2+hibernate+spring的整合源代码

    在"10.6struts2+hibernate+spring的整合源代码"中,可能会看到Hibernate的实体类(Entity)、映射文件(.hbm.xml)以及SessionFactory的配置。这些文件用于定义模型对象与数据库表之间的关系,并提供CRUD(创建、...

    ext3+struts2+hibernate+spring的CRUD+分页

    2. `src`:源代码目录,通常分为Java源码(如action、dao、service、model等包)、配置文件(如hibernate.cfg.xml、spring配置文件等)和资源文件(如国际化、数据库连接等)。 3. `sshext`:可能是特定于EXT3的目录...

    Struts1+Spring2+Hibernate2整合详细例子

    Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...

    Struts2+Hibernate+Spring课件 张志峰版

    Struts2、Hibernate和Spring是Java企业级开发中三大核心框架,它们的组合通常被称为SSH(Struts2、Spring、Hibernate)集成框架。这个“Struts2+Hibernate+Spring课件 张志峰版”提供了深入学习这三大框架的宝贵资源...

    Struts2+Spring+Hibernate 整合项目

    最后,"SSH_TEST"可能是项目的主要源代码或者测试工程,包含Struts2的Action类、Spring的配置文件以及Hibernate的实体类和DAO(Data Access Object)层代码。通过这部分代码,开发者可以深入理解SSH整合的具体实现,...

    struts2+spring3+hibernate4

    这个名为"Struts_Spring_Hibernate"的压缩包可能包含了一个示例项目的源代码,项目中会展示如何配置这三个框架的集成。读者可以通过分析代码了解它们之间的协作机制,包括Struts2的配置文件(struts.xml)、Spring的...

    struts2+spring2.5+Hibernate3.2整合示例

    5. **ssh_demo**:这个压缩包文件很可能是整合后的示例项目,包含Web应用的各个组成部分,如src目录下的Java源代码、WEB-INF下的web.xml和struts.xml,以及相关的配置文件如hibernate.cfg.xml和applicationContext....

    struts2+spring+hibernate+easyui管理框架

    Struts2+Spring+Hibernate+EasyUI 是一个经典的Java Web开发框架组合,广泛应用于企业级应用的构建。这个管理系统利用这些技术的特性,提供了一种高效、稳定且易于维护的解决方案。 **Struts2** 是一个强大的MVC...

    Struts2+Spring3+Hibernate4+Maven+EasyUI整合入门视频002

    Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的技术栈,它们各自在应用开发中扮演着重要的角色。这个视频教程应该是针对初学者,旨在介绍如何将这些技术整合到一起,构建一个完整的Web应用程序...

    Java高级框架应用开发案例教程 Struts2+Spring+Hibernate

    Java高级框架应用开发案例教程,主要关注的是Struts2、Spring和Hibernate这三大经典开源框架的整合开发,也称为SSH框架。这些框架是Java企业级应用程序开发中的核心工具,能够帮助开发者实现高效的MVC(Model-View-...

    Spring+Struts2+Hibernate三大框架开发校园精品课程网源代码

    本项目以"Spring+Struts2+Hibernate"三大框架为核心,旨在实现一个校园精品课程网的后台系统,提供丰富的功能和良好的用户体验。下面将详细介绍这三个框架以及它们在该项目中的应用。 1. Spring框架:Spring是Java...

    struts2 + hibernate3 + spring3 ssh 用户的增删改查

    Struts2、Hibernate3和Spring3是Java Web开发中的三个核心框架,它们组合在一起被称为SSH(Struts2、Spring、Hibernate)集成框架。这个框架体系为开发者提供了强大的模型-视图-控制器(MVC)架构支持,数据持久化...

    struts+spring+hibernate实现图书修改和删除

    1. **源代码**:包括Struts 2的Action类、Spring的Bean定义以及Hibernate的实体类。 2. **数据库脚本**:用于创建图书管理相关的数据库表,可能还需要附加到名为"test"的数据库。 3. **配置文件**:struts.xml、...

    基于Struts2+Spring+Hibernate的整合开发案例(BOOKADMIN)

    Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts2处理MVC模式中的视图与控制器,Spring提供全面的依赖注入和事务管理,而Hibernate则是对象关系映射(ORM)框架,...

    struts+spring+hibernate人力资源管理系统

    《Struts+Spring+Hibernate构建的人力资源管理系统详解》 在IT行业中,开发高效、功能齐全的管理系统是一项挑战,尤其对于初学者来说。"Struts+Spring+Hibernate人力资源管理系统"是一个理想的学习实例,它整合了三...

    基于Struts+Hibernate+Spring实现的网络商城

    "Shop"可能是项目的主要源代码文件夹,包含Web相关的配置文件(如struts.xml、spring-context.xml)、控制器类、模型类、服务接口及实现、DAO(Data Access Object)类等。此外,可能会有JSP页面作为视图层展示商品...

    struts2+hibernate+spring实现的博客系统

    Struts2、Hibernate和Spring是Java开发中常用的三大框架...这个博客系统项目的源代码,包含了具体的配置文件、实体类、DAO、Service和Action等,对于学习和理解Struts2、Hibernate、Spring的协同工作有很高的参考价值。

    struts+spring+hibernate源代码

    这包括Struts的struts2-core、spring的相关模块(如spring-context、spring-web等)以及Hibernate的hibernate-core、hibernate-entitymanager等。同时,还需要配置相应的XML配置文件,例如Struts的struts.xml、...

Global site tag (gtag.js) - Google Analytics