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.hqwc.cn/news/315667.html

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

相关文章

c语言:用指针输入两个数组|练习题

一、题目 利用指针&#xff0c;输入两个数组 如图&#xff1a; 二、代码截图【带注释】 三、源代码【带注释】 #include <stdio.h> int main() { int a[50]; int b[50]; int *paa,*pbb; //输入第一组数组 printf("请输入第一组5个数字&#xff1a;…

leetcode2975. 移除栅栏得到的正方形田地的最大面积

题目 有一个大型的 (m - 1) x (n - 1) 矩形田地&#xff0c;其两个对角分别是 (1, 1) 和 (m, n) &#xff0c;田地内部有一些水平栅栏和垂直栅栏&#xff0c;分别由数组 hFences 和 vFences 给出。 水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n)&#xff0c;垂直栅栏为…

【VMware】Windows安装MySQL及网络配置---图文并茂详细介绍

目录 目录 一 安装MySQL ① 连接虚拟机传输MySQL压缩包 ②解压MySQL压缩包 ③ my文件拷贝mysql安装根目录下 ④ 修改my文件 ⑤ 5.7版本安装MySQL 5.1 注册mysql服务 5.2 初始化 5.3 启动MySQL 5.4 登入MySQL 5.5 修改默认密码 ⑥ 8版本安装MySQL 6.1 解压压缩包 …

透视屏幕有哪些优点

透视屏幕的优点有以下几个方面&#xff1a; 互动性强&#xff1a;透视屏幕可以实现人机互动&#xff0c;观众可以通过触摸屏幕或使用其他交互设备与屏幕进行互动&#xff0c;增强了观众的参与感和体验感。 多样化的展示方式&#xff1a;透视屏幕可以采用多种展示方式&#xff…

探究Chrome仿真模拟设备时Click区域不准确问题

一、开发环境 windows版本&#xff1a; windows 10 Chrome 版本&#xff1a; 116.0.5845.141 二、问题描述 在Chrome DevTools中开启仿真设备&#xff08;微信开发者工具也有类似问题&#xff09;&#xff0c;如果页面元素有绑定click时&#xff0c;实际点击事件响应区域会…

『番外篇九』SwiftUI 实战:打造一款“五脏俱全”的网络图片显示 App(上)

概览 俗话说得好:“读书破万卷,下笔如有神”。不过如果把这句话放到编程的学习上可就不那么贴切了。 要想熟练掌握一门编程语言,光看书是绝对不够的。我们还需尽可能的多撸码、早撸码,撸到无路可退、海枯石烂才有可能一窥门径。 在本篇和续篇博文中,我们将和小伙伴们一起…

DevC++ easyx实现视口编辑--像素绘图板与贴图系统

到了最终成果阶段了&#xff0c;虽然中间有一些代码讲起来没有意思&#xff0c;纯靠debug,1-1解决贴图网格不重合问题&#xff0c;这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子&#xff0c;开发时间也从2023年的4月16到了6月2号&#xff0c;80小时基本…

设计模式之工厂设计模式【创造者模式】

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

我的128天之创作纪念日

目录 序 机缘 收获 日常 成就 憧憬 序 今天收到CSDN的一条消息推送&#xff0c;“初九之潜龙勿用 &#xff0c;不知不觉今天已经是你成为创作者的 第128天 啦。。。” 是啊&#xff0c;自今年8月24日开始写文章以来&#xff0c;时间过得好快&#xff0c;无论开心、痛苦…

【web】vue 播放后端(flask)发送的 mp3 文件

文章目录 演示后端&#xff08;flask&#xff09;前端&#xff08;vue3&#xff09;重要说明 演示 后端&#xff08;flask&#xff09; 后端返回的是 mp3 文件的 url&#xff0c;是可以直接在浏览器上打开后播放的处理跨域请求pip install flask-cors后端代码from flask impor…

【Java】云HIS源码 提供“一个中心多个医院”平台

云HIS可实现“云部署”&#xff0c;即可实现在云计算下的多种部署模式。系统采用SaaS服务模式的新驱动&#xff0c;功能设计充分合理&#xff0c;界面布局合理美观&#xff0c;每个用户可具有个性化工作台。 通过提供“一个中心多个医院”平台&#xff0c;为集团连锁化的医院和…

OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取

前言 标定模板&#xff08;Calibration Target&#xff09;在机器视觉、图像测量、摄影测量以及三维重建等应用中起着重要的作用。它被用于校正相机的畸变&#xff0c;确定物理尺寸和像素之间的换算关系&#xff0c;并建立相机成像的几何模型。通过使用相机拍摄带有固定间距图…