【
文本版
|
topic
】
标题
全文
高级搜索
名人堂
帮助
论坛制度
意见反馈
|
首页
博客
周新贴
招聘
专题
新闻
社区导航
:
专家门诊
门诊点播
申请专家
意见建议
嘉宾访谈
网络技术
网络管理
>>VPN管理
>>网络流量管理
>>网络设备管理
>>网络解决方案
网管软件
网络工程
>>综合布线
>>系统集成
思科技术
华为技术
网络安全
>>病毒木马
>>流氓软件
>>ISA
存储备份
服务器硬件
操作系统
Windows
Linux & Advanced Application
Unix & BSD & Solaris
数据库
微软SQL Server专区
>>SQL Server 2008
>>SQL Server数据库管理
>>SQL Server数据库开发
>>微软商务智能
Oracle 10g / 9i
MySQL & PostgreSQL & Sybase
DB2
程序设计
C/C++
.Net
Java
Php
Web
PowerBuilder
系统应用
Web及应用服务器
Mail服务器
>>Exchange
其他常用服务器软件
考试认证
软考论坛
>>网络管理员
>>网络工程师
主流IT厂商认证
ITAA实验室
CIO及信息化
管理软件
信息化咨询
站长交流
建站经验交流
网站运营推广
网页设计美化
IDC技术交流
综合交流
PC应用
>>软件应用
>>硬件应用
英语天地
新闻评论
职场人生
生活日记
体坛奥运
开心灌水
士兵突击
吃喝玩乐
下载基地
技术文档
工具软件
课件试题
方案案例
源代码
影视天地
原创视频
技术白皮书
>>存储管理
>>Cisco
>>Linux
>>Solaris
>>Oracle
>>更多...
51CTO产品服务
活动专区
产品与服务
>>IT技术自测
>>技术黄皮书
>>微软MVP专区
>>商务竞拍
>>特色功能介绍
>>论坛小技巧
站务交流
>>论坛公告
>>斑竹申请
>>意见建议
>>市场合作
斑竹茶馆
【
设为首页
|
收藏本站
】
用户名:
注 册
密 码:
提 问:
无安全提问
母亲的名字
爷爷的名字
父亲出生的城市
您一位老师的名字
您个人计算机的型号
您最喜欢的餐馆名称
驾照的最后四位数字
回 答:
51CTO技术论坛
»
Java
» Struts+Spring+Hibernate快速入门
[ 打印]
[ 订阅]
[ 收藏]
[ 推荐给朋友]
[ 本帖文本页]
论坛跳转:
→IT综合区←
> 技能交换
> 项目外包
> 产品采购
> 求职招聘
→专家门诊←
> 专家门诊
> 嘉宾访谈
> 微软SQL Server专区
→ 网络技术←
> 网络管理
> VPN管理
> 网络流量管理
> 网络设备管理
> 网络解决方案
> 网管软件
> 网络工程
> 综合布线
> 系统集成
> 思科技术
> 华为技术
> 锐捷技术
> 网络安全
> 病毒木马
> 流氓软件
> ISA
> 存储备份
> 服务器硬件
→操作系统←
> Windows
> Linux & Advanced Application
> Solaris & BSD & Unix
→ 数据库←
> 微软SQL Server专区
> SQL Server 2008
> SQL Server数据库管理
> SQL Server应用开发
> 微软商务智能
> Oracle 10g / 9i
> MySQL & PostgreSQL & Sybase
> DB2
→程序设计←
> C/C++
> .Net
> Java
> Php
> Web开发
> PowerBuilder
→系统应用←
> Web及应用服务器
> Mail服务器
> Exchange
> 其他常用服务器软件
→考试认证←
> 软考论坛
> 网络管理员
> 网络工程师
> 北大青鸟
> 主流IT厂商认证
→CIO与信息化←
> 管理软件
> 信息化咨询
→站长交流←
> 建站经验交流
> 网站运营推广
> 网页设计美化
> IDC技术交流
→娱乐休闲←
> PC 应用
> 软件应用
> 硬件维护
> 英语天地
> 新闻评论
> 职场人生
> 体坛奥运
> 升级版生活日记
> 贴图灌水beta版
> 51cto版士兵突击
> 吃喝玩乐FB生活
→下载基地←
> 技术文档
> 工具软件
> 课件试题
> 方案案例
> 源代码
> 影视天地
> 技术白皮书
> Cisco
> Windows
> Linux
> Unix
> Solaris
> BSD
> Oracle
> My SQL
> MS SQL
> MPLS
> Sybex
> Programe
> WEB
> 存储硬件
> 存储管理
> 存储概念
→51CTO产品与服务←
> 活动专区
> 产品与服务
> IT技术自测
> 技术黄皮书
> Most Valuable Professional
> 商务竞拍
> 特色功能介绍
> 论坛小技巧
> 站务交流
> 论坛公告
> 斑竹申请
> 意见建议
> 市场合作
→信息发布←
> 信息发布
标题: Struts+Spring+Hibernate快速入门
(
查看:228 回复:7
)
全文
标题
本版搜索
全坛搜索
redking
副版主
帖子
2605
精华 0
无忧币
42356
积分 4310
阅读权限 140
来自 (保密)
注册日期 2006-7-11
最后登录 2008-7-7
离线
[
查看资料
] [
发短消息
] [
Blog
]
[
个人主页
]
发表于:2008-4-12 10:39
标题:Struts+Spring+Hibernate快速入门
<
上一帖
|
下一帖
>
本文是开发基于spring的web应用的入门文章,前端采用Struts MVC框架,中间层采用spring,后台采用Hibernate。
本文包含以下内容:
·配置Hibernate和事务
·装载Spring的applicationContext.xml文件
·建立业务层和DAO之间的依赖关系
·将Spring应用到Struts中
简介
这个例子是建立一个简单的web应用,叫MyUsers,完成用户管理操作,包含简单的数据库增,删,查,该即CRUD(新建,访问,更新,删除)操作。这是一个三层的web应用,通过Action(Struts)访问业务层,业务层访问DAO。图一简要说明了该应用的总体结构。图上的数字说明了流程顺序-从web(UserAction)到中间层(UserManager),再到数据访问层(UserDAO),然后将结果返回。
Spring层的真正强大在于它的声明型事务处理,帮定和对持久层支持(例如Hiberate和iBATIS)
以下是完成这个例子的步骤:
1. 安装Eclipse插件
2. 数据库建表
3. 配置Hibernate和Spring
4. 建立Hibernate DAO接口的实现类
5. 运行测试类,测试DAO的CRUD操作
6. 创建一个处理类,声明事务
7. 创建web层的Action和model
8. 运行Action的测试类测试CRUD操作
9. 创建jsp文件通过浏览器进行CRUD操作
10. 通过浏览器校验jsp
一、安装eclipse插件
1. Hibernate插件
http://www.binamics.com/hibernatesync
2. Spring插件
http://springframework.sourcefor ... eclipse/updatesite/
3. MyEclipse插件(破解版)
4. Tomcat插件. tanghan
5. 其他插件包括xml,jsp,
二、
数据库建表
create table app_user(id number not null primary,firstname vchar(32),lastname vchar(32));
1
“绿色IT 从我做起”圈子有奖活动
2008-4-12 10:39
1楼
[
顶部
]
redking
副版主
帖子
2605
精华 0
无忧币
42356
积分 4310
阅读权限 140
来自 (保密)
注册日期 2006-7-11
最后登录 2008-7-7
离线
[
查看资料
] [
发短消息
] [
Blog
]
[
个人主页
]
发表于:2008-4-12 10:40
三、新建项目
新建一个web project,新建后的目录结构同时包含了新建文件夹page用于放jsp文件,和源文件夹test用于放junit测试文件。同时将用到的包,包括struts,hibernate,spring都导入到lib目录下。
四、创建持久层O/R mapping
1. 在src/com.jandar.model下用hibernate插件从数据库导出app_user的.hbm.xml文件改名为User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping package="com.jandar.model">
<class name="User" table="APP_USER">
<id
column="ID"
name="id"
type="integer"
>
<generator class="assigned" />
</id>
<property
column="LASTNAME"
length="10"
name="lastname"
not-null="false"
type="string"
/>
<property
column="FIRSTNAME"
length="10"
name="firstname"
not-null="true"
type="string"
/>
</class>
</hibernate-mapping>
2. 通过hibernate synchronizer->synchronizer file生成User.java文件,User对象对应于数据库中的app_user表
注:在eclipse下自动生成的对象文件不完全相同,相同的是每个对象文件必须实现Serializable接口,必需又toString和hashCode方法;
import java.io.Serializable;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
public class BaseObject implements Serializable ...{
public String toString() ...{
return ToStringBuilder.reflectionToString(this,
ToStringStyle.MULTI_LINE_STYLE);
}
public boolean equals(Object o) ...{
return EqualsBuilder.reflectionEquals(this, o);
}
public int hashCode() ...{
return HashCodeBuilder.reflectionHashCode(this);
}
}
public class User extends BaseObject ...{
private Long id;
private String firstName;
private String lastName;
/**//**
* @return Returns the id.
*/
public Long getId() ...{
return id;
}
/**//**
* @param id The id to set.
*/
public void setId(Long id) ...{
this.id = id;
}
/**//**
* @return Returns the firstName.
*/
public String getFirstName() ...{
return firstName;
}
/**//**
* @param firstName The firstName to set.
*/
public void setFirstName(String firstName) ...{
this.firstName = firstName;
}
/**//**
* @return Returns the lastName.
*/
public String getLastName() ...{
return lastName;
}
/**//**
* @param lastName The lastName to set.
*/
public void setLastName(String lastName) ...{
this.lastName = lastName;
}
}
“绿色IT 从我做起”圈子有奖活动
2008-4-12 10:40
2楼
[
顶部
]
redking
副版主
帖子
2605
精华 0
无忧币
42356
积分 4310
阅读权限 140
来自 (保密)
注册日期 2006-7-11
最后登录 2008-7-7
离线
[
查看资料
] [
发短消息
] [
Blog
]
[
个人主页
]
发表于:2008-4-12 10:40
五、创建DAO访问对象
1. 在src/com.jandar.service.dao新建IDAO.java接口,所有的DAO都继承该接口
package com.jandar.services.dao;
public interface IDAO
2. 在src/com.jandar.service.dao下新建IUserDAO.java接口
public interface IUserDAO extends DAO ...{
List getUsers();
User getUser(Integer userid);
void saveUser(User user);
void removeUser(Integer id);
}
该接口提供了访问对象的方法,
3. 在src/com.jandar.service.dao.hibernate下新建UserDAOHiberante.java
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
import com.jandar.model.User;
import com.jandar.service.dao.IUserDAO;
public class UserDaoHibernate extends HibernateDaoSupport implements IUserDAO ...{
private Log log=LogFactory.getLog(UserDaoHibernate.class);
/**//* (非 Javadoc)
* @see com.jandar.dao.IUserDAO#getUsers()
*/
public List getUsers() ...{
return getHibernateTemplate().find("from User");
}
/**//* (非 Javadoc)
* @see com.jandar.dao.IUserDAO#getUser(java.lang.Long)
*/
public User getUser(Integer id) ...{
// TODO 自动生成方法存根
return (User) getHibernateTemplate().get(User.class,id);
}
/**//* (非 Javadoc)
* @see com.jandar.dao.IUserDAO#saveUser(com.jandar.model.User)
*/
public void saveUser(User user) ...{
log.debug("xxxxxxx");
System.out.println("yyyy");
getHibernateTemplate().saveOrUpdate(user);
if(log.isDebugEnabled())
...{
log.debug("userId set to "+user.getId());
}
}
/**//* (非 Javadoc)
* @see com.jandar.dao.IUserDAO#removeUser(java.lang.Long)
*/
public void removeUser(Integer id) ...{
Object user=getHibernateTemplate().load(User.class,id);
getHibernateTemplate().delete(user);
if(log.isDebugEnabled())...{
log.debug("del user "+id);
}
}
}
在这个类中实现了IUserDAO接口的方法,并且继承了HibernateDAOSupport类。这个类的作用是通过hibernate访问、操作对象,进而实现对数据库的操作。
1
“绿色IT 从我做起”圈子有奖活动
2008-4-12 10:40
3楼
[
顶部
]
flying79
新新人类
帖子
101
精华 0
无忧币
153
积分 101
阅读权限 20
注册日期 2007-6-13
最后登录 2008-4-24
离线
[
查看资料
] [
发短消息
] [
Blog
]
发表于:2008-4-14 14:13
好东西啊,多多发帖啊
网络工程师到底该不该去考CCIE认证?
2008-4-14 14:13
4楼
[
顶部
]
zxxz123
新新人类
帖子
4
精华 0
无忧币
8
积分 4
阅读权限 20
注册日期 2008-4-15
最后登录 2008-4-17
离线
[
查看资料
] [
发短消息
] [
Blog
]
发表于:2008-4-16 10:51
谢谢拉,要是能加点注释就好了!!`````
网络工程师到底该不该去考CCIE认证?
2008-4-16 10:51
5楼
[
顶部
]
youyitian
新新人类
帖子
50
精华 0
无忧币
61
积分 50
阅读权限 20
注册日期 2007-5-16
最后登录 2008-4-22
离线
[
查看资料
] [
发短消息
] [
Blog
]
发表于:2008-4-16 16:28
呵呵好东西啊,只是我现在还是个小菜鸟看不怎么懂啊
用户必读,51CTO积分系统调整通知
2008-4-16 16:28
6楼
[
顶部
]
redking
副版主
帖子
2605
精华 0
无忧币
42356
积分 4310
阅读权限 140
来自 (保密)
注册日期 2006-7-11
最后登录 2008-7-7
离线
[
查看资料
] [
发短消息
] [
Blog
]
[
个人主页
]
发表于:2008-4-19 15:03
GOOD
“绿色IT 从我做起”圈子有奖活动
2008-4-19 15:03
7楼
[
顶部
]
henhaoxiong
新新人类
帖子
55
精华 0
无忧币
78
积分 68
阅读权限 20
注册日期 2007-5-16
最后登录 2008-4-29
离线
[
查看资料
] [
发短消息
] [
Blog
]
发表于:2008-4-19 16:25
同意楼上的说法,很久以前我也想在那买YY
让一个网站为朋友送祝福
2008-4-19 16:25
8楼
[
顶部
]
论坛跳转:
→IT综合区←
> 技能交换
> 项目外包
> 产品采购
> 求职招聘
→专家门诊←
> 专家门诊
> 嘉宾访谈
> 微软SQL Server专区
→ 网络技术←
> 网络管理
> VPN管理
> 网络流量管理
> 网络设备管理
> 网络解决方案
> 网管软件
> 网络工程
> 综合布线
> 系统集成
> 思科技术
> 华为技术
> 锐捷技术
> 网络安全
> 病毒木马
> 流氓软件
> ISA
> 存储备份
> 服务器硬件
→操作系统←
> Windows
> Linux & Advanced Application
> Solaris & BSD & Unix
→ 数据库←
> 微软SQL Server专区
> SQL Server 2008
> SQL Server数据库管理
> SQL Server应用开发
> 微软商务智能
> Oracle 10g / 9i
> MySQL & PostgreSQL & Sybase
> DB2
→程序设计←
> C/C++
> .Net
> Java
> Php
> Web开发
> PowerBuilder
→系统应用←
> Web及应用服务器
> Mail服务器
> Exchange
> 其他常用服务器软件
→考试认证←
> 软考论坛
> 网络管理员
> 网络工程师
> 北大青鸟
> 主流IT厂商认证
→CIO与信息化←
> 管理软件
> 信息化咨询
→站长交流←
> 建站经验交流
> 网站运营推广
> 网页设计美化
> IDC技术交流
→娱乐休闲←
> PC 应用
> 软件应用
> 硬件维护
> 英语天地
> 新闻评论
> 职场人生
> 体坛奥运
> 升级版生活日记
> 贴图灌水beta版
> 51cto版士兵突击
> 吃喝玩乐FB生活
→下载基地←
> 技术文档
> 工具软件
> 课件试题
> 方案案例
> 源代码
> 影视天地
> 技术白皮书
> Cisco
> Windows
> Linux
> Unix
> Solaris
> BSD
> Oracle
> My SQL
> MS SQL
> MPLS
> Sybex
> Programe
> WEB
> 存储硬件
> 存储管理
> 存储概念
→51CTO产品与服务←
> 活动专区
> 产品与服务
> IT技术自测
> 技术黄皮书
> Most Valuable Professional
> 商务竞拍
> 特色功能介绍
> 论坛小技巧
> 站务交流
> 论坛公告
> 斑竹申请
> 意见建议
> 市场合作
→信息发布←
> 信息发布
| |