JavaBean

学习目的与要求

熟练掌握<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>等JSP的操作指令。

本章主要内容

  • 编写JavaBean
  • 在JSP中使用JavaBean 

一个JSP页面通过使用HTML标记为用户显示数据(静态部分),页面中变量的声明、程序片以及表达式为动态部分,对数据进行处理。如果Java程序片和HTML标记大量掺杂在一起使用,将不利于JSP页面的扩展和维护。JSP和JavaBean技术的结合不仅可以实现数据的表示和处理分离,而且可以提高JSP程序代码重用的程度,是JSP编程中常用的技术。

1.编写JavaBean 

JavaBean是一个可重复使用的软件组件,是遵循一定标准、用Java语言编写的一个类,该类的一个实例称为一个JavaBea,简称bean。JavaBean具有可重用、升级方便、不依赖与平台的特点。JavaBean又可以分为业务bean和数据bean。

业务bean:用于封装业务逻辑、数据库操作等;

数据bean:用于封装数据。

编写一个JavaBean就是编写一个Java类(该类必须带有包名),这个类创建的一个对像为一个bean,为了让JSP引擎(比如Tomcat)知道这个bean的属性和方法,JavaBean类必须遵守以下规则:              

①如果类的成员变量的名字是name,那么为了获取或更改成员变量的值,在类中必须提供以下两个方法。

  • getName():用来获取属性name。
  • setName():用来修改属性name。

②对于boolean类型的成员变量,允许使用“is”代替上面的“get”和“set”。

③类中方法的访问权限必须是public。

④如果有构造方法,必须提供一个五参数的构造方法。

【例1】创建bean的源文件Rectangle.java(在包com.bean中)。该bean的作用是封装矩形的长宽高,并计算矩形的面积和周长。

Rectangle.java
package com.bean Rectangle{private double length;private double width;public Rectangle(){length = 20;width = 10;}public double getLength(){return length;}public void setLength(double length){this.length=length;}public getWidth(){return width;}public void setWidth(double width){this.width=width;}public double computerArea(){return length*width;}public double computerLength(){return (length+width)*2;}
}

2.在JSP中使用JavaBean

在JSP页面中使用bean时,首先使用page指令的import属性导入创建bean的类,例如

<%@ page import="com.bean.*"%>

2.1 动作标记useBean

useBean动作标记用来查找或者实例化一个JavaBean。useBean标记的格式如下:

<jsp:useBean id="bean的名字" class="创建bean的类" scope="bean的有效范围"/>
或
<jsp:useBean id="bean的名字" type="创建bean的类" scope="bean的有效范围" />
例如:
<jsp:useBean id ="Rectangle" class="com.bean.Rectangle" scope="page" />

【例2】在JSP页面中使用useBean标记获得一个bean,负责创建bean的类是例5-1中的Rectangle类,bean的名字是rectangle,rectangle的scope取值为page。

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>example5_2.jsp</title>
</head>
<body>
<jsp:useBean id="rectangle" class="com.bean.Rectangle" scope="page"/>
<p>矩形的长是:<%=rectangle.getLength()%>
<p>矩形的宽是:<%=rectangle.getWidth()%>
<p>矩形的面积是:<%=rectangle.computerArea()%>
<p>矩形的周长是:<%=rectangle.computerLength()%>
</body>
</html>

2.2动作标记getProperty

      JavaBean的实质是遵守一定规范的类所创建的对象,用户可以通过两种方式获取bean的属性:

①在Java程序片或表达式中使用bean对象调用getXxx()方法获取bean的属性值,比如例5-2中的语句<%%=rectangle.getWidth()%>;

②先通过<jsp:useBean>标记获得一个bean,再通过<jsp:getProperty>标记获取bean的属性值。

      使用getProperty动作标记可以获得bean的属性值,注意,在使用该动作标记之前必须事先使用useBean动作标记获得一个相应的bean。getProperty动作标记的语法格式如下:

<jsp:getProperty name="bean的名字" property="bean的属性"/>
或
<jsp:getProperty name="bean的名字" property="bean的属性">
</jsp:getProperty>

