- 浏览: 116642 次
- 来自: 北京
文章分类
最新评论
-
hww_1030:
spring+springmvc+ibatis整合注解方式实例 -
jackclchan:
你好,能将demo源码发我下吗?jackclchan@qq.c ...
spring+springmvc+ibatis整合注解方式实例 -
amwiqplhui:
你好,能将demo源码发我下吗?772851689@qq.co ...
spring+springmvc+ibatis整合注解方式实例 -
jiangshenyi:
你好,上面的demo 能发我一份了 deshanjiang8 ...
spring+springmvc+ibatis整合注解方式实例 -
springmvc-freemarker:
spring mvc demo教程源代码下载,地址:http: ...
spring+springmvc+ibatis整合注解方式实例
一、准备工作
开发环境: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文件:
- <PRE class=java name="code"><?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>
- </PRE>
- <BR>四、建立DAO层
- <BR>1、建立DAO的接口类:EmployeeDao
- <BR><PRE class=java name="code">package 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);//判断是否为合法雇员
- }
- </PRE>
- <BR>2、实现此接口的类文件,EmployeeDaoImpl
- <BR><PRE class=java name="code">package 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);
- }
- }
- </PRE>
- <BR>五、建立业务逻辑层
- <BR>注明:在业务逻辑层需要认真思考每个业务逻辑所能用到的持久层对象和DAO。DAO层之上是业务逻辑层,DAO类可以有很多个,但业务逻辑类应该只有一个,可以在业务逻辑类中调用各个DAO类进行操作。
- <BR>1、创建服务接口类EmployeeManager
- <BR><PRE class=java name="code">package 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查询雇员,实现修改操作
- }
- </PRE>
- <BR>2、实现此接口类:EmployeeManagerImpl
- <BR><PRE class=java name="code">package 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);
- }
- }
- </PRE>
- <BR>六、创建Action类:EmployeeAction.java:
- <BR><PRE class=java name="code">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;
- }
- }
- </PRE>
- <BR>
- <BR>七、Web页面
- <BR>1、主页面:index.jsp,其代码如下
- <BR><PRE class=java name="code"><%@ 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>
- </PRE>
- <BR>2、增加页面add.jsp:
- <BR><PRE class=java name="code"><%@ 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>
- </PRE>
- <BR>3、列表页面:list.jsp
- <BR><PRE class=java name="code"><%@ 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>
- </PRE>
- <BR>注明:
- <BR>(1)、<s:property> :得到'value'的属性,如果value没提供,默认为堆栈顶端的元素。其相关的参数及使用如下表所示:
- <BR>名称 必需 默认 类型 描述
- <BR>default 否 String 如果属性是null则显示的default值
- <BR>escape 否 true Booelean 是否escape HTML
- <BR>value 否 栈顶 Object 要显示的值
- <BR>id 否 Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
- <BR>(2)、<s:Iterator>:用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。其相关的参数及使用如下表所示:
- <BR>名称 必需 默认 类型 描述
- <BR>status 否 String 如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈
- <BR>value 否 Object/String 要遍历的可枚举的(iteratable)数据源,或者将放入新列表(List)的对象
- <BR>id 否 Object/String 用来标识元素的id。在UI和表单中为HTML的id属性
- <BR>(3)、<s:param>:为其他标签提供参数,比如include标签和bean标签. 参数的name属性是可选的,如果提供,会调用Component的方法addParameter(String, Object), 如果不提供,则外层嵌套标签必须实现UnnamedParametric接口(如TextTag)。 value的提供有两种方式,通过value属性或者标签中间的text,不同之处我们看一下例子:
- <BR><param name="color">blue</param><!-- (A) -->
- <BR><param name="color" value="blue"/><!-- (B) -->
- <BR>(A)参数值会以String的格式放入statck.
- <BR>(B)该值会以java.lang.Object的格式放入statck.
- <BR>4、修改页面:update.jsp
- <BR><PRE class=java name="code"><%@ 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>
- </PRE>
- <BR>
- <BR>八、配置信息:
- <BR>1、struts.xml
- <BR><PRE class=java name="code"><?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" />
-
<
评论
2 楼 shaohan126448 2013-07-05jayyunfei 写道为嘛没有spring的配置文件?
配置文件等我晚上给传上来1 楼 jayyunfei 2013-05-03为嘛没有spring的配置文件?发表评论
-
在MyEclipse下创建Java Web项目 入门(图文并茂)
2014-03-11 14:17 557本文是一篇在Myeclipse下 ... -
javamail向多人发送邮件例子代码
2014-03-07 17:11 834注意:此代码需要添加mail.jar和activation. ... -
Java数据结构和算法概述
2011-04-08 17:27 1176数据结构是对在计算机 ... -
Eclipse中CVS版本管理
2011-03-01 09:19 14231.1 CVS简介 CVS是Concurrent Versi ... -
SSH实现查询功能代码
2011-01-28 14:07 15861.extjs实现查询的基本界 ... -
权限管理控制算法(位与算)
2011-01-25 21:07 802最近在网上查找一些关 ...
相关推荐
SSH增删查改功能在IT领域中通常指的是使用Spring、Struts2和Hibernate这三个开源框架构建的人力资源管理系统中的核心操作。这些框架是Java Web开发中的常用工具,它们的组合可以高效地处理Web应用程序的数据持久化、...
SSH增删查改(人力资源管理系统功能模块) struts2+Spring2.0.6+Hibernate3.1。本示例通过对一个人力资源的系统,提供基本的增加、删除、修改、查询等功能。 合适初学者,很不错的,简单明了
在这个“SSH增删查改小实例”中,我们将探讨如何利用这三个组件来实现基本的数据操作:增加(Add)、删除(Delete)、查询(Search)和修改(Update)。 首先,Spring作为核心的依赖注入(DI)和面向切面编程(AOP...
在"SSH增删查改"的学习过程中,你需要掌握以下关键点: 1. **环境配置**:设置JDK、Tomcat服务器,安装并配置Maven或Ivy等依赖管理工具,引入SSH框架的jar包。 2. **Struts2配置**:创建struts.xml文件,定义...
在实现增删查改功能时,首先需要设计好数据库表结构,然后在Hibernate中创建对应的实体类,通过注解或XML配置文件建立对象和表之间的映射。接着,编写DAO接口和实现类,利用Hibernate的Session API进行数据库操作。...
在这个“ssh实现增删查改的例子”项目中,我们将探讨SSH框架如何协同工作,实现对MySQL数据库的数据操作。 首先,Struts2作为MVC框架,主要负责处理用户的HTTP请求。它通过Action类和ActionMapping将用户请求映射到...
### 基于SSH框架的人力资源管理系统增删查改功能详解 在现代软件开发中,SSH(Struts + Spring + Hibernate)框架被广泛应用于构建企业级应用,特别是在人力资源管理系统的开发中。本文将深入探讨如何利用SSH框架...
在这个"SSH2项目增删改查事例"中,我们可以深入理解如何利用SSH2框架来实现数据库操作的基本功能。 1. **Struts2**:Struts2作为MVC框架,负责处理HTTP请求并分发到相应的Action类,它是业务逻辑的入口。在增删改查...
SSH(Struts2 + Spring + Hibernate)是Java Web开发中常用的一种开源框架组合,用于构建高效、可扩展的企业级应用程序。...这些技术和工具的结合,使得开发者能高效地实现企业级应用的增删查改功能。
通过这个SSH2增删查改项目,初学者可以系统学习SSH2整合、数据库操作以及Web应用开发的基本流程。实践是最好的老师,动手操作并理解每个环节的原理,对于提升技能非常有帮助。希望这个项目能帮助你快速掌握SSH2的...
例如,在用户登录后,进行增删改查操作时,Spring可以确保这些操作在一个事务中完成,一旦发生错误,整个事务将被回滚,保证数据的一致性。 接着,Hibernate作为持久层,它简化了数据库操作,提供了对象-关系映射...
在"SSH增删改查 分页"这个主题中,我们主要讨论如何利用SSH框架实现对数据的CRUD操作(Create、Read、Update、Delete)以及分页显示。下面将详细阐述这些知识点: 1. **Struts2**:作为MVC框架,Struts2负责处理...
在实现"ssh框架整合实现增删查改"的过程中,首先,我们需要配置这三个框架的依赖,如在`web.xml`中配置Struts2的核心过滤器,Spring的ApplicationContext加载,以及Hibernate的SessionFactory。然后,定义实体类...
6. **增删查改功能**:这是任何数据驱动应用的基础。"增"是指添加新记录,"删"是删除记录,"查"是查询数据,"改"是更新已有记录。在SSH项目中,这些操作通过Hibernate的API实现,由Struts的动作类控制流程。 对于...
SSH2整合增删查改是Java Web开发中的一个重要概念,主要涉及到Spring、Struts2和Hibernate这三大框架的集成应用。这些框架各自负责不同的职责,Spring作为基础架构,提供依赖注入(DI)和面向切面编程(AOP),...
5. **课程的增删改查界面**:这些界面由Struts的JSP(JavaServer Pages)或Freemarker模板创建,用户可以通过这些界面进行交互。每个操作对应一个Action,Action处理用户的请求并调用Service层进行业务处理。Service...
**增删查改(CRUD)操作** CRUD操作是任何数据库驱动的应用程序中最基本的功能。在SSH框架中,我们通常通过以下步骤实现: 1. **创建(Create)**:在Hibernate中,通过Session对象的save()或saveOrUpdate()方法...
在这个"SSH整合增删查改源代码(有分页,项目可运行)"中,开发者提供了一套完整的实现基础CRUD操作(创建、读取、更新、删除)的示例代码,同时包含了分页功能,这对于初学者理解和掌握SSH整合非常有帮助。...
在浏览器中访问相应的URL,测试增删查改功能是否正常工作。 通过以上步骤,我们就完成了一个SSH实例,实现了对数据库的增删查改操作。这个实例不仅展示了SSH框架的强大功能,也体现了MVC模式在Java Web开发中的应用...