• Javaweb学习笔记--分层设计


    在早期的JavaWeb应用中,JSP文件负责处理业务逻辑,控制网页流程并创建HTML页面,JSP文件是一个独立的,能自主完成所有任务的模块,

    这带来了一系列问题:
    HTML代码和Java程序代码强耦合在一起
    内嵌的流程控制逻辑
    调试困难
    可维护性差
    可读性差

    为了解决以上问题,SUN公司先后制定了两种设计模式:jspmodel1以及jspmodel2

    本质区别:在于负责流程控制的组件不同。

    0x01 Model1

    在JSP Model1中,JSP页面负责调用模型组件来响应客户请求,并将处理结果返回给用户。
    JSP既要负责流程控制,还要负责产生用户界面,因此它要同时充当视图和控制器的需要,但它不适合开发复杂的大型应用程序。

    0x02 MOdel2

    JSP Model2用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean实现模型的功能:

    Servlet充当控制器的角色,负责处理客户请求,创建JSP页面需要使用的JavaBean对象,并更具客户请求选择合适的JSP页面返回给客户。 在JSP页面内没有流程控制逻辑,它仅负责检索原先由Servlet创建的JavaBean对象,并把JavaBean对象包含的数据作为动态内容插入到静态模板中。 它清晰地分离了数据展示,数据处理和流程控制。

    在Model2中,使用一个Servlet或者Filter充当控制器Controller,所有现代的Web框架都是Model2实现。像Struct1和spring MVC这类框架是在他们的MVC架构中使用一个Servlet Controller,而Structs2则使用Filter。 尽管也支持其他的View技术,但一般来说,它用JSP页面作为应用程序的View。至于Model,则是使用POJO对象。许多人选择使用JavaBean保存模型对象的状态,并将业务逻辑转移到一个Action类中。

    在Model2应用程序中,每一个HTTP请求都必须被定向到Controller中。请求的URI告诉控制器要调用那一个Action。Action是指应用程序能够执行的一项操作。一个Action类可以用来服务几个不同的Action或单个Action。控制器会仔细查看URI,决定要调用哪一项Action。它还会将模型对象保存在一个可以通过View访问到的地方,以便服务器端的值可以在浏览器中显示出来。最后,控制器用一个RequestDIspatcher跳转到一个View。在View(JSP)页面中,利用EL表达式和定制标签来显示值。

    0x03 MVC

    目前,javaee体系主要采用的是MVC模式,MVC是模型(model),视图(view)和控制(controller)的缩写。 这种技术是某model2实现的。

    MVC主要用于实现web系统的职能分工。

    在MVC分层结构中:
    model层主要实现系统中的业务逻辑,通常可以用javabean或EJB来实现。
    view层主要是用于和用户的交互,主要用jsp来实现。
    controller是model和view之间沟通的桥梁,他可以分派用户的请求,并选择恰当的view来实现交互,同时可以解析用户得输入,并将其映射成模型层可以执行的操作。通常用servlet实现。

    0x04 什么是三层架构(three-tier application)

    通常意义上的三层架构:把整个业务应用分为三层:表现层(UI),业务逻辑层(BLL),数据访问层(DAL)

    三层架构的目的:高内聚,低耦合。

    表现层(UI):通俗地讲,是展现给用户的东西,也就是用户在使用应用的时候能看到的一切。

    业务逻辑层(BLL):根据具体问题的操作,对数据业务进行逻辑的处理

    数据访问层:(DAL):直接对数据库进行操作,也就是对数据库进行增删查改等操作。

  • 相关阅读:
    《Robust Sparse Coding for Face Recognition》
    安装robotframwork 报错Requirement already satisfied
    python -m pip install --upgrade pip 解决升级不成功问题
    pycharm 导入requests库踩坑帖
    新电脑软件安装及环境变量配置
    monkey参数命令
    adb 命令合集
    【转载】解决Sublime编译Python时出现Decode error
    [转载]Python3 接口自动化测试项目实战一(WEB项目)
    python sublime run快捷键设置
  • 原文地址:https://www.cnblogs.com/da-mooo/p/5635967.html
Copyright © 2020-2023  润新知