2.3动作标记setProperty

      除了可以在Java程序片中使用bean对象调用setXxx()方法修改bean的属性值外,还可以使用setProperty动作标记修改bean的属性值。注意,在使用该动作标记会签必须事先使用useBean动作标记获得一个相应的bean。使用setProperty动作标记进行bean属性值的设置有以下三种方式

①用表达式或字符串设置bean的属性

(1)用表达式设置bean的属性:

<jsp:setProperty name="bean的名字" property="bean的属性" value="<%=expression%>"/>

(2)用字符串设置bean的属性:

<jsp:setProperty name="bean的名字" property="bean的属性" value="字符串"/>

      在用表达式修改bean属性值时,表达式值的类型必须与bean的属性类型一致。在用字符串修改bean属性值时,字符串会被转换为bean的属性类型,不能成功转换的可能会抛出NumberFormatException异常。

② 通过HTTP表单参数值设置bean的属性

<jsp:setProperty name="bean的名字" property="*"/>

这时,表单参数的名字必须与bean的名字相同,服务器会根据名字自动匹配,类型会自动转换。 

③任意指定请求参数设置bean的属性

任意指定请求参数设置bean的属性:

<jsp:setProperty name="bean的名字" property="属性名" param="参数名"/>

用户可以根据自己的需要任意选择传递的参数,请求参数名无须与bean属性名相同。

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

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

相关文章

利用码云(Gitee)与IDEA轻松管理远程代码库的完整指南

目录 前言1 码云简介2 码云上创建远程库3 IDEA集成码云的步骤3.1 安装Gitee插件并建立连接3.2 项目分享到码云3.3 拉取代码 4 码云复制Github4.1 迁移github项目到码云4.2 代码同步 结语 前言 在软件开发领域&#xff0c;代码托管平台是开发者不可或缺的利器。Github作为全球最…

Qt实现文本编辑器(二)

上一章节讲述了如何制作文本编辑页面&#xff0c;以及应该有哪些功能需要实现&#xff0c;只是做了展示效果&#xff0c;实际的点击事件并没有处理。今天来具体讲解下是如何实现菜单栏以及工具栏上对应的需求吧~ 功能实现 功能&#xff1a; 1、动作消息触发 2、具体功能&am…

常见安全概念澄清,Java小白入门(八)

认证 认证 (Identification) 是验证当前用户的身份。 常见的认证技术&#xff1a; 身份证用户名和密码用户手机&#xff1a;手机短信、手机二维码扫描、手势密码用户的电子邮箱用户的生物学特征&#xff1a;指纹、语音、眼睛虹膜 授权 授权 (Authorization) 指赋予用户系统…

Pointnet++改进:更换不同的激活函数,打造更优性能

简介&#xff1a; 1.该教程提供大量的首发改进的方式&#xff0c;降低上手难度&#xff0c;多种结构改进&#xff0c;助力寻找创新点&#xff01; 2.本篇文章对Pointnet进行激活函数的改进&#xff0c;助力解决RELU激活函数缺陷。 3.专栏持续更新&#xff0c;紧随最新的研究内容…

前端Web系统架构设计

文章目录 1.目录结构定义2. 路由封装2.1 API路由定义2.2 组件路由定义 3. Axios请求开发4. 环境变量封装5. storage模块封装(sessionStorage, localStorage)6. 公共函数封装(日期,金额,权限..)7. 通用交互定义(删除二次确认,类别,面包屑...)8. 接口全貌概览 1.目录结构定义 2. …

LeetCode刷题--- 三步问题

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动…

【Matlab】PSO-BP 基于粒子群算法优化BP神经网络的数据时序预测(附代码)

资源下载&#xff1a; https://download.csdn.net/download/vvoennvv/88689096 一&#xff0c;概述 PSO-BP算法是一种结合了粒子群算法&#xff08;PSO&#xff09;和BP神经网络的方法&#xff0c;用于数据时序预测。下面是PSO-BP算法的原理和过程&#xff1a; 1. 数据准备&…

继承和多态

全局变量&#xff0c;int monster 10000:定义英雄类hero&#xff0c;受保护的属性string name&#xff0c;int hp,int attck;公有的无参构造&#xff0c;有参构造&#xff0c;虚成员函数 void Ak(blood-0)&#xff0c;法师类继承自英雄类&#xff0c;私有属性 int p_atk50;重写…

Github 2024-01-03 开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-01-03统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目3TypeScript项目3Jupyter Notebook项目1Dart项目1C项目1Rust项目1 系统设计指南 创建周期&#x…

计算机毕业设计 SpringBoot的停车场管理系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

堆排序 Heapsort

堆排序&#xff08;Heapsort&#xff09;是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子结点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点。堆排序可以说是一种利用堆的概…

简易机器学习笔记(四)初识卷积神经网络

前言 第一次写卷积神经网络&#xff0c;也是照着paddlepaddle的官方文档抄&#xff0c;这里简单讲解一下心得。 首先我们要知道之前写的那些东西都是什么&#xff0c;之前写的我们称之为简单神经网络&#xff0c;也就是简单一层连接输出和输出&#xff0c;通过前向计算和逆向…

Simple Facebook Sign-In

简单的Facebook登录为Android、iOS、Windows、Mac、通用Windows平台(UWP)和Unity制作的WebGL应用程序提供了基于OAuth 2.0的Facebook登录。 优点: ● 跨平台游戏和应用程序的跨平台用户身份验证 ● 无插件,无第三方库,无依赖● 对建筑规模没有影响 ● 客户端-服务器应…

solidity显示以太坊美元价格

看过以太坊白皮书的都知道&#xff0c;以太坊比较比特币而言所提升的地方中&#xff0c;我认为最重要的一点就是能够访问外部的数据&#xff0c;这一点在赌博、金融领域应用会很广泛&#xff0c;但是区块链是一个确定的系统&#xff0c;包括里面的所有数值包括交易ID等都是确定…

OS 7--DNS配置+Apache发布网站

环境准备 centOS 7 1.配置DNS 1.1 域名为lianxi.com 1.2 为WWW服务器、FTP服务器、NEWS服务器做域名解析 1)安装DNS yum -y install bind bind-utils (如果安装不上&#xff0c;就把磁盘在重洗挂载一下&#xff09; 2&#xff09;修改DNS配置文件 vim /etc/resolv.conf…

车载 Android之 核心服务 - CarPropertyService 解析

重要类的源码文件名及位置&#xff1a; CarPropertyManager.java packages/services/Car/car-lib/src/android/car/hardware/property/ CarPropertyService.java packages/services/Car/service/src/com/android/car/ 类的介绍&#xff1a; CarPropertyManager&#xff1a…

航芯ACM32G103开发板评测 02-GPIO输入输出

航芯ACM32G103开发板评测 02-GPIO输入输出 航芯ACM32G103开发板评测 GPIO输入输出应用 软硬件平台 ACM32G103 Board开发板 MDK-ARM Keil GPIO输出典型应用——点灯 GPIO输入典型应用——按键 GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#x…

[Flutter]WindowsOS中相关配置

Flutter项目在Windows平台上如何配置 目录 Flutter项目在Windows平台上如何配置 写在开头 正文 1、OS准备 2、编译环境准备 ① 下载AndroidStudio ② 下载dart ③ 下载flutter ④ 下载并安装VS ⑤ 在AS中配置dart和flutter 3、配置中遇到的问题 写在结尾 写在开头…

C++ stack使用、模拟实现、OJ题

目录 一、介绍 二、常用函数 三、模拟实现 四、OJ练习题 1、最小栈 2、栈的压入、弹出序列 3、逆波兰表达式(后缀转中缀) 4、中缀转后缀思路 5、用栈实现队列 一、介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

自动驾驶论文

文章目录 一、Convolutional Social Pooling for Vehicle Trajectory Prediction二、QCNet&#xff1a;Query-Centric Trajectory Prediction三、VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation 一、Convolutional Social Pooling for Vehicl…