- 浏览: 403677 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (144)
- java (25)
- hibernate (2)
- spring (6)
- struts (1)
- oracle (14)
- mysql (3)
- jdbc (1)
- 面试经历 (0)
- linux (12)
- 工具小技巧 (7)
- 个人随笔 (0)
- 设计模式 (5)
- jsf (0)
- ejb3.0 (1)
- Web (3)
- jsp&servlet (1)
- Ruby (2)
- JQuery (4)
- 测试 (1)
- javascript (12)
- Android (7)
- asp.net (0)
- php (0)
- 职业发展 (3)
- 励志 (0)
- Struts2 (1)
- CSS (1)
- other (2)
- 性能优化 (1)
- CURL (1)
- scala (2)
- Nginx 配置文件详解 (1)
- resin (1)
- python (1)
- 开源中最好的Web开发的资源 (1)
- hadoop (1)
- idea (2)
- redis (1)
- git (1)
- rails (1)
- tomcat (1)
- springmvc (1)
- VLC (1)
- nginx (1)
- ffmpeg (2)
- tools (1)
最新评论
-
happy.future:
这个注册码好用的,记录了一下 http://www.danie ...
java IntelliJ IDEA 13 注册码 IDEA序列号 License Key -
lpyy00892012:
有问题啊,下拉框会变小啊
jquery easyui三级联动 -
怪兽加outman:
个人还是比较看好GUI Design Studio的,分享一个 ...
推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop -
zhanwc:
xzz7175327 写道感谢、、、十分有用!不客气
Css圆角边框 -
xzz7175327:
感谢、、、十分有用!
Css圆角边框
最近没事想研究研究ibatis开源项目,无意间发现了jpetstore。
1:到官网http://ibatis.apache.org/下载jpetstore5.0
2:把项目导入到myeclipse中。
3:打开src包会发现如下包,JPetStore分层分的特别的细。
com/ibatis/jpetstore/domain
真正的业务实体类,应该属于business层面.
com/ibatis/jpetstore/persistence
该包属于持久层,包括DaoConfig.java以及Dao.xml,DAO的初始化配置文件.
com/ibatis/jpetstore/persistence/iface
接口,针对BO(Business Object)的接口,例如AccountDao.java里面定义了实现DAO对Account对象的一些操作方法以待实现.
com/ibatis/jpetstore/persistence/sqlmapdao
接口的实现,跟iface包里面的接口一一对应,例如AccountSqlMapDao.java就实现了AccountDao.java接口里面定义的所有映射或者操作方法.
com/ibatis/jpetstore/presentation
该包我觉得应该属于显示层,这个包里面都是FormBean,例如AccountBean.java.为Account定义了FormBean.
com/ibatis/jpetstore/service
为类操作提供的业务类,例如AccountService类就提供了很多对Account等操作的实用方法,这样在AccountBean里面就可以轻松使用了.
com/ibatis/jpetstore/persistence/sqlmapdao/sql
很简单,每个实体类大致映射到数据库中的一张表,对该库表可能进行的所有sql操作都在这个包里面进行定义.包括对象和表列映射等等.
/properties
不用说了,配置文件而已.
/ddl
建库和建表的sql脚本。(oracle,mysql、mssql、postgres、hsql等数据库)
一、表现层:
BeanAction技术成功地将Action和ActionForm的职责展平,融入到一个类中。它也可以使你从对session、request这样特定于Web的组件的直接访问中解脱出来。这种类型的架构不禁让我们想起了WebWork和JSF。BeanAction技术所以能够将Action和ActionForm的职责展平,是通过一些关键组件完成的:首先是BeanAction类,它扩展了Struts的Action类、BaseBean类,以及ActionContext类。理解这些组件对于理解BeanAction技术如何工作非常重要,
BeanAction ---->ActoinContext
|
BaseBean ————>AbstractBean------>AccountBean
1 BaseBean
在深入研究ActionContext类和BeanAction类之前,理解BaseBean类的功用非常重要。BaseBean扩展了ValidatorActionForm以允许进行标准的Struts验证。有了BaseBean,在自己的应用程序中就只需要扩展它,而再不需要去直接扩展ActionForm了。应该在BaseBean扩展类中包含你需要的属性,就像一个ActionForm通常所作的那样。Struts会像填充ActionForm一样地去填充BaseBean,因为BaseBean就是ActionForm。唯一的区别就在于你的BaseBean扩展类中的页面行为处理方法可以使用一种更为简单的签名:public String methodName()。
2 BeanAction
我们将要介绍的下一个类就是BeanAction类。该类有两个职责。第一,它负责填充Action- Context。其次,它负责将页面行为调用路由到你的BaseBean扩展类中对应的页面行为处理方法上,并且将该方法返回的字符串转化为一个Struts的ActionForward。这也就是为何BaseBean的页面行为处理方法的签名中可以不出现特定于Struts组件的原因所在。当需要决定调用你的BaseBean扩展类中的哪个页面行为处理方法时,BeanAction类会在两个不同的地方查找。首先,它查看Struts配置文件中的动作映射(action mapping)的parameter属性值,以确定你是否显式指定了页面行为与处理方法的对应关系。如果parameter取值非空且不为*(即取值为一个有意义的字符串),则调用BaseBean扩展类中方法名为parameter值的方法;如果parameter取值为*,则不调用BaseBean扩展类中的任何处理方法,而是直接使用name取值为success的forward子元素;如果parameter取值为空或不存在,那么BeanAction会查看path,然后使用其最后一个“/”后的字符串作为BaseBean扩展类中的页面行为处理方法名并调用该方法。例如,对如下代码,就将调用orderBean中的checkOut方法:
<action path="/cart/checkOut" type="com.ibatis.struts.BeanAction"
name="orderBean" scope="session" validate="false">
<forward name="success" path="/order/ViewOrder.jsp"/>
</action>
3 ActionContext
最后,ActionContext用于将你从特定的Web语义中解脱出来。它使你对请求(request)、参数(parameter)、cookies、会话(session)和应用程序(application)这些对象的访问都能够通过一个Map接口完成。这就使你能够减少与Web层的直接依赖关系。ActionContext中的大多数方法可以使你成功地实现与Struts以及Servlet API的隔离。但ActionContext也提供了直接访问Http- ServletRequest和HttpServletResponse对象的方法,当你需要访问它们的时候可以使用。
使用Action Context技术有几个好处。第一,再不需要花时间去将一个ActionForm对象转换为其某个扩展类型了。原因就在于现在的Action就是ActionForm。你只需要直接访问Base- Bean扩展类的实例中的各个特性。其次,那些页面行为处理方法的复杂性大大降低了。通常,Struts的页面行为处理方法(即Action类的execute方法)需要接收4个参数:HttpServletRequest、HttpServletResponse、ActionForm和ActionMapping,并且要求返回一个ActionForward。而BeanAction的页面行为处理方法则远远不需要那么复杂,它不需要任何参数,只需要返回一个字符串。第三,单元测试一个简单的bean毕竟要比单元测试一个ActionForm和Action简单得多。当然可以使用MockObject和StrutsTestCase来对Action类进行彻底的测试。但是,仅仅测试一个bean肯定还是要简单得多。最后,因为BeanAction架构与现存的Struts应用程序协同工作得很好,而BeanAction技术的语意与新一代框架是一致的,这就使你能够轻松地将应用程序的架构从现在的Struts转换为某个新一代框架而不会破坏你之前所有的辛苦劳动。
<!-- page -->发表评论
-
Executors的Thread table can't grow past 16383 threads异常
2013-01-30 12:50 1875在使用executors并发编程时候需要注意,如果出现Thr ... -
java代码中动态添加程序执行时间日志
2012-10-26 09:52 2734在写java代码的过程中经常会遇到需要打印一个方法的执行 ... -
java process can not exited
2012-09-28 10:20 1115/** * User: weichun.zhan ... -
java单例模式在多线程环境下的测试
2012-07-23 22:24 1116java单例模式在多线程环境下的测试,进攻自己学习和复习用. ... -
JAVA获取CLASSPATH路径
2012-07-04 16:52 823http://www.blogjava.net/tbwshc/ ... -
计算机补码
2012-03-28 16:35 971名词解释: 补码:1 在计算机系统中,数值一律有补码 ... -
Java中HashMap排序和遍历 .
2011-12-02 17:24 9350HashMap排序 1、按照key排序 对于java中 ... -
java开源项目汇总
2011-05-17 15:42 984http://www.open-open.com/index. ... -
OperaMasks
2011-04-19 10:31 993demo:http://demo.operamasks.org ... -
1000个0-9的数字,查找出现次数最多的3个数字.并求这他们出现的次数.
2011-04-06 21:41 5492今天面试碰到 "1000个0-9的数字,查找出现次数 ... -
Java开源 Jsp标签库
2011-02-25 13:52 1733displytag 与Struts结合使用最出名的一个tag主 ... -
阅读优秀代码是提高开发人员修为的一种捷径
2011-02-24 10:57 906原文作者Alan Skorkin是一 ... -
线程池
2010-12-06 17:31 1026http://hi.baidu.com/ecspell/blo ... -
JAVA String.format 方法使用介绍
2010-10-25 13:36 3326JAVA String.format 方法使用 ... -
用 Eclipse 插件提高代码质量
2010-10-12 11:12 1005用 Eclipse 插件提高代码质量 参考文章. http: ... -
Java代码分析工具——Eclipse插件nWire 1.3发布
2010-09-26 17:34 3010近日,Eclipse插件nWire 1.3发布。nWire可以 ... -
归并算法详解
2010-07-28 13:03 1758MergeSort,归并排序。 [1 ... -
java util date转换成java sql date
2010-06-11 13:26 1848在util date转换成sqldate过程中可以使用new ... -
java获取操作系统类型
2010-05-14 17:12 2669判断当前java程序是运行在windows平台还是运行在lin ... -
Java:回调机制
2010-05-10 14:14 11331. 什么是回调函数 回调函数(callback ...
相关推荐
NULL 博文链接:https://llhdf.iteye.com/blog/268601
【标题】"springMVC+mybatis+jpetstore工程源码"揭示了这是一个结合了SpringMVC、MyBatis和jpetstore示例项目的工程,主要用于演示如何在实际开发中整合这三个技术。SpringMVC是Spring框架的一个模块,用于处理Web...
JPetStore是iBatis的一个经典示例应用,它是一个在线宠物商店,展示了iBatis如何与Spring框架一起工作。在这个项目中,你可以看到如何定义Mapper接口,编写SQL Map文件,以及如何在Java代码中调用这些接口进行...
《JPetStore-5.0:一个基于iBatis的开源电商示例解析》 JPetStore-5.0是一个著名的开源项目,它基于iBatis数据持久层框架,为开发者提供了一个完整的电子商务应用程序示例。这个项目由Apache Software Foundation...
Spring+EasyJWeb+iBatis版j2ee在线购物jpetstore系统,业务层及持久层使用springframework上的jpetsotre源码,表示层使用EasyJWeb,该系统是一个简单的J2EE网上商店系统,包括商品列表、购物车、用户管理、在线订单...
iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源...iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。
JPetStore4.0.5是一个基于Java的开源电子商务应用,它展示了如何有效地利用Ibatis和Struts框架构建一个简单而实用的在线商店系统。这个版本在设计上保持了简洁性,非常适合小型项目的需求,为开发者提供了快速搭建...
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例. 现在我们能从IBATIS项目中能分别看到衍生出来两个不同的版本.Net和Java. 当然这也是得益于开源...
首先,从官方站点下载JPetStore 5.0源码包:[ibatis.apache.org](http://ibatis.apache.org/)。解压到指定位置,例如`D:\jpetstore`。 **2. 创建项目** 使用MyEclipse创建一个新的Web项目,命名为`jpetstore`。 *...
本项目"网上宠物店jpetstore"正是基于这两款强大的工具进行集成开发,旨在提供一个完整的、可运行的示例,帮助开发者理解和掌握它们的协同工作原理。 首先,让我们来了解一下Ibatis。Ibatis,原名MyBatis,是一个...
《jpetstore-3-1-1:一个Java EE电子商务示例应用的探索》 "jpetstore-3-1-1"是一个经典的Java EE应用示例,它由Apache Struts项目提供,用于演示如何构建一个完整的电子商务网站。这个项目在Java社区中广泛被用作...
jdForum是由struts和ibatis程序基于ibatis jpetstore结构制作的,并将图块与JSTL和User-define Taglib混合在一起进行重新构建,jdForum提供了JSP源码,用于有关STRUTS和IBATIS框架以及JSTL,图块的自学
Spring MVC是一个基于模型-视图-控制器(MVC)模式的Web应用程序框架,是Spring Framework的一部分。它提供了一个灵活的方式来构建Web应用程序,使得开发者可以轻松地创建复杂的Web应用程序。 业务层主要的类和接口...
iBatis是一个SQL映射框架,而Spring则提供了一种强大的事务管理能力,特别是声明式的事务管理,允许开发者通过注解或XML配置来声明事务边界,无需显式控制事务开始和结束。 2. "struts2+hibernate+spring+ibatis+...