再看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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • arcgis10.2许可服务器无法启动_gis连接到数据库失败

    arcgis10.2许可服务器无法启动_gis连接到数据库失败记录一次eruka注册中心访问有时404,但是接口路径存在的问题一.事件发生背景二.问题发生原因三.解决办法一.事件发生背景微服务架构,多人共同在自己本地开发同一个微服务,但是注册中心只有一个二.问题发生原因多人在自己本地起项目,注册到了同一个注册中心,且注册的服务名字都一样,因此当请求到达eruka注册中心时,会轮训或随机访问存活的节点,当请求访问到其他人的微服务时,就404了,请求访问到自己的微服务,就正常了(开发的时候,一个application对应了多个服务)三.解决办法将自己的微服务

    2022年8月21日
    5
  • 6个Python工程师必考的面试题「建议收藏」

    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要给大家介绍6个Python工程师必考的面试题。

    2022年1月18日
    69
  • 实现学员管理系统

    实现学员管理系统”””班级学员管理系统需求:简单的设计一下首页。1、添加学员信息,设计简单的页面2、删除学员信息,学员信息为空则不执行操作3、修改学员信息,学员信息为空不执行操作(当修改的学员的姓名不在列表中时返回错误)4、查找学员信息,把学员信息,依次输出在终端页面”””Student_List=[]whileTrue:print(”)print(‘–…

    2022年9月20日
    0
  • TCP连接异常终止(RST包)场景分析

    TCP连接异常终止(RST包)场景分析一、TCP异常终止(reset报文)TCP的异常终止是相对于正常释放TCP连接的过程而言的,我们都知道,TCP连接的建立是通过三次握手完成的,而TCP正常释放连接是通过四次挥手来完成。但是有些情况下,TCP在交互的过程中会出现一些意想不到的情况,导致TCP无法按照正常的三次握手建立连接或四次挥手来释放连接。如果此时不通过其他的方式来释放TCP连接的话,这个TCP连接将会一直存在,占用系统的资源。在这种情况下,我们就需要有一种能够释放TCP连接的机制,这种机制就是TCP的reset报文。reset报文是指

    2022年10月1日
    0
  • c#爬取Silverlight网页[通俗易懂]

    c#爬取Silverlight网页[通俗易懂]前言:爬取普通的文本网页非常容易,但爬取Silverlight的网页代码时,有时候可能会加密。这样就会很麻烦了。下面就爬取网站http://zx.bjmemc.com.cn/(北京空气质量网)进行说明。任务:网站http://zx.bjmemc.com.cn/显示的内容如下图所示。我们的任务就是将空气质量数据抓取下来。工具:1、fiddler,http://www.

    2022年10月19日
    0
  • eplan激活码破解步骤-激活码分享

    (eplan激活码破解步骤)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html23EQQJJI0G-eyJsa…

    2022年3月30日
    2.5K

发表回复

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

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