玩玩Spring之hibernate+ webwork+ spring添删改查示例
来源:互联网 发布:硬件管家鉴定 网络断开 编辑:程序博客网 时间:2024/05/16 06:30
看本文的朋友请先看上一篇文章:玩玩Spring之struts+hibernate+spring添删改查示例,否则会看不懂滴(的)。
该示例程序的运行效果先睹为快:
http://www.easyjf.com/html/bbs/20060510/1512699849613700.htm?ejid=1141219960424115
新同学:听说Struts有很多致命的技术缺陷啊,是吗?
大牛:恩,专家都说了。
新同学:听说J2EE程序员很讲究艺术及高雅,能举个例子吗?
大牛:对啊,MVC中webwork就是高雅啊,用他写起程序来真是赏心悦目,华丽得真是没法容易。
大牛:恩,专家都说了。
新同学:听说J2EE程序员很讲究艺术及高雅,能举个例子吗?
大牛:对啊,MVC中webwork就是高雅啊,用他写起程序来真是赏心悦目,华丽得真是没法容易。
主演:webwork
配角:struts、jsp、hibernate、spring等
配角:struts、jsp、hibernate、spring等
借着吹spring的风,今天笔者给大家介绍一种很多人都非常欣赏的轻量极、高雅的J2EE组合,那就是hibernate+ webwork+ spring。说介绍不准确,应该还只是一个简单的演示,毕竟webwork的赞歌已经有很多人唱过了,这里就不重复(主要还是因为唱不出来,惭愧!)。我只希望能通过简单的代码,让大家去体会webwork的高雅、过人之处。
同样是上一篇中有关一个用户表“添删改查”的例子,这里只是把Web层改成使用webwork实现,下面我们直接介绍Web开发部分,其它部分的开发请照搬前面一篇的例子,新人可以结合上个例子中的Struts部分进行看。
1、写Action
webwork跟Struts乃至其它的MVC框架一样,都有一个处理Web请求的Action,我们来看看本例子中这个Action的内容。下面是UserManageAction.java的全部代码:
package com.easyjf.webwork.action;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.easyjf.example.business.IUser;
import com.easyjf.example.business.IUserService;
import com.easyjf.util.CommUtil;
import com.easyjf.web.tools.IPageList;
import com.easyjf.web.tools.ListQuery;
import com.easyjf.web.tools.PageList;
import com.opensymphony.webwork.interceptor.ParameterAware;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.Preparable;
public class UserManageAction extends ActionSupport implements ParameterAware,Preparable {
private List allUser;
private IUserService userService;
private IUser user;
private Map parameters;
//用户查询
public String query() throws Exception {
String[] temp=(String[])parameters.get("page");
int currentPage=CommUtil.null2Int(temp!=null?temp[0]:"0");
temp=(String[])parameters.get("pageSize");
int pageSize=CommUtil.null2Int(temp!=null?temp[0]:"0");
if(currentPage<1)currentPage=1;
if(pageSize<1)pageSize=10;
String scope="1=1";
Collection paras=new ArrayList();
temp=(String[])parameters.get("orderType");
String orderType=CommUtil.null2String(temp!=null?temp[0]:"");
temp=(String[])parameters.get("orderField");
String orderField=CommUtil.null2String(temp!=null?temp[0]:"");
temp=(String[])parameters.get("queryUserName");
String userName=CommUtil.null2String(temp!=null?temp[0]:"");
temp=(String[])parameters.get("queryTel");
String tel=CommUtil.null2String(temp!=null?temp[0]:"");
if(!userName.equals(""))
{
scope+=" and userName like ?";
paras.add("%"+userName+"%");
}
if(!tel.equals(""))
{
scope+=" and tel like ?";
paras.add("%"+tel+"%");
}
if(orderField.equals(""))//默认按用户名排序
{
orderField="userName";
orderType="desc";
}
if(!orderField.equals(""))
{
scope +=" order by "+orderField;
if(!orderType.equals(""))scope+=" "+orderType;
}
IPageList pList=new PageList(new ListQuery(userService.query(scope,paras)));
pList.doList(pageSize,currentPage,"","");
if(pList!=null){
this.parameters.put("list",pList.getResult());
this.parameters.put("pages",new Integer(pList.getPages()));
this.parameters.put("rows",new Integer(pList.getRowCount()));
this.parameters.put("page",new Integer(pList.getCurrentPage()));
this.parameters.put("gotoPageHTML",CommUtil.showPageHtml(pList.getCurrentPage(),pList.getPages()));
}
this.parameters.put("orderType",orderType);
this.parameters.put("orderField",orderField);
this.allUser = userService.query(scope,paras);
return execute();
}
//添加或修改用户
public String edit() throws Exception
{
return execute();
}
//删除用户
public String del() throws Exception
{
if(user!=null && userService.del(this.user))
{
this.parameters.put("msg","数据删除成功!");
}
else
{
this.parameters.put("msg","数据修改失败");
}
return query();
}
//保存用户信息
public String save() throws Exception
{
IUser obj=this.getUser();
boolean ret=false;
if(obj!=null){
if((obj.getCid()!=null)&&(!obj.getCid().equals("")))ret=userService.update(user);
else ret=userService.save(user);
}
if(ret)
{
this.parameters.put("msg","数据操作成功!");
}
else
{
this.parameters.put("msg","数据操作失败");
}
return query();
}
public IUserService getUserService() {
return userService;
}
public List getAllUser() {
return allUser;
}
public IUser getUser() {
return user;
}
public void setUser(IUser user) {
this.user = user;
}
public void setUserService(IUserService userService)
{
this.userService=userService;
}
public void setParameters(Map parameters) {
this.parameters=parameters;
}
public Map getParameters() {
return parameters;
}
public void prepare() throws Exception {
this.form2Obj();
}
//根据页面参数创建IUser对象
private void form2Obj() {
String[] temp=(String[])parameters.get("cid");
String cid=temp!=null?temp[0]:"";
IUser user=null;
if(cid!=null && (!cid.equals("")))user=userService.read(cid);
if(user==null)user=userService.newUser();
setUser(user);
}
}
import java.util.Collection;
import java.util.List;
import java.util.Map;
import com.easyjf.example.business.IUser;
import com.easyjf.example.business.IUserService;
import com.easyjf.util.CommUtil;
import com.easyjf.web.tools.IPageList;
import com.easyjf.web.tools.ListQuery;
import com.easyjf.web.tools.PageList;
import com.opensymphony.webwork.interceptor.ParameterAware;
import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.Preparable;
public class UserManageAction extends ActionSupport implements ParameterAware,Preparable {
private List allUser;
private IUserService userService;
private IUser user;
private Map parameters;
//用户查询
public String query() throws Exception {
String[] temp=(String[])parameters.get("page");
int currentPage=CommUtil.null2Int(temp!=null?temp[0]:"0");
temp=(String[])parameters.get("pageSize");
int pageSize=CommUtil.null2Int(temp!=null?temp[0]:"0");
if(currentPage<1)currentPage=1;
if(pageSize<1)pageSize=10;
String scope="1=1";
Collection paras=new ArrayList();
temp=(String[])parameters.get("orderType");
String orderType=CommUtil.null2String(temp!=null?temp[0]:"");
temp=(String[])parameters.get("orderField");
String orderField=CommUtil.null2String(temp!=null?temp[0]:"");
temp=(String[])parameters.get("queryUserName");
String userName=CommUtil.null2String(temp!=null?temp[0]:"");
temp=(String[])parameters.get("queryTel");
String tel=CommUtil.null2String(temp!=null?temp[0]:"");
if(!userName.equals(""))
{
scope+=" and userName like ?";
paras.add("%"+userName+"%");
}
if(!tel.equals(""))
{
scope+=" and tel like ?";
paras.add("%"+tel+"%");
}
if(orderField.equals(""))//默认按用户名排序
{
orderField="userName";
orderType="desc";
}
if(!orderField.equals(""))
{
scope +=" order by "+orderField;
if(!orderType.equals(""))scope+=" "+orderType;
}
IPageList pList=new PageList(new ListQuery(userService.query(scope,paras)));
pList.doList(pageSize,currentPage,"","");
if(pList!=null){
this.parameters.put("list",pList.getResult());
this.parameters.put("pages",new Integer(pList.getPages()));
this.parameters.put("rows",new Integer(pList.getRowCount()));
this.parameters.put("page",new Integer(pList.getCurrentPage()));
this.parameters.put("gotoPageHTML",CommUtil.showPageHtml(pList.getCurrentPage(),pList.getPages()));
}
this.parameters.put("orderType",orderType);
this.parameters.put("orderField",orderField);
this.allUser = userService.query(scope,paras);
return execute();
}
//添加或修改用户
public String edit() throws Exception
{
return execute();
}
//删除用户
public String del() throws Exception
{
if(user!=null && userService.del(this.user))
{
this.parameters.put("msg","数据删除成功!");
}
else
{
this.parameters.put("msg","数据修改失败");
}
return query();
}
//保存用户信息
public String save() throws Exception
{
IUser obj=this.getUser();
boolean ret=false;
if(obj!=null){
if((obj.getCid()!=null)&&(!obj.getCid().equals("")))ret=userService.update(user);
else ret=userService.save(user);
}
if(ret)
{
this.parameters.put("msg","数据操作成功!");
}
else
{
this.parameters.put("msg","数据操作失败");
}
return query();
}
public IUserService getUserService() {
return userService;
}
public List getAllUser() {
return allUser;
}
public IUser getUser() {
return user;
}
public void setUser(IUser user) {
this.user = user;
}
public void setUserService(IUserService userService)
{
this.userService=userService;
}
public void setParameters(Map parameters) {
this.parameters=parameters;
}
public Map getParameters() {
return parameters;
}
public void prepare() throws Exception {
this.form2Obj();
}
//根据页面参数创建IUser对象
private void form2Obj() {
String[] temp=(String[])parameters.get("cid");
String cid=temp!=null?temp[0]:"";
IUser user=null;
if(cid!=null && (!cid.equals("")))user=userService.read(cid);
if(user==null)user=userService.newUser();
setUser(user);
}
}
2、写页面文件
xwork支持多种页面模板,可以是JSP,也可以是Freemarker等,这里我们使用的是大家比较熟悉的JSP作模板。页面同样分为userEdit.jsp以及userList.jsp两个,模板中使用了一些wework的标签,(还好没有全部搞成标签,呵呵!),大家注意观察以
可以理解成struts中的struts-config.xml文件,当然等你真正熟悉他以后,发现他的配置文件中的玩艺及技术含量都要比Struts牛的多。下面是xwork.xml文件的全部内容:
http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
/userList.jsp
/userEdit.jsp
/userEdit.jsp
/userList.jsp
/userList.jsp
http://java.sun.com/dtd/web-app_2_3.dtd">
webwork
com.opensymphony.webwork.dispatcher.FilterDispatcher
webwork
/*
org.springframework.web.context.ContextLoaderListener
通过上面的配置,使得所有的请求都会交给webwork处理。
本示例的全部源码下载地址:
本示例的运行效果图:
http://www.easyjf.com/html/bbs/20060510/1512699849613700.htm?ejid=1141219960424115
3、配置xwork.xml
可以理解成struts中的struts-config.xml文件,当然等你真正熟悉他以后,发现他的配置文件中的玩艺及技术含量都要比Struts牛的多。下面是xwork.xml文件的全部内容:
http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
4、修改web.xml文件
以Struts类似,同样需要修改web.xml文件,才能让webwork处理指定的请求。下面是本例中的web.xml文件的全部内容:
http://java.sun.com/dtd/web-app_2_3.dtd">
通过上面的配置,使得所有的请求都会交给webwork处理。
好,现在一个完整的webwork示例程序就完了。不知webwork新朋友注意到没,webwork中没有了ActionForm Bean,配置文件也相对比较清晰明了,Action中的方法不再有类似public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)这样一大串让人看起来就不爽的参数,其干净得一个参数也没有。大家可以闭上眼睛摸着脑门再体会一下Webwork的Action的写法,是不是要简洁、华丽、优雅得多。
当然,那么多技术牛人在支持webwork,并不是单看中这个Action的简洁,webwork本身还有很多东西,还包括AJAX支持,报表集成,强大的验证系统以及IOC等,其中有很多是Spring也有的东西,仅从技术的角度来看,笔者也认为他确实能称上是数一数二的。
当然,本人不是webwork的粉丝,因此其它MVC框架的粉丝这里不要PK我,Struts的朋友就更不应该了,因为webwork开发团队与struts团队已经合并了,合并后的作品Apache Struts Action 2.0也即将出来了。Tapestry 、JSF的粉丝看到这里也别纳闷,有竞争才有技术进步嘛。
好,今天就先玩到这里。由于笔者对webwork只是粗浅的看了一下,因此也许还不能完全通过这个示例表述出webwork的原意。还请webwork的超级粉丝或专家来帮忙补充一下,若发现不足的地方,请不吝批评指教。
好,今天就先玩到这里。由于笔者对webwork只是粗浅的看了一下,因此也许还不能完全通过这个示例表述出webwork的原意。还请webwork的超级粉丝或专家来帮忙补充一下,若发现不足的地方,请不吝批评指教。
本示例的全部源码下载地址:
http://www.easyjf.com/html/bbs/20060510/1512699849613700.htm?ejid=1141219960424115
本示例的运行效果图:
http://www.easyjf.com/html/bbs/20060510/1512699849613700.htm?ejid=1141219960424115
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=772385
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之struts+hibernate+spring添删改查示例
- 玩玩Spring之struts+hibernate+spring添删改查示例
- 玩玩Spring之struts+hibernate+spring添删改查示例
- 玩玩Spring之struts+hibernate+spring添删改查示例
- 玩玩Spring之struts+hibernate+spring添删改查示例(一)
- 浅谈MVC框架中View层的优雅设计及实例
- 从微软MIX 2007软体盛会看未来
- EasyJFCMS项目正式启动,诚邀国内开源爱好者加入(附uml图)
- 玩玩Spring之Rod Johnson 与“轮子理论”
- Windows API一日一练(25)CreateSolidBrush函数
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- 玩玩Spring之hibernate+ webwork+ spring添删改查示例
- EasyJWeb中的VO、PO及XO
- 开源管理新体验-《EasyJF开源团队章程》发布
- Spring中的Rod Johnson 与“轮子理论”
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 80前的前辈,你们都做了些什么?!(一)
- 一个“Sprng轮子”引发的“血案”(3)
- Windows API一日一练(24)DrawText函数
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
2分
10分
广东快乐走势图
广播剧地下室实录29分10秒
10秒后自动跳转
兔子抓伤后10天就死
月经干净后10天又来月经
种植牙10年后牙槽骨会坏死吗
肠息肉切除后只能活5到10年
半斤白酒10小时后开车
2018win10更新后wifi功能消失
win10更新后不能上网
win10连接wifi后显示无internet
win10更新后开机黑屏
win10关机后自动重启
后3
10英寸是多大
10寸照片多大
10寸多大
10寸
10寸蛋糕够几个人吃
6寸8寸10寸12寸蛋糕图
10寸披萨多大
10寸蛋糕多大要参照物
蛋糕10寸多大
10寸照片
10寸披萨够几个人吃
10寸蛋糕有多大
10寸平板多大参照图
10寸 超极本
10寸蛋糕价格
10寸折叠电动自行车
10寸吸沙泵
10寸平板电脑长宽尺寸
10公分等于多少寸
10寸蛋糕配方
10寸的蛋糕多大
平板10寸
10寸蛋糕盒
三菱劲炫10.2寸
10寸照片尺寸