JSP经典设计模式流程分析:JSP+JavaBean设计模式+MVC设计模式

JSP两种经典设计模式

Model1设计模式:JSP+JavaBean

架构图

什么是JavaBean

  • JavaBean是一种JAVA语言写成的可重用组件,它遵循特定的编程规范,如类必须是公共的、具有无参构造函数,并提供getter/setter方法等。
  • 这里的JavaBean不单单指的是实体类,实际上包括除了JSP的所有Java编写的代码,如果是实体类,则表示实体模型;如果是Service则表示业务模型
  • 也就是说,JavaBean实际上是一种模型思想

这里的JSP设计模式指的是,由JSP完成前端页面+Servlet处理请求并响应的操作;由JavaBean(剩余的java代码)完成业务和数据库数据处理等操作

为什么需要分层

  • JSP开发的弊端
    • 业务处理的代码与JSP代码混在一起.不易于阅读,不易于代码维护,降低了程序的可维护性,可扩展性,同时不利于分工合作

      <form method="post" action="doLogin.jsp"> ... <% String uname=request.getParameter("user"); String upwd=request.getParameter("pwd"); ... %>

      Model2模式:(采用MVC设计模式)

      • Servlet:控制程序流程
      • JavaBean:实现业务逻辑层
      • JSP:负责数据显示

      优点:

      • 层次关系更加清晰
      • 各组件分工更加明确

      缺点:

      • 增加了编写的复杂度

      MVC: 模型-视图-控制器: (Model-View-Controller)

      MVC

      • 模型:
        • 对应的组件是JavaBean.代表应用程序的数据以及用于访问,控制和修改这些数据的业务规则.
      • 视图:
        • 对应的组件是JSP或HTML.视图是用户看到并与之交互的界面.(它从模型中获取数据并指定这些数据应该如何表现)
      • 控制器:
        • 用的组件是Servlet.控制器负责转发请求,对请求进行处理.

      MVC架构图

      MVC执行流程:

      1.客户端向服务器发送请求

      2.服务器把请求分发给Servlet控制器

      3.Servlet控制器获取用户输入的数据,并调用JavaBean进行

      4.Servlet根据处理的结果选择一个JSP视图来响应用户.

      5.JSP视图显示处理的数据(如果存在数据)

      三层开发遵循的原则

      • 上层依赖其下层,依赖关系不跨层
        • 表示层不能直接访问数据访问层
        • 上层调用下层的结果,取决于下层的实现
      • 下一层不能调用上一层
      • 下一层不依赖上一层
        • 上层的改变不会影响下一层
        • 下层的改变会影响上一层得到的结果
      • 在上一层中不能出现下一层的概念
        • 分工明确,各司其职

      分层开发的特点

      • 下层不知道上层的存在
        • 仅完成自身的功能
        • 不关心结果如何使用
      • 每一层仅知道其下层的存在,忽略其他层的存在
        • 只关心结果的取得
        • 不关心结果的实现过程
        • JSTL通常会与EL表达式合作实现JSP页面的编码

      分层开发的优势

      • 职责划分清晰
      • 无损替换
      • 复用代码
      • 降低了系统内部的依赖程度

      总结

      • JSP两种经典设计模式:
        • model1:JSP+JavaBean
        • model2:Jsp+Servlet+JavaBean
      • MVC设计模式:
        • M(JavaBean)+V(JSP)+C(Servlet)
      • 使用MVC的优点与缺点:
        • 优点:职责划分清晰,无损替换,复用代码,降低了系统内部的依赖程度
        • 缺点:增加编写的复杂度,不适合中小型系统
      相关推荐
      自身就是太阳9 分钟前
      Maven的高级特性
      java·开发语言·数据库·后端·spring·maven
      飞翔的佩奇13 分钟前
      Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)
      java·数据库·spring boot·毕业设计·maven·mybatis·课程答疑
      Flying_Fish_roe15 分钟前
      Spring Boot-热部署问题
      java·spring boot·后端
      itoshi rin24 分钟前
      简单题21 - 合并两个有序链表(Java)20240917
      java·数据结构·链表
      Chase-Hart37 分钟前
      【每日一题】LeetCode 1184.公交站间的距离问题(数组)
      java·算法·leetcode·eclipse·intellij-idea
      计算机编程-吉哥38 分钟前
      计算机毕业设计 办公用品管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
      java·spring boot·毕业设计·毕业论文·计算机毕业设计选题·计算机毕业设计开题报告·办公用品管理系统
      东方翱翔1 小时前
      HTML中的文字与分区标记
      java·前端·html
      来一杯龙舌兰2 小时前
      【JAVA】自动生成常量类、自动生成所需代码(附源码)
      java·开发语言·c#·自动生成代码
      Flying_Fish_roe2 小时前
      Spring Boot-依赖冲突问题
      java·linux·spring boot
      用户名称: