Javaweb07-JavaBean技术和Jsp开发模式

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

if/case条件测试语句

一 条件测试 1.1返回码 $? $? 返回码 用来哦按段命令或者脚本是否执行成功 0 true为真就是成功成立 非0 false 失败或者异常 1.2 test 命令 可以进行条件测试 然后根据返回值来判断条件是否成立 -e &#xff1a;exist 测试目录或者目录是否存在 -d : director…

华为北向网管NCE开发教程8(性能数据)

1接口说明 通过北向网管获取性能数据的接口&#xff0c;主要用PerformanceManagementMgr_I。 获取当前&#xff1a;getAllCurrentPMData 获取历史&#xff1a;getHistoryPMData Common_IHolder commonHolder new Common_IHolder(); emsSession.getManager("Performance…

itsm服务管理工具有哪些?

itsm&#xff08;IT服务管理&#xff09;是现代企业管理IT服务的关键框架&#xff0c;可帮助组织提供高效的IT服务&#xff0c;并确保业务持续运行。使用itsm服务管理工具是实现这一目标的关键&#xff0c;下面我们来看看itsm服务管理工具有哪些&#xff1a; 1. ServiceDesk Pl…

MyBatis中获取Mysql数据库插入记录的主键值

在MyBatis中&#xff0c;你可以使用多种方式获取插入记录的主键值。以下是常见的几种方法&#xff1a; 1. 使用 useGeneratedKeys 和 keyProperty 这是MyBatis提供的最直接的方法。在你的Mapper XML文件中&#xff0c;使用 useGeneratedKeys 和 keyProperty 来指定MyBatis在插…

为啥找对象千万别找大厂男,还好我不是大厂的。。

网上看到一大厂女员工发文说&#xff1a;找对象千万别找大厂男&#xff0c;理由说了一大堆&#xff0c;无非就是大厂男为了逃避带娃&#xff0c;以加班为由宁愿在工位上玩游戏也不愿回家。当然这种观点有的人赞同有的人反对。 网友精彩评论&#xff1a; --------------下面是今…

通过visualVM远程监控java进程

1. VisualVM 简介及功能介绍 VisualVM 是一个功能强大的工具&#xff0c;用于监视、分析、配置和调试 Java 应用程序的运行状态。它提供了丰富的功能来帮助开发者和运维人员理解和优化 Java 应用程序的性能。VisualVM 集成了多种 JDK 工具&#xff0c;并通过直观的 GUI 界面提供…

Hi3861 OpenHarmony嵌入式应用入门--ADC

本篇讲解使用ADC进行采样&#xff0c;并使用API将采样值转为电压。 电路原理图 通过hi-12f_v1.1.2-规格书-20211202.pdf 找到IO9对应的ADC通道 GPIO API API名称 说明 hi_u32 hi_gpio_init(hi_void); GPIO模块初始化 hi_u32 hi_gpio_set_dir(hi_gpio_idx id, hi_gpio_dir …

论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning

论文阅读笔记&#xff1a;Towards Higher Ranks via Adversarial Weight Pruning 1 背景2 创新点3 方法4 模块4.1 问题表述4.2 分析高稀疏度下的权重剪枝4.3 通过SVD进行低秩逼近4.4 保持秩的对抗优化4.5 渐进式剪枝框架 5 效果5.1 和SOTA方法对比5.2 消融实验5.3 开销分析 6 结…

如何打开mobi文件?两个步骤解决

打开MOBI格式的电子书&#xff0c;其实相当简便。NeatReader作为一个兼容多格式多系统的电子书阅读器&#xff0c;对MOBI格式的支持自然不在话下。下面是使用NeatReader阅读MOBI文件的步骤&#xff1a; 第一步&#xff1a;下载并安装NeatReader&#xff1a; 首先&#xff0c;你…

彩虹PLM:引领产品生命周期管理的创新潮流

彩虹PLM&#xff1a;引领产品生命周期管理的创新潮流 在当今快速发展的商业环境中&#xff0c;产品生命周期管理&#xff08;PLM&#xff09;成为了企业提升竞争力、实现持续创新的关键。彩虹PLM作为业界领先的PLM解决方案&#xff0c;以其卓越的功能和创新的理念&#xff0c;引…

