再看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 在其中的运用 

待续。。。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • docker打开2375监听端口「建议收藏」

    docker打开2375监听端口「建议收藏」由于在使用caliper时,需要用到Docker的监听端口,所以此步骤如下:1、修改/usr/lib/systemd/system/docker.service,在[service]的ExecStart,添加-Htcp://0.0.0.0:2375ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375-Hfd://–containerd=/run/containerd/containerd.sock2、刷新配置文件,重启docker

  • 在SQL存储过程中给条件变量加上单引号

    在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL)@d_start

    2021年12月24日
  • C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)

    C语言标准库函数大全(ctype、time 、stdio、stdlib、math、string)文章目录C语言函数库一.C语言函数库一.<assert.h>二.<ctype.h>三.<errno.h>四.<limits.h>五.<locale.h>六.<math.h>七.<setjmp.h>八.<signal.h>九.<stdarg.h>十.<stddef.h>十一.<stdio.h&.

  • Scheme r5rs letrec的用法

    Scheme r5rs letrec的用法

  • python中append函数什么意思_python中append函数用法讲解

    python中append函数什么意思_python中append函数用法讲解python中append函数用法讲解如果在做一个地区的统计工作,可以使用列表来帮助我们。输入汉字或者其他字符,比如“01代表汉族”,那么在写民族的时候有下拉列表,就可以打01,就会自动识别为汉族。列表是用来大规模数据填报的时候使用,在python中,也有很多使用到列表的时候,那你知道如何在列表的末尾添加新的对象?今天,我们就来认识一下python中可以在列表末尾添加元素的append函数。1、a…

  • tortoiseSVN汉化(简单飞机有汉化版吗)

    前言我们在进行项目的合作开发的时候一定无法离开一个公共平台,提供大家做项目的一个平台,目前使用较多的是SVN,它是一个开放源代码的版本控制系统。但是大家一定有遇到这样的问题,就是全英文界面(英语好的可以忽略),这个或多或少的让我们的工作效率降低了很多,特别是针对刚接触的小伙伴更是如此,本来就不熟悉,还全英文。下面我就来给大家一起来解决如何将全英文的SVN转化成中文版的SVN。处理前使用…

发表回复

您的电子邮箱地址不会被公开。

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