Javaweb07-JavaBean技术和Jsp开发模式

news2024/10/6 8:30:37

JavaBean技术和Jsp开发模式

一.JavaBean技术

1.JavaBean的基本概念

**JavaBean组件:**与html分离且使用Java代码封装类

image-20240616211258066

**JavaBean分类:**可视化JavaBean:swing 非可视化JavaBean:用于封装实体和业务逻辑

JavaBean特点:

  • JavaBean类中有无参的构造方法
  • JavaBean中的属性是私有的
  • JavaBean的属性通过public接口暴露到其他程序

2.JavaBean的应用

  • 获取JavaBean属性信息
1.初始化JavaBean实例
<jsp:useBean id="JavaBean的名字" class="JavaBean所在的类"></jsp:useBean>
    
2.获取JavaBean的属性
<jsp:getProperty name="JavaBean的名字" property="属性名"></jsp:getProperty>
    
原理:
<jsp:useBean>标签用于获取类的实例,其内部是通过调用类的默认构造方法实现的,所以,JavaBean需要有一个默认的无参构造方法; <jsp:getProperty>标签获取JavaBean中的属性,其内部是通过调用属性的getter方法实现的,所以,JavaBean规范要求为属性提供公共的(public)类型访问方法。
  • 对JavaBean属性赋值
<jsp:setProperty name="JavaBean的名字" property="属性名" value="属性值"></jsp:setProperty>
  • 接收表单参数并赋值给JavaBean
<jsp:setProperty name="JavaBean的名字" property="*"/>

3.JavaBean综合应用案例

实现对用户名的判断,判断名字只能为英文和数字组成

  • Username.java
public class Username {
    private String userName = "";
    private boolean valid = true;
    private String result = "";
    private String massage = "";

    public Username() {
    }

    public Username(String userName, boolean valid, String result, String massage) {
        this.userName = userName;
        this.valid = valid;
        this.result = result;
        this.massage = massage;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setValid(boolean valid) {
        this.valid = valid;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public String getMassage() {
        return massage;
    }

    public void setMassage(String massage) {
        this.massage = massage;
    }

    public void isValid() {
        if ("".equals(userName)) {
            valid = false;
            massage = "用户名为空,无法判断";
            result = "错误";
        } else {
            char[] chars = userName.toCharArray();
            for (int i = 0; i < chars.length; i++) {
                if ((chars[i] >= 48 && chars[i] <= 57) || (chars[i] >= 65 && chars[i] <= 90) || (chars[i] >= 97 && chars[i] <= 122)) {
                    continue;
                } else {
                    valid = false;
                    massage = "存在非法字符";
                    result = "错误";
                    return;
                }
            }
            if (valid = true) {
                massage = "合法名称";
                result = "正确";
            }
        }
    }
}
  • inputName.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <form action="/session-demo/jsp/judge.jsp" method="post">
        用户名:<input type="text" name="userName">只由字母,数字组成<br/>
        <input type="submit" value="提交">
    </form>
</body>
</html>
  • judge.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%request.setCharacterEncoding("utf-8");%>

<jsp:useBean id="Username" class="com.tyut.entity.Username">

</jsp:useBean>

<jsp:setProperty name="Username" property="*"/>
<%
  Username.isValid();
%>
输入的用户名为:<jsp:getProperty name="Username" property="userName"></jsp:getProperty><br/>
判断用户名是否正确:<jsp:getProperty name="Username" property="result"></jsp:getProperty><br/>
提示信息:<jsp:getProperty name="Username" property="massage"></jsp:getProperty><br/>

</body>
</html>

二.Jsp开发模式

Jsp早期开发模型

image-20240616214620168

1.Jsp Model1

JSP Model1采用JSP+JavaBean的技术,将页面显示和业务逻辑分开。其中,JSP实现流程控制和页面显示,JavaBean对象封装数据和业务逻辑。

image-20240616214730020

JSP Model1虽然将数据和部分的业务逻辑从JSP页面中分离出去,但是JSP页面仍然需要负责流程控制和显示用户界面,对于一个业务流程复杂的大型应用程序来说,在JSP页面中依旧会嵌入大量的Java代码

2.Jsp Model2

JSP Model2架构模型采用JSP+Servlet+ JavaBean的技术,此技术将原本JSP页面中的流程控制代码提取出来,封装到Servlet中,实现了页面显示、流程控制和业务逻辑的分离。实际上JSP Model2模型就是MVC(Model-View-Controller,模型-视图-控制器)设计模式,其中控制器的角色由Servlet实现,视图的角色由JSP页面实现,模型的角色是由JavaBean实现。

image-20240616214935076

Servlet充当了控制器的角色,它首先接收浏览器发送的请求,然后根据请求信息实例化JavaBean对象,由JavaBean对象完成数据库操作并将操作结果进行封装,最后选择相应的JSP页面将响应结果显示在浏览器中

3.MVC模式

MVC设计模式将软件程序分为三个核心模块:模型(Model)、视图(View)和控制器(Controller)

  • **模型:**负责管理应用程序的业务数据、定义访问控制以及修改这些数据的业务规则。当模型的状态发生改变时,它会通知视图发生改变,并为视图提供查询模型状态的方法。

  • **视图:**负责与用户进行交互,它从模型中获取数据向用户展示,同时也能将用户请求传递给控制器进行处理。当模型的状态发生改变时,视图会对用户界面进行同步更新,从而保持与模型数据的一致性。

  • **控制器:**负责应用程序中处理用户交互的部分,它从视图中读取数据,控制用户输入,并向模型发送数据。

image-20240617111928828

4.三层架构

image-20240617112219460
  • 三层架构与MVC的关系
image-20240617112355209

5.应用案例

使用MVC设计模式设计实现注册功能

image-20240617113501140

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1831034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Google Earth Engine(GEE)——导出影像video到自己的Google硬盘当中

函数: Export.video.toDrive(collection, description, folder, fileNamePrefix, framesPerSecond, dimensions, region, scale, crs, crsTransform, maxPixels, maxFrames) Creates a batch task to export an ImageCollection as a video to Drive. The collection must on…

有人说考个PMP证两个星期搞定?

PMP考试的时间并不需要太久&#xff0c;如果高效用心备考的话在对考试需要准备的时间上也只需要2-3个月的业余时间。而一次考试的时间也只需要半天&#xff0c;一门科目&#xff0c;就是《PMBOK》的知识。所以如果想学习项目管理考PMP认证的朋友&#xff0c;大可放心参加考试。…

线程池监控是怎么做的?

引言&#xff1a;在现代软件开发中&#xff0c;线程池是一种重要的并发控制机制&#xff0c;它能有效管理和复用线程资源&#xff0c;提升系统的性能和响应速度。然而&#xff0c;随着应用规模的扩大和复杂性的增加&#xff0c;对线程池进行有效监控显得尤为重要。线程池监控不…

第二十一章 访问者模式

目录 1 访问者模式介绍 2 访问者模式原理 3 访问者模式实现 4 访问者模式总结 1 访问者模式介绍 访问者模式(Visitor Pattern) 的原始定义是&#xff1a;允许在运行时将一个或多个操作应用于一组对象&#xff0c;将操作与对象结构分离 2 访问者模式原理 抽象访问者&#xf…

aardio实战篇) 下载微信公众号文章为pdf和html

首发地址&#xff1a; https://mp.weixin.qq.com/s/w6v3RhqN0hJlWYlqTzGCxA 前言 之前在PC微信逆向) 定位微信浏览器打开链接的call提过要写一个保存公众号历史文章的工具。这篇文章先写一个将文章保存成pdf和html的工具&#xff0c;后面再补充一个采集历史的工具&#xff0c…

Cweek6

C语言学习 十六.程序环境和预处理 1.翻译环境和运行环境 编译又分为三个阶段&#xff1a; 预编译&#xff08;文本操作&#xff09;&#xff1a;将include引入的头文件展开成代码&#xff0c;并把注释删除&#xff0c;使用空格代替注释&#xff0c;替换#define的文本编译&a…

基于改进字典学习的旋转机械故障诊断方法(MATLAB)

在过去的二十年里&#xff0c;稀疏表示在各个领域引起了广泛的关注。它的核心思想是将信号描述为尽量少的字典原子&#xff0c;在计算机视觉、生物学、特征提取和机械故障诊断方面显示出强大而可靠的能力。SR通常分为两个步骤&#xff1a;构建字典和学习稀疏系数。对于稀疏系数…

U盘文件夹变exe:现象解析与数据恢复策略

一、U盘文件夹变exe现象描述 在日常使用U盘进行数据传输和存储的过程中&#xff0c;部分用户可能会遭遇一种异常现象&#xff1a;原本正常的文件夹突然变成了可执行文件&#xff08;即后缀为.exe的文件&#xff09;。这种变化不仅影响了用户对文件的正常访问和管理&#xff0c…

怎么加密U盘数据?U盘加密软件哪个好?

U盘是我们在生活和工作中最常用的移动存储设备&#xff0c;而为了避免U盘数据泄露&#xff0c;我们需要使用U盘加密软件来加密保护U盘数据。那么&#xff0c;U盘加密软件哪个好呢&#xff1f;下面我们就一起来了解一下吧。 BitLocker加密 BitLocker是Windows系统提供的磁盘加密…

【一步一步了解Java系列】:认识String类

看到这句话的时候证明&#xff1a;此刻你我都在努力 加油陌生人 个人主页&#xff1a;Gu Gu Study专栏&#xff1a;一步一步了解Java 喜欢的一句话&#xff1a; 常常会回顾努力的自己&#xff0c;所以要为自己的努力留下足迹 喜欢的话可以点个赞谢谢了。 作者&#xff1a;小闭…

MS1112驱动开发(iio框架)

作者简介&#xff1a; 一个平凡而乐于分享的小比特&#xff0c;中南民族大学通信工程专业研究生在读&#xff0c;研究方向无线联邦学习 擅长领域&#xff1a;驱动开发&#xff0c;嵌入式软件开发&#xff0c;BSP开发 作者主页&#xff1a;一个平凡而乐于分享的小比特的个人主页…

揭秘未来:用线性回归模型预测一切的秘密武器!

线性回归模型 1. 引言2. 理论基础2.1 线性回归模型的定义与原理原理与关键假设模型参数估计 2.2 模型评估指标2.2.1 残差分析2.2.2 拟合优度指标2.2.3 统计检验 3. 应用场景3.1. 金融领域中的应用3.2. 医疗健康领域中的应用3.3. 其他领域的应用 4. 实例分析4.1、数据集选择4.2、…

企业三要素核验-公司三要素核验-企业三要素核验接口

接口简介&#xff1a;企业三要素验证&#xff0c;输入公司名称、统一社会信用代码、法人姓名验证是否一致 1.输入公司名称、统一社会信用代码、法人姓名验证是否一致。 2.查询结果仅供参考&#xff0c;不作法定证明使用。 3.不返回其它信息 接口地址&#xff1a;https://www.wa…

【基于 PyTorch 的 Python 深度学习】8 注意力机制(4):PyTorch 实现(上)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了如何使用 PyTorch 实现 Transformer 。 代…

数据库系统概念(第八周 第一堂)(规范化关系数据库设计)(强推学习!!!)

目录 前言 E-R模型质量低的深层原因 数据依赖 函数依赖 主属性/非主属性 逻辑蕴含与闭包 Armstrongs Axiom 求解F闭包算法 求解属性集闭包算法 属性集闭包的作用 候选码求解理论和算法 候选码求解理论 无关属性 检验方法 正则覆盖 关系模式的设计 关系…

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的&#xff08;比如这篇&#xff1a;从0开始在visual studio上安装opencv&#xff08;超详细&#xff0c;针对小白&#xff09;&#xff09;&#xff0c;但是中间出现了一些别人没有遇到的问题&#xff0c;虽然原因没有找到&#xff0c;但…

[自动驾驶 SoC]-3 英伟达Orin

NVIDIA Jetson AGX OrinTM series (资料来源&#xff1a;nvidia-jetson-agx-orin-technical-brief.pdf) 1 整体介绍 1) Orin SoC结构 Orin SoC&#xff0c;如下图所示&#xff0c;由一个NVIDIA Ampere architecture GPU, Arm Cortex-A78AE CPU, 下一代深度学习核视觉处理加速…

MicroPython+ESP32 C3开发上云

传感器PinI/O状态D412输出1开0关D513输出1开0关 概述 MicroPython是python3编程语言的精简实现&#xff0c;能够在资源非常有限的硬件上运行&#xff0c;如MCU微控制器Micropython的网络功能和计算功能很强大&#xff0c;有非常多的库可以使用&#xff0c;它为嵌入式开发带来了…

Windows NT 3.5程序员讲述微软标志性“3D管道”屏幕保护程序的起源故事

人们使用屏保程序来防止 CRT 显示器"烧毁"&#xff0c;因为静态图像会永久损坏屏幕。像 3D Pipes 这样的屏保程序能在显示器处于非活动状态时为其提供动画效果&#xff0c;从而保护屏幕并延长其使用寿命。此外&#xff0c;它们还能在用户不使用电脑时为其提供可定制的…

盘点有趣的人工智能开源项目一

字幕导出 zh_recogn是一个专注于中文语音识别的字幕生成工具&#xff0c;基于魔塔社区Paraformer模型。它不仅支持音频文件&#xff0c;还能处理视频文件&#xff0c;输出标准的SRT字幕格式。这个项目提供了API接口和简单的用户界面&#xff0c;使得用户可以根据自己的需求灵活…