Python武器库开发-武器库篇之链接提取器(六十)

Python武器库开发-武器库篇之链接提取器&#xff08;六十&#xff09; 链接提取器介绍 链接提取器&#xff08;Link Extractor&#xff09;是一种用于从网页中提取链接的工具。它可以从网页的源代码中识别出所有的链接&#xff0c;并将这些链接提取出来。链接提取器可以用于各…

如何设置透明加密保护系统呢

设置透明加密保护系统通常涉及多个步骤&#xff0c;以下是一个基于参考文章信息和一般实践经验的清晰设置流程&#xff0c;包括分点表示和归纳&#xff1a; www.weaem.com 1. 需求分析 确定加密目标&#xff1a;明确需要加密的文件类型、存储位置和使用环境。评估安全风险&…

SQL Server 触发器

触发器是一种存储数据库过程&#xff0c;当数据库中发生特定事件&#xff08;如插入、更新或删除操作&#xff09;时&#xff0c;会自动调用该触发器。审核SQL Server实例的方法有很多&#xff0c;其中一种方法是使用审核触发器&#xff0c;触发器在SQL Server数据库中扮演着关…

AI发展面临的问题? —— AI对创造的重新定义

一、AI的问题描述 AI与数据安全问题&#xff1a;随着AI技术的发展和应用&#xff0c;数据安全问题日益突出。AI模型训练依赖于大量数据&#xff0c;而这些数据中可能包含个人隐私、商业秘密等敏感信息。如果数据在采集、存储、使用过程中处理不当&#xff0c;可能导致数据泄露或…

Vulnhub——AI: WEB: 2

渗透复现 &#xff08;1&#xff09;平台框架存在目录穿越漏洞&#xff0c;利用该漏洞读取敏感信息 &#xff08;2&#xff09;Ping功能点绕过&#xff0c;进行命令执行操作&#xff0c;反弹shell无果后&#xff0c;利用目录穿越漏洞遍历敏感API&#xff0c;读取到用户SSH登录…

自动统计一个学科领域中总共有多少研究者

问题&#xff1a;怎么知道一个学科领域中总共有多少研究者&#xff1f; 方法&#xff1a;学者的谷歌学术主页中会有对应的领域&#xff0c;以进化计算为例&#xff0c;进入一位进化计算学者的谷歌主页&#xff0c;然后进入标签“Evolutionary Computation”&#xff0c;只要知…

JavaScript日期处理:常见问题与解决方案

JavaScript中的日期处理是一个常见但有时又令人头疼的任务。在这篇博客文章中&#xff0c;我将分享一些在JavaScript中处理日期时遇到的常见问题以及它们的解决方法。 日期格式化 1.1 日期格式&#xff1a;yyyy-MM-dd formatDate() {var value new Date()var year value.g…

【系统架构设计师】二、操作系统知识(操作系统概述|进程管理)

目录 一、操作系统概述 1.1 操作系统定义 1.2 操作系统的功能 1.3 操作系统的分类 1.4 嵌入式操作系统主要特点 二、进程管理 2.1 进程的组成与状态 2.2 前趋图 2.3 进程资源图 2.4 进程调度 2.5进程调度算法 2.6 死锁 2.7 进程与线程 2.7.1 进程 2.7.2 线程 2…

RabbitMQ 相关概念

引言 什么是消息中间件 消息是指在应用间传送的数据&#xff0c;包含文本字符串、JSON等。消息队列中间件&#xff08;MQ&#xff09;指利用高效可靠的消息传递机制进行平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型…

Part 4.4 树形动态规划

树形动态规划&#xff0c;即在树上进行的动态规划。 因为树的递归性质&#xff0c;树形动态规划一般都是递归求解的。 没有上司的舞会 题目描述 某大学有 n n n 个职员&#xff0c;编号为 1 … n 1\ldots n 1…n。 他们之间有从属关系&#xff0c;也就是说他们的关系就像…