`
geeksun
  • 浏览: 965298 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jpetstore的url映射解析

阅读更多

       jpetstore5.0是ibatis的最新示例程序,展示了如何利用ibatis来开发一个典型的J2EE web应用程序,基于struts MVC框架,以ibatis做为持久化层,是ibatis的示例程序,程序设计优雅,层次清晰,可以学习以及做为一个高效率的编程模型参考。

       url映射方式为:http://localhost:8080/jpetstore/shop/viewCategory.shtml?categoryId=FISH ,这个是打开Fish种类的链接,在jpetstore工程中找不到有 viewCategory类的存在,所以的action都映射到一个action里:BeanAction,BeanAction扩展了struts的 Action,url可以映射到bean的方法,简化了struts的编程模式,减少了对struts的依赖,可以把BeanAction很容易地移植到新框架如JSF、Spring中。

       jpetstore的formbean不是普通的formbean,里面除了属性和属性的set、get方法、校验、重置方法,还有了具体的行为,从这个意义上来看,更像一个BO。当访问jpetstore的url时,BeanAction利用反射原理,根据url决定访问formbean的哪个方法(行为),formbean的签名很简单:

public String myActionMethod() {
      //..work
      return "success";
}

 

       方法返回值是字符串,对应forward的名称,而不是ActionForward对象,创建ActionForward对象的任务由BeanAction代劳。

       另外,程序还提供了ActionContext工具类,该工具类封装了request 、response、form parameters、request attributes、session attributes和 application attributes中的数据存取操作,简单而线程安全,form bean类使用该工具类可以进一步从表现层框架解耦。

       在这里需要特别指出的是,BeanAction类是对struts扩展的一个有益尝试,虽然提供了非常好的应用开发模式,但是它还非常新,一直在发展中。
       下面就让我们开始进一步分析JpetStore5.0的源代码。

BeanAction.java是唯一一个Struts action类,位于org.apache.struts.beanaction包下。正如上文所言,它是一个通用的控制类,利用反射机制,把控制转移到form bean的某个方法来处理。详细处理过程参考其源代码,简单明晰。
Form bean类位于com.ibatis.jpetstore.presentation包下,命名规则为***Bean。Form bean类全部继承于BaseBean类,而BaseBean类实际继承于ActionForm,因此,Form bean类就是Struts的 ActionForm,Form bean类的属性数据就由struts框架自动填充。而实际上,JpetStore4.0扩展了struts中ActionForm的应用: Form bean类还具有行为,更像一个BO,其行为(方法)由BeanAction根据配置(struts-config.xml)的URL来调用。虽然如此,我们还是把Form bean类定位于表现层。

       Struts-config.xml的配置里有3种映射方式 ,来告诉BeanAction把控制转到哪个form bean对象的哪个方法来处理。

       以这个请求连接为例 http://localhost/jpetstore/shop/viewOrder.shtml

1. URL Pattern

<action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction" name="orderBean" scope="session" validate="false"> <forward name="success" path="/order/ViewOrder.jsp"/> </action>  
      此种方式表示,控制将被转发到"orderBean"这个form bean对象 的"viewOrder"方法(行为)来处理。方法名取"path"参数的以"/"分隔的最后一部分。

2. Method Parameter

<action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction" name="orderBean" parameter="viewOrder" scope="session" validate="false"> <forward name="success" path="/order/ViewOrder.jsp"/> </action>  
       此种方式表示,控制将被转发到"orderBean"这个form bean对象的"viewOrder"方法(行为)来处理。配置中的"parameter"参数表示form bean类上的方法。"parameter"参数优先于"path"参数。

3. No Method call

<action path="/shop/viewOrder" type="com.ibatis.struts.BeanAction" name="orderBean" parameter="*" scope="session" validate="false"> <forward name="success" path="/order/ViewOrder.jsp"/> </action>  
       此种方式表示,form bean上没有任何方法被调用。如果存在"name"属性,则struts把表单参数等数据填充到form bean对象后,把控制转发到"success"。否则,如果name为空,则直接转发控制到"success"。

这就相当于struts内置的org.apache.struts.actions.ForwardAction的功能

<action path="/shop/viewOrder" type="org.apache.struts.actions.ForwardAction" parameter="/order/ViewOrder.jsp " scope="session" validate="false"> </action>

       Service类位于com.ibatis.jpetstore.service包下,属于业务层。这些类封装了业务以及相应的事务控制。Service类由form bean类来调用。
       com.ibatis.jpetstore.persistence.iface包下的类是DAO接口,属于业务层,其屏蔽了底层的数据库操作,供具体的Service类来调用。DaoConfig类是工具类(DAO工厂类),Service类通过DaoConfig类来获得相应的DAO接口,而不用关心底层的具体数据库操作,实现了如图2中{耦合2}的解耦。
       com.ibatis.jpetstore.persistence.sqlmapdao包下的类是对应DAO接口的具体实现,在JpetStore4.0中采用了ibatis来实现ORM。这些实现类继承BaseSqlMapDao类,而BaseSqlMapDao类则继承ibatis DAO 框架中的SqlMapDaoTemplate类。ibatis的配置文件存放在com.ibatis.jpetstore.persistence.sqlmapdao.sql目录下。这些类和配置文件位于数据层
       Domain类位于com.ibatis.jpetstore.domain包下,是普通的javabean。在这里用作数据传输对象(DTO),贯穿视图层、业务层和数据层,用于在不同层之间传输数据。
剩下的部分就比较简单了,请看具体的源代码,非常清晰。 

 

  • 大小: 9.2 KB
  • 大小: 16.9 KB
分享到:
评论

相关推荐

    jpetstore

    此外,考虑到其作为示例应用的性质,jpetstore可能还展示了Java Persistence API(JPA)的使用,这是Java EE中用于对象关系映射的标准,允许开发者使用面向对象的方式来操作数据库。JPA简化了数据库访问,使得代码...

    jpetstore系统架构图

    《深入解析jpetstore系统架构图:从设计到实现》 在IT行业的软件开发领域,jpetstore系统作为一款开源的网上宠物商店示例应用程序,以其清晰的分层架构、强大的功能性和高度可扩展性而著称。尤其在jpetstore5.0版本...

    JPetStore-5.0.zip_JPETSTO_jpetstore-5_jpetstore5_jpetstore5.0_jp

    《JPetStore-5.0:一个基于iBatis的开源电商示例解析》 JPetStore-5.0是一个著名的开源项目,它基于iBatis数据持久层框架,为开发者提供了一个完整的电子商务应用程序示例。这个项目由Apache Software Foundation...

    学习Spring 的例子JpetStore

    Spring支持多种数据库连接方式,包括JDBC、Hibernate和MyBatis等ORM(Object-Relational Mapping,对象关系映射)框架。在JpetStore中,我们可以通过Spring的数据访问抽象层进行数据库操作,这既简化了数据库操作,...

    spring例子: jpetstore

    描述中的链接指向了ITEYE上的一篇博客文章,虽然内容没有给出,但通常这类博客会包含对JPetStore的详细解析,包括项目的结构、主要组件、配置文件的解读以及关键代码的解释。 标签 "源码" 暗示我们可以从JPetStore...

    jpetstore spring 的经典完整可直接运行的例子 jpetstore

    《基于jpetstore的Spring、iBatis与Struts整合实战》 jpetstore项目是Spring框架的一个经典示例,它全面展示了如何将Spring、iBatis和Struts这三个核心的Java Web技术进行集成,构建出一个完整的MVC(Model-View-...

    jpetstore开源学习代码

    《jpetstore开源学习代码》是一个深受开发者欢迎的学习资源,特别针对那些希望深入理解J2EE(Java 2 Platform, Enterprise Edition)技术的初学者和有经验的程序员。jpetstore项目是一个示例应用,它展示了如何在...

    iBatis-JPetStore-5.0

    通过学习和实践“iBatis-JPetStore-5.0”项目,你将能够掌握iBatis的基本使用,包括SQL映射、参数映射、结果映射、事务管理以及动态SQL的运用。这将有助于你在实际开发中更高效地处理数据库操作,提升项目的可维护性...

    springMVC+mybatis+jpetstore工程源码

    它包括处理器映射、视图解析、数据绑定等核心功能,支持多种视图技术如JSP、Thymeleaf等。 2. **MyBatis**:MyBatis是一个持久层框架,它允许开发者编写声明式的SQL语句,这些语句被映射到Java接口的方法上。这样...

    jpetstore宠物店程序

    - `WEB-INF/web.xml`:Web应用的部署描述符,定义了应用的初始化参数和Servlet映射。 - 其他资源文件,如图片、CSS样式表、JavaScript等。 6. **开发和调试** 开发人员可以利用IDE(如Eclipse或IntelliJ IDEA)...

    JPetStore (Struts + Spring + Hibernate)版

    **标题解析:** "JPetStore (Struts + Spring + Hibernate)版" 是一个基于Java技术的开源电子商务示例应用,它集成了Struts、Spring和Hibernate三个关键的开源框架。这个版本相较于之前的JPetStore5.0,进行了重要的...

    jpetstore4.0 (spring+struts+ibatis)

    iBatis是一个SQL映射框架,它将SQL语句与Java代码分离,使开发者能够灵活地编写数据库查询。在jpetstore4.0中,iBatis主要负责: 1. **SQL动态生成**:iBatis允许根据传入的参数动态生成SQL语句,避免硬编码SQL,...

    iBATIS JPetStore

    iBATIS JPetStore是一个经典的开源项目,它用于展示iBATIS框架在实际应用中的使用。iBATIS是一个数据持久层框架,它简化了Java应用程序与数据库之间的交互,避免了直接编写大量的SQL语句。JPetStore是基于iBATIS实现...

    jpetstore源代码

    **标题解析:** "jpetstore源代码" 这个标题指的是一个开源项目或示例应用,名为"jpetstore",它提供了完整的源代码。这个项目可能是为了演示或者教学目的,让学习者能够理解并研究Java编程语言,特别是与Web应用...

    springMVC自带的jpetstore源码

    - **HandlerMapping**: 根据请求 URL 映射到对应的 Controller 方法。 - **Controller**: 处理业务逻辑,返回一个 `ModelAndView` 对象,其中包含处理结果和视图信息。 - **ViewResolver**: 解析 `ModelAndView` 中...

    MyEclipse中加载Spring的JPetStore

    《MyEclipse中加载Spring的JPetStore详解》 在软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用开发...希望本文的详细解析能对你的学习之路提供帮助,让你在Spring框架的应用上更加得心应手。

    Struts+Spring+Hibernate实现的jpetstore

    在 jpetstore 中,Struts 控制着用户请求的流向,解析HTTP请求,并调用相应的业务逻辑组件进行处理。Action类是Struts的核心,它接收来自控制器的请求,执行相应的业务逻辑,并返回一个表示结果的ActionForward对象...

    iBATIS_JPetStore-4.0.5

    在iBATIS_JPetStore-4.0.5项目中,iBATIS作为核心数据访问组件,负责处理SQL查询和结果映射。它通过XML配置文件定义了SQL语句和Java对象之间的映射关系,使得数据库操作变得简单而直观。而Spring框架可能被用来管理...

    JPetStore4.0.5

    《JPetStore4.0.5:Ibatis与Struts的经典结合》 JPetStore4.0.5是一个基于Java的开源电子商务应用,它展示了如何有效地利用Ibatis和Struts框架构建一个简单而实用的在线商店系统。这个版本在设计上保持了简洁性,...

Global site tag (gtag.js) - Google Analytics