- 浏览: 58483 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
jichao113:
感谢楼主 谢谢
Struts2+Spring2+Hibernate3开发环境搭建及项目实例,泣血推荐,一步一步跟我做 -
ray_guanliang:
谢谢楼主分享
Struts2+Spring2+Hibernate3开发环境搭建及项目实例,泣血推荐,一步一步跟我做 -
wjb_forward:
写得很清晰,谢谢
Struts2+Spring2+Hibernate3开发环境搭建及项目实例,泣血推荐,一步一步跟我做 -
hlw579:
谢谢楼主啦
顶起来
Struts2+Spring2+Hibernate3开发环境搭建及项目实例,泣血推荐,一步一步跟我做 -
xyaoyuan:
谢谢楼主的东西,归我很有帮助。
Struts2+Spring2+Hibernate3开发环境搭建及项目实例,泣血推荐,一步一步跟我做
一、准备工作
开发环境:MyEclipse6.0 +JDK6.0+Tomcat5.0+SQLServer
struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个人力资源的系统,提供基本的增加、删除、修改、查询等功能。更详细请看附件:SSH增删查改详解。
二、建立数据库
三、建立数据化持久层
建立Hibernate逆向工程
1、建立实体类Employee及Employee.hbm.xml映射文件。
Employee.java
3、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
开发环境:MyEclipse6.0 +JDK6.0+Tomcat5.0+SQLServer
struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个人力资源的系统,提供基本的增加、删除、修改、查询等功能。更详细请看附件:SSH增删查改详解。
二、建立数据库
三、建立数据化持久层
建立Hibernate逆向工程
1、建立实体类Employee及Employee.hbm.xml映射文件。
Employee.java
package com.fejd.companyrm.model; /** * Employee entity. * * @author MyEclipse Persistence Tools */ public class Employee implements java.io.Serializable { private Long id; private String name; private String address; private String phone; // Constructors /** default constructor */ public Employee() { } /** full constructor */ public Employee(String name, String address, String phone) { this.name = name; this.address = address; this.phone = phone; } // Property accessors public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getAddress() { return this.address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return this.phone; } public void setPhone(String phone) { this.phone = phone; } } 2、把实体类Employee的属性映射到Employee表,生成下面的Employee.hbm.xml文件:<?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="com.fejd.companyrm.model.Employee" table="Employee" schema="dbo" catalog="CompanyRM"> <id name="id" type="java.lang.Long"> <column name="ID" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="Name" length="50" /> </property> <property name="address" type="java.lang.String"> <column name="Address" length="50" /> </property> <property name="phone" type="java.lang.String"> <column name="Phone" length="50" /> </property> </class> </hibernate-mapping>
四、建立DAO层
1、建立DAO的接口类:EmployeeDaopackage com.fejd.companyrm.dao; import java.util.List; import com.fejd.companyrm.model.Employee; public interface EmployeeDao { public void add(Employee e);//添加新雇员 public Employee getEmployee(Long id);//根据雇员的ID显示雇员的所有信息 public List getEmployees();//显示所有雇员信息 public void delete(Long id);//根据雇员ID删除雇员 public void saveOrUpdate(Employee e);//根据雇员ID,修改或更新某个雇员信息 public List getEmployee(String name,String phone);//判断是否为合法雇员 }
2、实现此接口的类文件,EmployeeDaoImplpackage com.fejd.companyrm.dao.impl; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import com.fejd.companyrm.dao.EmployeeDao; import com.fejd.companyrm.model.Employee; public class EmployeeDaoImpl extends HibernateDaoSupport implements EmployeeDao { private SessionFactory sessionFactory; public SessionFactory getFactory() { return sessionFactory;//hibernate SessionFactory对象,由spring注入. } public void setFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory;//get/set方法在spring注入时使用 } public void add(Employee e) { /** * 函数说明:添加雇员 * 参数说明:对象 * 返回值: */ this.getHibernateTemplate().save(e); } public void delete(Long id) { /** * 函数说明:删除雇员 * 参数说明: 对象 * 返回值: */ this.getHibernateTemplate().delete(this.getEmployee(id)); } public Employee getEmployee(Long id) { /** * 函数说明:获得一个雇员的所有信息 * 参数说明: ID * 返回值:对象 */ return (Employee)this.getHibernateTemplate().get(Employee.class, id); } public List getEmployees() { /** * 函数说明:获得所有雇员的信息 * 参数说明: * 返回值:信息的集合 */ return this.getHibernateTemplate().find("from Employee"); } public List getEmployee(String name,String phone){ Object o[]={name,phone}; System.out.println("查询的结果是:"+name+phone); return this.getHibernateTemplate().find("select employee from Employee as employee where employee.name=? and employee.phone=?",o); } public void saveOrUpdate(Employee e) { /** * 函数说明:修改雇员信息 * 参数说明: 对象 * 返回值: */ this.getHibernateTemplate().saveOrUpdate(e); } }
五、建立业务逻辑层
注明:在业务逻辑层需要认真思考每个业务逻辑所能用到的持久层对象和DAO。DAO层之上是业务逻辑层,DAO类可以有很多个,但业务逻辑类应该只有一个,可以在业务逻辑类中调用各个DAO类进行操作。
1、创建服务接口类EmployeeManagerpackage com.fejd.companyrm.service; import java.util.List; import com.fejd.companyrm.model.Employee; public interface EmployeeManager { public void addEmployee(Employee e);//增加雇员 public List listEmployee();//获得雇员的集合 public void deletEmployee(Long id);//删除雇员 public void savaOrUpdate(Employee e);//修改雇员 public Employee getEmployee(String name,String phone);//根据雇员的某个记录查询雇员信息 public Employee ggetEmployee(Long id);//根据ID查询雇员,实现修改操作 }
2、实现此接口类:EmployeeManagerImplpackage com.fejd.companyrm.service.impl; import java.util.List; import com.fejd.companyrm.dao.EmployeeDao; import com.fejd.companyrm.model.Employee; import com.fejd.companyrm.service.EmployeeManager; public class EmployeeManagerImpl implements EmployeeManager { private EmployeeDao employeeDao; public void setEmployeeDao(EmployeeDao employeeDao) { this.employeeDao = employeeDao; } public void addEmployee(Employee e) { /** * 函数说明:添加雇员 * 参数说明:对象 * 返回值: */ this.employeeDao.add(e); } public void deletEmployee(Long id) { /** * 函数说明:删除雇员 * 参数说明: 对象 * 返回值: */ this.employeeDao.delete(id); } public List listEmployee() { /** * 函数说明:获得所有雇员的信息 * 参数说明: * 返回值:信息的集合 */ return this.employeeDao.getEmployees(); } public Employee getEmployee(String name,String phone) { List list=employeeDao.getEmployee(name,phone); if(list!=null&&list.size()==1){ System.out.println("查询的结果是:"+name+phone); return (Employee)list.get(0); } else return null; } public void savaOrUpdate(Employee e) { /** * 函数说明:修改雇员信息 * 参数说明: 对象 * 返回值: */ employeeDao.saveOrUpdate(e); } public Employee ggetEmployee(Long id) { /** * 函数说明:获得一个雇员的信息 * 参数说明: ID * 返回值:对象 */ return employeeDao.getEmployee(id); } }
六、创建Action类:EmployeeAction.java:package com.fejd.companyrm.action; import java.util.List; import com.fejd.companyrm.model.Employee; import com.fejd.companyrm.service.EmployeeManager; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class Employee Action extends ActionSupport implements ModelDriven{ private EmployeeManager employeeManager; private List employees; private Employee employee; private Long id; public void setEmployeeManager(EmployeeManager employeeManager) { this.employeeManager = employeeManager; } public String add(){ employeeManager.addEmployee(employee); return SUCCESS; } public String list(){ this.employees=employeeManager.listEmployee(); return SUCCESS; } public String delete(){ employeeManager.deletEmployee(id); return SUCCESS; } public String saveOrUpdate(){ employeeManager.savaOrUpdate(employee); return SUCCESS; } public String edit(){ employee=employeeManager.ggetEmployee(id); return SUCCESS; } public String save(){ Long id=this.getEmployee().getId(); employee=employeeManager.ggetEmployee(id); return SUCCESS; } public String update(){ Long id=this.getEmployee().getId(); employeeManager.savaOrUpdate(this.getEmployee()); return SUCCESS; } public Employee getEmployee() { return employee; } public void setEmployee(Employee employee) { this.employee = employee; } public List getEmployees() { return employees; } public void setEmployees(List employees) { this.employees = employees; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public Employee getModel() { return employee; } }
七、Web页面
1、主页面:index.jsp,其代码如下<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <html> <head> </head> <body> <center><h1>人力资源管理系统</h1></center> <hr color="red"> <center> <a href="add.jsp">雇员登记</a> <a href="list.action">显示用户列表</a> </center> </body> </html>
2、增加页面add.jsp:<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib uri="/struts-tags" prefix="s" %> <html> <head> <title>add.jsp</title> <!-- 增加雇员信息页面 --> </head> <body> 请输入雇员信息: <s:form action="add"> <s:textfield name="employee.name" label="姓名"></s:textfield> <s:textfield name="employee.address" label="地址"></s:textfield> <s:textfield name="employee.phone" label="电话"></s:textfield> <s:submit></s:submit> </s:form> </body> </html>
3、列表页面:list.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> <title>list.jsp</title> <!-- 显示用户列表页面 --> </head> <body> 输出雇员的信息:<br /> <s:iterator value="employees"> <table> <tr><td>编号:</td><td><s:property value="id"/></td></tr> <tr><td>姓名:</td><td><s:property value="name" /></td></tr> <tr><td>地址:</td><td><s:property value="address"/></td></tr> <tr><td>电话:</td><td><s:property value="phone"/></td></tr> <tr><td align="center"> <a href="edit.action?id=<s:property value='id' /> ">更新</a></td> <td align="center"> <a href='<s:url action="delete"><s:param name="id" value="id"></s:param></s:url>'>删除</a> </td> </tr> </table> </s:iterator> </body> </html>
注明:
(1)、<s:property> :得到'value'的属性,如果value没提供,默认为堆栈顶端的元素。其相关的参数及使用如下表所示:
名称 必需 默认 类型 描述
default 否 String 如果属性是null则显示的default值
escape 否 true Booelean 是否escape HTML
value 否 栈顶 Object 要显示的值
id 否 Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
(2)、<s:Iterator>:用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。其相关的参数及使用如下表所示:
名称 必需 默认 类型 描述
status 否 String 如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈
value 否 Object/String 要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象
id 否 Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
(3)、<s:param>:为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。 value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:
<param name="color">blue</param><!-- (A) -->
<param name="color" value="blue"/><!-- (B) -->
(A)参数值会以String的格式放入statck.
(B)该值会以java.lang.Object的格式放入statck.
4、修改页面:update.jsp<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> <%@ taglib uri="/struts-tags" prefix="s"%> <html> <head> </head> <body> <s:form action="update.action" method="post"> <s:hidden name="employee.id"></s:hidden> <s:textfield name="employee.name" label="用户名"></s:textfield> <s:textfield name="employee.address" label="地址"></s:textfield> <s:textfield name="employee.phone" label="电话"></s:textfield> <s:submit></s:submit> </s:form> </body> </html>
八、配置信息:
1、struts.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <constant name="struts.objectFactory" value="spring" /> <package name="struts2" extends="struts-default"> <action name="add" class="addBean" method="add"> <result type="redirect">list.action</result> </action> <action name="list" class="listBean" method="list"> <result>/list.jsp</result> </action> <action name="delete" class="deleteBean" method="delete"> <result type="redirect">list.action</result> </action> <action name="update" class="updateBean" method="saveOrUpdate"> <result type="redirect">list.action</result> <result name="input">/update.jsp</result> <result name="error">/error.jsp</result> </action> <action name="edit" class="editBean" method="edit"> <result>/update.jsp</result> </action> <action name="login" class="loginBean" method="login"> <result>/add.jsp</result> <result name="error">/login.jsp</result> </action> </package> </struts>
2、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.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url"
value="jdbc:microsoft:sqlserver://localhost:1433">
</property>
<property name="username" value="sa"></property>
<property name="password" value="sa"></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.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/fejd/companyrm/model/Employee.hbm.xml</value></list>
</property></bean>
<bean id="employeeDao"
class="com.fejd.companyrm.dao.impl.EmployeeDaoImpl" abstract="false"
lazy-init="default" autowire="default" dependency-check="default">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<bean id="employeeManager"
class="com.fejd.companyrm.service.impl.EmployeeManagerImpl"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="employeeDao">
<ref bean="employeeDao" />
</property>
</bean>
<bean id="addBean" class="com.fejd.companyrm.action.EmployeeAction" scope="prototype">
<property name="employeeManager">
<ref bean="employeeManager" />
</property>
</bean>
<bean id="deleteBean" class="com.fejd.companyrm.action.EmployeeAction" scope="prototype">
<property name="employeeManager">
<ref bean="employeeManager" />
</property>
</bean>
<bean id="listBean" class="com.fejd.companyrm.action.EmployeeAction" scope="prototype">
<property name="employeeManager">
<ref bean="employeeManager" />
</property>
</bean>
<bean id="updateBean" class="com.fejd.companyrm.action.EmployeeAction" scope="prototype">
<property name="employeeManager">
<ref bean="employeeManager" />
</property>
</bean>
<bean id="editBean" class="com.fejd.companyrm.action.EmployeeAction" scope="prototype">
<property name="employeeManager">
<ref bean="employeeManager"/>
</property>
</bean>
<bean id="loginBean" class="com.fejd.companyrm.action.EmployeeAction" scope="prototype">
<property name="employeeManager">
<ref bean="employeeManager" />
</property>
</bean>
</beans>
3、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
引用
含附件,导入项目即可
- CompanyRM.rar (17.8 KB)
- 下载次数: 546
- SSH增删查改详解.rar (54.1 KB)
- 下载次数: 567
发表评论
文章已被作者锁定,不允许评论。
相关推荐
SSH增删查改(人力资源管理系统功能模块) struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个人力资源的系统,提供基本的增加、删除、修改、查询等功能。 合适初学者,很不错的,简单明了
在这个“SSH增删查改小实例”中,我们将探讨如何利用这三个组件来实现基本的数据操作:增加(Add)、删除(Delete)、查询(Search)和修改(Update)。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP...
### 基于SSH框架的人力资源管理系统增删查改功能详解 在现代软件开发中,SSH(Struts + Spring + Hibernate)框架被广泛应用于构建企业级应用,特别是在人力资源管理系统的开发中。本文将深入探讨如何利用SSH框架...
在"SSH增删查改"的学习过程中,你需要掌握以下关键点: 1. **环境配置**:设置JDK、Tomcat服务器,安装并配置Maven或Ivy等依赖管理工具,引入SSH框架的jar包。 2. **Struts2配置**:创建struts.xml文件,定义...
在SSH中,Spring作为整个系统的粘合剂,可以整合Struts2和Hibernate,负责管理Action和DAO(数据访问对象)的实例化,以及事务控制,确保增删查改操作的正确性和原子性。 在实现增删查改功能时,首先需要设计好...
在这个“ssh实现增删查改的例子”项目中,我们将探讨SSH框架如何协同工作,实现对MySQL数据库的数据操作。 首先,Struts2作为MVC框架,主要负责处理用户的HTTP请求。它通过Action类和ActionMapping将用户请求映射到...
在"SSH+Oracle增删查改"的主题中,我们将探讨如何在SSH框架下使用Oracle数据库进行数据的插入、更新、删除和查询操作。 **1. Struts2** Struts2是MVC(Model-View-Controller)架构的一部分,负责处理HTTP请求和...
在这个"SSH2项目增删改查事例"中,我们可以深入理解如何利用SSH2框架来实现数据库操作的基本功能。 1. **Struts2**:Struts2作为MVC框架,负责处理HTTP请求并分发到相应的Action类,它是业务逻辑的入口。在增删改查...
在这个“ssh实现增删查改”的项目中,我们主要探讨如何利用SSH框架进行基本的数据操作。 首先,Struts2是MVC(Model-View-Controller)设计模式的实现,负责处理HTTP请求,转发到相应的Action,并将结果返回给View...
在"SSH2 增删查改 Mysql"项目中,核心知识点主要围绕以下几个方面: 1. **Struts2框架**:Struts2是基于Model-View-Controller(MVC)架构的开源框架,它提供了一种用于处理HTTP请求和响应的机制。在SSH2中,Struts...
用当今主流的框架ssh做的人力资源管理系统,本系统包括:系统管理、人力资源档案管理、薪酬管理、调动管理、培训管理、激励管理、招聘管理、权限管理和录用管理、标准化数据报表十个模块。(用于太大,我吧lib下的包...
通过这个SSH2增删查改项目,初学者可以系统学习SSH2整合、数据库操作以及Web应用开发的基本流程。实践是最好的老师,动手操作并理解每个环节的原理,对于提升技能非常有帮助。希望这个项目能帮助你快速掌握SSH2的...
最新 struts2 spring3 hibernate4 环境增删查改web开发 在开发环境:eclipse4+tomcat7+struts2+spring3+hibernate4+SQL2005 增删查改web开发简单示例,所括所有的包。下载后修改applicationContext.xml连接数据库的...
本资料"SSH_EMPLOYEE.rar"重点介绍了如何利用SSH框架来实现员工信息管理系统的用户登录及数据操作,包括增(Add)、删(Delete)、改(Update)和查(Select)四大功能。 首先,SSH框架中的Struts2作为表现层,负责...
在"SSH增删改查 分页"这个主题中,我们主要讨论如何利用SSH框架实现对数据的CRUD操作(Create、Read、Update、Delete)以及分页显示。下面将详细阐述这些知识点: 1. **Struts2**:作为MVC框架,Struts2负责处理...
在实现"ssh框架整合实现增删查改"的过程中,首先,我们需要配置这三个框架的依赖,如在`web.xml`中配置Struts2的核心过滤器,Spring的ApplicationContext加载,以及Hibernate的SessionFactory。然后,定义实体类...
**增删查改(CRUD)操作** CRUD操作是任何数据库驱动的应用程序中最基本的功能。在SSH框架中,我们通常通过以下步骤实现: 1. **创建(Create)**:在Hibernate中,通过Session对象的save()或saveOrUpdate()方法...
这个项目以SSH框架为基础,构建了一个包含增删查改(CRUD)功能的Web应用,并提供了数据库文件。以下是关于SSH框架和相关知识点的详细解释: 1. **Struts**:Struts是MVC(Model-View-Controller)设计模式的一个...