再看PetStore

再看PetStore

Petstore 很早以前看过了的,听说是什么学JAVA必看,时间长了都没什么印象了,今天再看一篇,觉得又学了不少东西。。看来好东西还是得经常看啊。。

下面对Petstore的代码做一个简单的分析和梳理,以便下次看的时候更快捷。。

我把它分四了个部分,其实还可以分的更细,不过大体先这样分,更细的在这四个下面再分好来(按包名):

1.domain POJO部分

2.persistence 数据持久层

3.service 对持久层数据的操作

4.struts 业务逻辑与前端数据显示

Petstore 数据持久层用了iBatis ,扭转控制用的是Struts

iBatis 可以进行复杂的SQL语句查询,很简单,轻量,感觉也非常的灵活

Struts 这个么,有什么好处不用多说,呵呵。。

下面就分别说说各个部分:

1.domain POJO部分

 这部分其实就是VO,感觉没什么好说的,里面也有些东西,以后发现什么奇妙的再加!

2.persistence 数据持久层

 这部分的东西就多了,分为:iface(接口定义将对数据执行哪些操作),sqlmapdao(具体对数据的操作,这里使用的是iBatis) ,这里最值得学习的是它的结构思想,这样的结构很容易把实现和接口的定义分离开来。  service层不关心具体的实现,只用调用接口,如果要换掉实现方式,只用替换sqlmapdao即可。

3.service 对持久层数据的操作

  1. public class AccountService {
  2.   /* Constants */
  3.   private static final AccountService instance = new AccountService();
  4.   /* Private Fields */
  5.   private DaoManager daoManager = DaoConfig.getDaomanager();
  6.   private AccountDao accountDao;//这里就是第二部分中说的到接口
  7.   /* Constructors */
  8.   public AccountService() {
  9.     accountDao = (AccountDao) daoManager.getDao(AccountDao.class);//这里的调用得到具体的实现类
  10.   }
  11.   /* Public Methods */
  12.   public static AccountService getInstance() {
  13.     return instance;
  14.   }
  15.   /* ACCOUNT */
  16.   public Account getAccount(String username) {
  17.     return accountDao.getAccount(username);
  18.   }
  19.   public Account getAccount(String username, String password) {
  20.     return accountDao.getAccount(username, password);
  21.   }
  22.   public void insertAccount(Account account) {
  23.     accountDao.insertAccount(account);
  24.   }
  25.   public void updateAccount(Account account) {
  26.     accountDao.updateAccount(account);
  27.   }
  28.   public List getUsernameList() {
  29.     return accountDao.getUsernameList();
  30.   }
  31. }

从代码中可以看到,对数据的操作是不关心具体实现的,这样就降低了服务层与操作层的耦合性,便于以后对操作层做更改!

4.struts 业务逻辑与前端数据显示

这里的看点有ActionContext这个类,它把所有应用程序要传送的数据放在了5个Map中(ApplicationMap,SessionMap,RequestMap,ParameterMap,CookieMap),对数据进行了集中管理。

还有BeanAction,这个类运用了对象反射机制,一个execute方法负责了所有的扭转动作!

业务逻辑层(presentation包)继承了Struts的ActionForm类,调用service层搞供的方法进行相关的数据操作。


iBatis 在其中的运用

待续。。。

Struts 在其中的运用 

待续。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100536.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cover letter 和response letter的写法

    cover letter 和response letter的写法http://emuch.net/bbs/viewthread.php?tid=988184&fpage=1投稿感受和体会bydingdang15fromemuch投稿感受和体会bydingdang15fromemuch几个月前认识了小木虫网站,从此就喜欢上了这里.每天有空都上这里,看一下虫友发表论文的经验,体会,怎么投稿,怎么回复审稿人的意见等,还有热心虫友提供的英文

    2022年5月1日
    40
  • Java安全之SnakeYaml反序列化分析

    Java安全之SnakeYaml反序列化分析0x00前言偶然间看到SnakeYaml的资料感觉挺有意思,发现SnakeYaml也存在反序列化利用的问题。借此来分析一波。0x01SnakeYa

    2021年12月12日
    70
  • SSH整合JPA+Mysql

    SSH整合JPA+Mysql

    2021年9月26日
    44
  • 【摄像头】图像传感器尺寸、像素大小和成像质量的关系

    【摄像头】图像传感器尺寸、像素大小和成像质量的关系1、图像传感器的尺寸(靶面大小)越大,成像质量越好如果相同分辨率的相机,传感器面积越大,则其单位像素的面积也越大,成像质量也会越好。同样的500万像素的摄像头,2/3”的传感器成像质量就要优于1/2”的。2、图像传感器的尺寸单位换算图像传感器的尺寸大小是指靶面对角线的长度,单位为英寸,1英寸等于16mm。这样1/2”传感器对角线长度则为8mm,按照一般的传感器的长宽比为4:3的话,那么就对应勾股定理,1/2”的传感器长宽分辨率为6.4mm、4.8mm。如某相机的分辨率为25881940的500万像素

    2022年6月10日
    71
  • 互联网金融风控模型「建议收藏」

    互联网金融风控模型「建议收藏」一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对接第三方征信公司芝麻信用分,通过用户信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度对…

    2022年6月14日
    25
  • Bootstrap 流式布局

    Bootstrap 流式布局流式布局同理,将Bootstrap的流式栅格放到class="container-fluid"的流式容器中,即可创建流式布局。流式布局将填满整个视口宽度。如:<divclass="container-fluid"> <divclass="row-fluid">   <divclass="span2">     <!–

    2025年8月4日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号