发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 CQRS
1 2 3 下一页 Go 3

解剖Petstore用户资料修改流程

    
2002-08-20 11:28
赞助商链接

update_customer.screen

查找screendefinitions_en_US.xml
由于petsotre的界面使用了一个模板taglib,这个模板将屏幕分成:
title 标题
banner 广告
sidebar 菜单边
body 正文
mylist 特殊显示
footer 页脚
这个思路可以借鉴到我们系统中。
从其中找到update_customer.screen的真正程序名是:
<parameter key="body" value="/edit_customer.jsp" />
也就是是edit_customer.jsp

打开edit_customer.jsp 发现其form action又是自己定义的,
action="customer.do"
也就是说update_customer.screen页面是提交到customer.do程序的。

再查询customer.do是什么?

在mappings.xml中查询到:
<url-mapping url="customer.do" screen="customer.screen" >
<web-action-class>com.sun.j2ee.blueprints.petstore.controller.web.actions.CustomerHTMLAction</web-action-class>
</url-mapping>
customer.do实际是com.sun.j2ee.blueprints.petstore.controller.web.actions.CustomerHTMLAction这个servlet
那么打开com.sun.j2ee.blueprints.petstore.controller.web.actions.CustomerHTMLAction:

这个servlet主要是处理update_customer.screen提交form中的参数,
ContactInfo info = extractContactInfo(request, "_a");
CreditCard creditCard = extractCreditCard(request);
ProfileInfo profileInfo = extractProfileInfo(request);
将这些从前台用户那里输入的新数据打包在一个叫CustomerEvent类中:
event = new CustomerEvent(CustomerEvent.UPDATE, info, profileInfo, creditCard);

这个CustomerEvent很重要,是承接前台和后台EJB处理的中间枢纽。

从mappings.xml可以查询到:
<event-mapping>
<event-class>com.sun.j2ee.blueprints.petstore.controller.events.CustomerEvent</event-class>
<ejb-action-class>com.sun.j2ee.blueprints.petstore.controller.ejb.actions.CustomerEJBAction</ejb-action-class>
</event-mapping>
CustomerEvent实际是激活 CustomerEJBAction.

打开CustomerEJBAction,我们发现了updateCustomer(CustomerEvent ce)
这个方法将前台用户的新数据set到EJB中。
CustomerEJBAction也并不是直接和entity bean打交道,而是通过ShoppingClientFacadeLocalEJB
这是个Facade模式。

下次我们讨论MainServlet
这个MainServlet实际上是petstore MVC的总controller,但是它和具体数据又没有关系,上面的customer.do实际是通过MainServlet激活的。

2002-08-20 11:29

update_customer.screen在http://deployathon.trifork.com:8080/petstore/update_customer.screen

2002-08-21 13:34

理解了Struts,对上面pet store这些门槛都一样理解。

2002-08-21 17:30

看了半天,总算明白点,底子薄啊
用户资料修改的CustomerHTMLAction相当于struts里的Action类,逻辑名custom,按照斑竹所介绍,CustomerEvent为ActionForm,收集前台信息。至于后台的EJB,个人认为如果把bean换成ejb,也就相当于加了ejb层,就象<web-action-class>和<ejb-action-class>,所以这已经不是struts所能解决的,只不过在web层有struts的影子

2002-11-26 11:13

什么鸟话?

3Go 1 2 3 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com