- 浏览: 107584 次
- 性别:
- 来自: 豫章郡→紫禁城
文章分类
最新评论
-
b_xinjun1120:
哥们 给jar包吧 找了好长时间没找全 发到54703380 ...
jBPM工作流应用 -
yueyuxiang:
有没有一种方式,选择按钮的时候不调用action,这样的话反应 ...
Ext二级联动 -
Allan0815:
引用[*][img][/img]
Ext中事件重写 -
henchong:
我现在遇到个问题,treepanel 如何设置,加载页面的时候 ...
Ext的异步加载树 -
laitaogood:
zyshaw 写道supperclass. 多写一个p,害我考 ...
Ext中继承的用法
闲来无事做了一个关于struts2+spring2+hibernate3的整合示例。
废话少说,先看代码!
首先是web.xml文件
然后是struts.xml文件
由以上配置信息可以看到,我们是将所有的CRUD操作写在一个Action中的。那这里的class的值为什么没有包路径呢?因为我们用到了spring,当然是交给spring容器去管理了。请看spring的配置文件applicationContext.xml。
从该配置文件可以看出,我们的程序分成了几层:DAO层,业务层,还有基于struts2的MVC架构。
具体的Action类。
DAO实现类。继承了HibernateDaoSupport。
PO类 及其 映射文件。
hbm文件。
业务逻辑类及其实现。
数据库初始化文件
首页及成功页。
index.jsp。
success.jsp。
好了,这下差不多全了,至于那些包用什么,自己去找吧。呵呵。希望对您有点帮助。
嗯 。 好东西,支持。 不过我认为在Service层还是要先建一个interface再去实现它会好一点。
只是个示例,具体应用可以具体设置分层结构。谢谢关注!
学习中~~支持ING
谢谢美女赏光啊,呵呵
废话少说,先看代码!
首先是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
评论
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
相关推荐
2. **配置文件**:struts-config.xml定义Struts的配置,spring-beans.xml管理Spring的bean,hibernate.cfg.xml配置Hibernate的数据库连接,可能还有实体类的映射文件(hbm.xml或使用注解)。 3. **JSP页面**:展示...
在"10.6struts2+hibernate+spring的整合源代码"中,可能会看到Hibernate的实体类(Entity)、映射文件(.hbm.xml)以及SessionFactory的配置。这些文件用于定义模型对象与数据库表之间的关系,并提供CRUD(创建、...
2. `src`:源代码目录,通常分为Java源码(如action、dao、service、model等包)、配置文件(如hibernate.cfg.xml、spring配置文件等)和资源文件(如国际化、数据库连接等)。 3. `sshext`:可能是特定于EXT3的目录...
Struts1、Spring2和Hibernate2是Java Web开发中的三个重要框架,它们分别负责MVC模式中的表现层、业务层和服务层。这个整合例子旨在展示如何将这三个框架协同工作,以构建一个完整的Java Web应用程序。 Struts1是...
Struts2、Hibernate和Spring是Java企业级开发中三大核心框架,它们的组合通常被称为SSH(Struts2、Spring、Hibernate)集成框架。这个“Struts2+Hibernate+Spring课件 张志峰版”提供了深入学习这三大框架的宝贵资源...
最后,"SSH_TEST"可能是项目的主要源代码或者测试工程,包含Struts2的Action类、Spring的配置文件以及Hibernate的实体类和DAO(Data Access Object)层代码。通过这部分代码,开发者可以深入理解SSH整合的具体实现,...
这个名为"Struts_Spring_Hibernate"的压缩包可能包含了一个示例项目的源代码,项目中会展示如何配置这三个框架的集成。读者可以通过分析代码了解它们之间的协作机制,包括Struts2的配置文件(struts.xml)、Spring的...
5. **ssh_demo**:这个压缩包文件很可能是整合后的示例项目,包含Web应用的各个组成部分,如src目录下的Java源代码、WEB-INF下的web.xml和struts.xml,以及相关的配置文件如hibernate.cfg.xml和applicationContext....
Struts2+Spring+Hibernate+EasyUI 是一个经典的Java Web开发框架组合,广泛应用于企业级应用的构建。这个管理系统利用这些技术的特性,提供了一种高效、稳定且易于维护的解决方案。 **Struts2** 是一个强大的MVC...
Struts2、Spring3、Hibernate4、Maven和EasyUI是Java Web开发中常见的技术栈,它们各自在应用开发中扮演着重要的角色。这个视频教程应该是针对初学者,旨在介绍如何将这些技术整合到一起,构建一个完整的Web应用程序...
Java高级框架应用开发案例教程,主要关注的是Struts2、Spring和Hibernate这三大经典开源框架的整合开发,也称为SSH框架。这些框架是Java企业级应用程序开发中的核心工具,能够帮助开发者实现高效的MVC(Model-View-...
本项目以"Spring+Struts2+Hibernate"三大框架为核心,旨在实现一个校园精品课程网的后台系统,提供丰富的功能和良好的用户体验。下面将详细介绍这三个框架以及它们在该项目中的应用。 1. Spring框架:Spring是Java...
Struts2、Hibernate3和Spring3是Java Web开发中的三个核心框架,它们组合在一起被称为SSH(Struts2、Spring、Hibernate)集成框架。这个框架体系为开发者提供了强大的模型-视图-控制器(MVC)架构支持,数据持久化...
1. **源代码**:包括Struts 2的Action类、Spring的Bean定义以及Hibernate的实体类。 2. **数据库脚本**:用于创建图书管理相关的数据库表,可能还需要附加到名为"test"的数据库。 3. **配置文件**:struts.xml、...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责应用程序的不同层面:Struts2处理MVC模式中的视图与控制器,Spring提供全面的依赖注入和事务管理,而Hibernate则是对象关系映射(ORM)框架,...
《Struts+Spring+Hibernate构建的人力资源管理系统详解》 在IT行业中,开发高效、功能齐全的管理系统是一项挑战,尤其对于初学者来说。"Struts+Spring+Hibernate人力资源管理系统"是一个理想的学习实例,它整合了三...
"Shop"可能是项目的主要源代码文件夹,包含Web相关的配置文件(如struts.xml、spring-context.xml)、控制器类、模型类、服务接口及实现、DAO(Data Access Object)类等。此外,可能会有JSP页面作为视图层展示商品...
Struts2、Hibernate和Spring是Java开发中常用的三大框架...这个博客系统项目的源代码,包含了具体的配置文件、实体类、DAO、Service和Action等,对于学习和理解Struts2、Hibernate、Spring的协同工作有很高的参考价值。
这包括Struts的struts2-core、spring的相关模块(如spring-context、spring-web等)以及Hibernate的hibernate-core、hibernate-entitymanager等。同时,还需要配置相应的XML配置文件,例如Struts的struts.xml、...