简单Web应用框架设计

简单Web应用框架设计

对于web应用,我们可以简单将其抽象归纳为如图中所示几个部分:客户端(Client)、请求处理(Router)、业务处理(Controller)、外部调用(eAPI)、视图引擎(View)、服务引擎(Service)、数据持久(DAO)和数据库文件系统。晓宇码匠1.请求处理Router

请求处理主要是对客户端全部请求的统一入口,和硬件路由器的功用相似。请求处理主要对客户端请求进行过滤、定位控制器、权限校验等作用。

2.业务处理Controller

业务处理主要是结合具体的业务对用户的请求进行处理,其实这也是我们常说的控制器;控制层负责处理逻辑控制。

3.视图引擎View

视图引擎主要调用模板对业务数据进行渲染,输出html界面文件。

4.服务引擎Service

服务类似于业务处理,从整个应用层面来看,服务属于一类稳定的、安全的、全局的业务应用,处于业务和数据的中间。在有的应用中,直接将服务层合并到了业务处理中,但是我还是倾向于将服务剥离出来;服务层负责处理业务。

5.数据持久DAO

数据持久主要用于和数据库文件系统交互,也就是我们经常说的CURD操作。通常调用数据库或文件系统提供的CURD驱动接口(DataDriver)实现;dao层是单精度方法,负责实现功能,不处理业务。

6.数据库、文件系统

数据库、文件系统主要用于提供数据的CURD具体实现,如:MySQL、NTFS文件系统,并为三方应用提供数据驱动接口DataDriver。

我的ssm的分层方式
晓宇码匠

  • com.xiaoyu.shop.bean:实体类
  • com.xiaoyu.shop.controller:控制类(负责业务逻辑)
  • com.xiaoyu.shop.dao:接口类
  • com.xiaoyu.shop.instrument:工具类
  • com.xiaoyu.shop.service:服务类(功能的具体实现,供控制类使用)
  • com.xiaoyu.shop.test:测试类
  • com.xiaoyu.shop.util:其他类(外部调用或者拦截器)
  • resources:静态资源
  • webapp:视图层
    以上也是基于MVC架构来实现的

MVC的优点
1.低耦合性
  视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.高重用性和可适用性
   随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何 WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是 一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这 些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3.较低的生命周期成本
  MVC使开发和维护用户接口的技术含量降低。
4.快速的部署
  使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性
  分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利于软件工程化管理
  由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。

普及

交互式系统:

  • PAC模式定义表示-抽象-控制(Presentation-Abstraction-Control,PAC)体系结构模式以合作agent的层次形式定义了交互软件 系统的一种结构。
    • 介绍
        PAC模型以树状层次结构构建交互式应用层次。PAC agent共分三层:顶层PAC agent,底层PAC agent和中层PAC agent。但要注意的是,PAC并不是每个字母对应一层。后面,出现“agent”的地方与“PAC agent”同义。
        顶层agent负责系统的核心功功能。比如说建立在一个数据仓库上的应用程序,顶层agent就相当于访问数据仓库的接口。
        中层agent则是负责沟通底层和顶层agent。注意中层agent并不一定直接就和底层agent通信。因为中层agent中也可以分层次,高级别的中层agent管理低级别的中层agent,这个就有点像树里面的非叶子节点。
        底层agent表达了独立的语义概念。比如,负责显示功能的agent,柱状图、饼图等各种视图都可以通过一个agent来控制。底层agent负责直接跟用户打交道,也就是除了显示数据还可以接收输入。
        
        个人认为说agent分为三层还不如说agent分为三类。虽然,这样表述系统层次结构不太明显,但是起码不会和层次模型混淆。
  • MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller) 
    (控制器Controller)- 负责转发请求,对请求进行处理。
    (视图View) – 界面设计人员进行图形界面设计。
    (模型Model) – 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2021年7月21日 下午3:00
下一篇 2021年7月21日 下午4:00


相关推荐

  • Windows 上安装使用 Claude Code 指南

    Windows 上安装使用 Claude Code 指南

    2026年3月16日
    6
  • Java实现远程开关机(网络唤醒)

    Java实现远程开关机(网络唤醒)Java实现远程开关机是做的一个在局域网下实现一台机器对多台机器的开关机控制远程唤醒实现是通过电源的一种协议进行控制的,需要知道被唤醒机器的mac地址首先要须知:网络唤醒条件网络唤醒需要终端的主板和网卡支持,需要先在BIOS设置支持网络唤醒网络唤醒要接通电源保证网卡能通电要接网线不能是wifi如果强制关机可能不能通过网络唤醒来开机跨交换机或者跨路由的话就有可能不支持唤醒跨多…

    2022年6月2日
    44
  • 锚点偏移

    锚点偏移在进行锚点定位时 页面往往定位到页面的最顶部 无论是上部有导航条 还是出于美观考虑 都希望定位后该内容与页面顶部有一些间距 而锚点自动定位是无法达到的 如何处理呢 我们无法改变的是需要定位的元素一定要到最顶部 可以考虑采用 padding top 进行加高 然后问题出现了 此时 元素上部会有一大截空白 于是 可以考虑设置 margin top 为负 数值等同于 padding top 的设置抵消掉空白

    2026年3月18日
    2
  • 简单的批处理命令_bat批处理执行cmd命令

    简单的批处理命令_bat批处理执行cmd命令批处理命令简单教程转载来源:https://blog.csdn.net/Joker_N/article/details/89838719文章目录批处理命令简单教程一、常用命令简介1、echo命令2、rem命令3、pause命令4、call命令5、start命令6、goto命令7、set命令二、常用符号简介1、回显屏蔽@2、重定向1>;与>>3、重定向2<4、管道符号|5、转义符^6、逻辑命令符三、命令释义1、文件夹管理2、文件管理3、网络命令4、系统管理四

    2022年8月22日
    9
  • 使用 Java8的 stream对list数据去重,使用filter()过滤列表,list转map「建议收藏」

    使用 Java8的 stream对list数据去重,使用filter()过滤列表,list转map「建议收藏」list去重,根据对象某个属性、某几个属性去重去除List中重复的StringListunique=list.stream().distinct().collect(Collectors.toList());去除List中重复的对象//Person对象publicclassPerson{privateStringid;…

    2022年5月9日
    400
  • python官方库和第三方库_网络爬虫第三方库

    python官方库和第三方库_网络爬虫第三方库Python的强大之处除了它的简洁易用,最厉害的就是它有着广泛的第三方库支持。今天小编就带你看下Python有哪些常用第三库吧,知道且用过超过10个的欢迎留言~文本处理与格式转换Char…

    2025年5月26日
    6

发表回复

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

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