当前位置: 首页 > news >正文

典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式

先看代码与实现:

文件结构

triangle_area4.jsp

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<body>
<%--<jsp:useBean>:用于在JSP中实例化JavaBean。在这里,它实例化了javabean.Triangle类的对象,并赋予ID为triangle。
如果在此之前已经存在该ID的Bean,则使用已存在的对象,不再重新创建。--%>
<jsp:useBean id="triangle" class="javabean.Triangle" />
<%--<jsp:setProperty>:用于设置JavaBean的属性值--%>
<jsp:setProperty name="triangle" property="sideA" value="3.0" />
<jsp:setProperty name="triangle" property="sideB" value="4.0" />
<jsp:setProperty name="triangle" property="sideC" value="5.0" /><%--<jsp:getProperty>:用于从JavaBean中读取属性值,并在JSP页面上显示--%>
三角形的三条边分别为: <jsp:getProperty name="triangle" property="sideA" />,
<jsp:getProperty name="triangle" property="sideB" />,
<jsp:getProperty name="triangle" property="sideC" />,面积为:
<jsp:getProperty name="triangle" property="area" />
</body>
</html>

Triangle.class

package javabean;public class Triangle {private double sideA;private double sideB;private double sideC;private double area;public Triangle() {}public double getSideA() {return this.sideA;}public void setSideA(double var1) {this.sideA = var1;}public double getSideB() {return this.sideB;}public void setSideB(double var1) {this.sideB = var1;}public double getSideC() {return this.sideC;}public void setSideC(double var1) {this.sideC = var1;}public void setArea(double var1) {this.area = var1;}public double getArea() {double var1 = 0.0;if (this.sideA + this.sideB > this.sideC && this.sideA + this.sideC > this.sideB && this.sideB + this.sideC > this.sideA) {double var3 = (this.sideA + this.sideB + this.sideC) / 2.0;var1 = Math.sqrt(var3 * (var3 - this.sideA) * (var3 - this.sideB) * (var3 - this.sideC));}return var1;}
}

该项目的JavaBean 实现原理体现

JavaBean Triangle 类定义了三角形的三个边sideAsideBsideC,并包含了一个area属性用于计算三角形的面积。JavaBean是一种特殊的Java类,它通常符合以下几个条件:

  • 属性私有化:类的属性(如sideAsideBsideC等)是private的,确保外部代码不能直接访问。
  • 提供getter和setter方法:每个属性都有相应的getter和setter方法,用于访问和修改这些属性。

Triangle类中,getArea()方法根据三角形的三个边长,通过海伦公式(Heron’s Formula)计算三角形的面积:

MVC设计模式的体现

Model(模型)Triangle类是JavaBean,用于保存和处理数据(即三角形的三条边和面积计算)。

View(视图)triangle.jsp 是用于显示数据的JSP页面,使用<jsp:useBean>等标签与Triangle类进行交互。

Controller(控制器):虽然在你的项目中没有明显的控制器代码,但JSP页面实际上在某种程度上扮演了部分控制器的角色,通过处理数据的显示逻辑。

项目实现流程

用户访问triangle.jsp页面。JSP通过<jsp:useBean>标签实例化javabean.Triangle类,生成一个triangle对象。通过<jsp:setProperty>标签,设置三角形的三条边sideAsideBsideC的值。triangle.jsp页面使用<jsp:getProperty>读取并展示三角形的边长和通过getArea()方法计算出的面积。

关于getArea()自动调用的疑问(重点)

<jsp:getProperty> 标签会调用 Triangle 类中的 getArea() 方法,这个方法根据 sideAsideB 和 sideC 的值动态计算并返回面积。因为 area 并不需要通过外部赋值,而是依赖于 sideAsideB 和 sideC 来计算。

换句话说,area 的值不是直接存储的,而是通过逻辑计算得到的。当 triangle 的边长设置好后,每次调用 getArea() 方法时,它都会重新计算并返回面积。

JSP 与 JavaBean 的工作原理:在使用 jsp:getProperty 时,JSP 引擎会通过 Java 反射机制来寻找对应属性的 getter 方法(在这里是 getArea())。即使你没有为 area 显式赋值,JSP 仍然能够通过这个 getter 方法获得计算后的结果。

http://www.lryc.cn/news/447018.html

相关文章:

  • Vue引入js脚本问题记录(附解决办法)
  • 数据清洗与数据治理的关系
  • 树莓派pico上手
  • TypeError: load() missing 1 required positional argument: ‘Loader‘
  • 根据软件架构设计与评估的叙述开发一套机器学习应用开发平台
  • 【隐私计算篇】利用多方安全计算MPC实现VGG16人脸识别隐私推理
  • Python 入门教程(3)基础知识 | 3.7、pass 关键字
  • nodejs基于vue+express度假村旅游管理系统设计与实现7t82p
  • 【裸机装机系列】16.kali(ubuntu)-安装linux和win双系统-重装win11步骤
  • 基于TypeScript+React+AntDesign 的车辆车型管理页面
  • sentinel-dashboard数据 redis 持久化
  • 【C++】——vector深度剖析模拟实现
  • OpenCV特征检测(11)从一组点中检测直线的函数
  • C++_24_适配器
  • 算法.图论-并查集
  • elasticSearch常见命令及历史数据迁移
  • WebLogic 漏洞复现
  • web基础:域名、网页、HTML、web版本
  • 【项目案例】物联网比较好的10+练手项目推荐,附项目文档/源码/视频
  • AWS注册时常见错误处理
  • Spark-RDD持久化
  • vue2中使用tailwindCss 详细教程
  • 机器视觉工程师一直做调试,维护岗位,想转岗软件方面C#从零开始,快则三年不到,慢则一辈子不会
  • 【初阶数据结构】详解二叉树 - 树和二叉树(三)(递归的魅力时刻)
  • 【QT】QWidget 重要属性
  • 什么是数据库连接池?为什么需要使用连接池?
  • 2024ICPC网络赛第一场C. Permutation Counting 4(线性代数)
  • 01.前端面试题之ts:说说如何在Vue项目中应用TypeScript?
  • 【HTTP】方法(method)以及 GET 和 POST 的区别
  • Ubuntu NFS 搭建及配置