JSP:Javabean

news2025/1/16 5:17:47

       起初,JavaBean的目的是为了将可以重复使用的代码进行打包,在传统的应用中,JavaBean主要用于实现一些可视化界面,如一个窗体、按钮、文本框等,这样的JavaBean称之可视化的JavaBean

     随着技术的不断发展与项目的需求,目前JavaBean主要用于实现一此业务逻辑或封装一些业务对象,由于这样的JavaBean并没有可视化的界面,所以又称之为非可视化的JavaBean

      可视化的JavaBean一般应用于Swing的程序中,在Java Web开发中并不会采用,而是使用非可视化的JavaBean,实现一此业务逻辑或封装一些业务对象,下面就通过实例来了解一下非可视化的JavaBean

JavaBean 有广义的和狭义的两种概念。

广义的  JavaBean  是指普通的  Java  类;

狭义的JavaBean 是指严格按照 JavaBean 规范编写的 Java 类

使用JavaBean的好处:

可以使得JSP页面变得清晰;

节省软件开发时间(可以直接使用已经测试和可信的已有组件,避免了重复开发);

降低系统维护的难度

为JSP应用带来了更多的可伸缩性,使系统变得健壮和灵活。

JavaBean的分类

可视的JavaBean:传统的JavaBean应用于可视化界面(如java图形界面中使用的按钮、文本框或列表框等)。

非可视化JavaBean:封装逻辑、封装数据,与JSP搭配使用。

JavaBean有以下特征(编写规范):

JavaBean是一个public

一定使用了package语句进行打包,并且声明的打包路径非sun公司声明使用的路径。

有一个无参数的构造方法

属性一般是私有的(即用private修饰),以保证数据的完整性和封装性

对属性值的获取有相应的getXxx()方法,并且此方法是公有的(即用public修饰)若要获取的属性为boolean类型则可以使用isXxx()方法

对属性值的设置有相应的setXxx()方法,并且此方法也是公有的(即用public修饰)

package bean;

public class SimpleBean{

  private String name;

  private int number;

  public SimpleBean(){   }

  public void setName(String name){

this.name = name;

}

public void setNumber(int number){

this.number = number;

}

public String getName(){

return name;

}

public int getNumber(){

return number;

}

}

编写JavaBean时,需要将其放入某个包中,这样才能被JSP页面访问到

保存JavaBeanJavaB

1:一个JavaBean编写完以后,需要将它编译成“.class”文件。

第2:并将此“.class”文件放到本次应用的WEB-INF\classes目录之下,并且需要根据Bean的包名,在classes下再建立相应的子目录。

例如package ch7.test     则该bean.class文件需要放置在“WEB-INF\classes\ch7\test”

使用JavaBean

1步:在 JSP页面中通过import指令引入bean

格式<%@ page import=”ch7.test.*”%>

2步:通过useBean标记来创建bean对象

格式

<jsp:useBean id=”bean_name” class=”创建bean的类” scope=”bean的有效范围“> </jsp:useBean>

 <jsp:useBean id=”bean_name” class=”创建bean的类” scope=”bean的有效范围” />

其中:1.创建bean的类要带有完整的包名,如ch7.test.Circle

2.scope表示bean的取值范围,可取page,session,requestapplication,代表不同的作用范围。

m JavaBean 的范围设为 page 时,表示这个 JavaBean 的生命周期只在一个 页面内 有效。
m JavaBean 的范围设为 request 时,这个 Bean 整个请求的范围内 都有效。
m JavaBean 的范围设为 session 时,表示 Bean 可以在当前 HTTP 会话的生命周期 内被所有页面访问。
m 设为 application 范围内的 Bean 生命周期是 最长的 ,从创建了这个 Bean 开始,就可以在任何使用相同 application JSP 文件中使用这个 Bean

3步,在jsp页面中,可以通过直接调用bean的方法来获取和修改bean的属性值,还可以通过jsp动作标记来获取和修改bean的属性。

直接调用bean的方法:girl.setradius(100)等。

动作标签方法:<jsp:getProperty><jsp:setProperty>

m 一个 JavaBean 编写完以后,需要将它编译成“ .class” 文件,并将此“ .class” 文件 ( 连同其目录 ) 放到本次应用的WEB-INF\classes目录之下。 JSP 中使用 JavaBean的标签
m JavaBean 的标签主要有三个:
m
m < jsp:useBean > 标签:在网页中创建一个 Bean 对象
m
m < jsp:setProperty > 标签:用于为 Bean 对象 中的属性赋值
m
m < jsp:getProperty > 标签:用于获取 Bean 对象中 属性的值
m < jsp:useBean > 标签用来创建一个 Bean 对象,其语法为:

    <jsp:useBean id=“beanname” class=“package.class” [scope=“page|request|session|application”] />

m 创建了“ package.class 类的一个对象,对象的名字是“ beanname
m scope 的值指定了 该对象 作用范围,可能的取值有 4 个: page request session application
m
m 例: < jsp:useBean id=" myBean " scope="request" class=" bean.SampleBean"/>
m < jsp:setProperty > 标签用来设置 Bean 对象的属性。其语法有多种:

(1). <jsp:setProperty name=“beanName

  property=“propertyName

  value=“propertyValue” />

  用来为bean的属性赋值

    其中name指出是在操作哪个beanproperty指出对该bean的哪个属性赋值,value用来指定给属性赋的值。

   例:<jsp:setProperty name="myBean"   property="sample" value="HelloJSP"/>

m (2). < jsp:setProperty name=“ beanName

        property=“propertyName

        param=“paramName” />

m form 表单中参数的名字和 Bean 中属性名不相同时, 这种用法表示将一个传入参数的值赋给 bean 的某个属性。
m 其中 name 指出是在操作哪个 bean property 指出对该 bean 的哪个属性赋值,而 param表示传入参数的名字。
m < jsp:getProperty > 标签用来获取 Bean 对象的属性值,并显示在页面上,其语法如下:

  <jsp:getProperty name=“beanname

  property=“propertyname” />

  name指出了要获取哪个bean的属性值,

   property指出要获取该bean的哪个属性值

例:<jsp:getProperty name="myBean" property="sample"/>

m < jsp:useBean id=“ beanname ” class=“ package.class ” [scope=“ page|request|session|application ”] />

    class的值要与bean的类名相同id作为对象名,可任取

m < jsp:getProperty name=“ beanname”property =“ propertyname ” />

  中name的值要与useBean中的id的值相同propertyname要与bean的属性名相同

m
m   < jsp:setProperty name=“ beanName

    property=“propertyName” value=“propertyValue” />中的name的值要与useBean中的id的值相同,propertyname要与bean的属性名相同。

m < jsp:setProperty name=“ beanName

    property=“propertyName”/>中,form表单中的参数名、 propertyNamebean中属性名三者要相同

m < jsp:setProperty name=“ beanName ”, property=“ propertyName ” param=“ paramName ”/> propertyName bean 中属性名要相同 , paramName 要和 form 表单中属性名相同
m

mJavaBean的范围
m 范围有四种: page request session application
m 例: < jsp:useBean id=" logBean " scope="page" class=“ mypack.LogBean " />
m JavaBean 的范围设为 page 时,表示这个 JavaBean 的生命周期只在一个页面内有效。
m JavaBean 的范围设为 request 时,这个 Bean 在整个请求的范围内都有效。
m JavaBean 的范围设为 session 时,表示 Bean 可以在当前 HTTP 会话的生命周期内被所有页面访问。
m 设为 application 范围内的 Bean 生命周期是最长的,从创建了这个 Bean 开始,就可以在任何使用相同 application JSP 文件中使用这个 Bean

7.2 JavaBean的应用

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

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

相关文章

MySQL 事务的底层原理和 MVCC(一)

在事务的实现机制上&#xff0c;MySQL 采用的是 WAL&#xff08;Write-ahead logging&#xff0c;预写式日志&#xff09;机制来实现的。 在使用 WAL 的系统中&#xff0c;所有的修改都先被写入到日志中&#xff0c;然后再被应用到系统中。通常包含 redo 和 undo 两部分信息。 …

react大文件上传

目录 大文件上传优点&#xff1a; 大文件上传缺点: 大文件上传原理&#xff1a; 为什么要用md5 实现流程&#xff1a; 部分代码1&#xff1a; 部分代码2&#xff1a;​ 大文件上传优点&#xff1a; 文件太大分片上传能加快上传速度,提高用户体验能断点续传 如果上次上传失败…

纳米软件电源芯片测试案例分享:测试方案、仪器选型、解决测试难点

一、背景介绍 成都某半导体芯片公司是一家专注于开发设计半导体电源芯片的高新技术企业&#xff0c;目前企业对于电源管理芯片研发阶段的测试&#xff0c;绝大部分采用人工手动测试&#xff0c;效率低&#xff0c;耗时长&#xff0c;数据管理储存难度大&#xff0c;无法快速地完…

依托数据、平台、知识增强等优势 夸克大模型大幅降低问答幻觉率

“大模型时代&#xff0c;夸克有巨大机会创造出革新性搜索产品。”11月22日&#xff0c;夸克大模型公布了其面向搜索、生产力工具和资产管理助手的大模型技术布局。数据显示&#xff0c;夸克千亿级参数大模型登顶C-Eval和CMMLU两大权威榜单&#xff0c;夸克百亿级参数大模型同样…

SpringMVC问题

文章目录 SpringMVC运行流程MVC的概念与请求在MVC中的执行路径&#xff0c;ResponsBody注解的用途SpringMVC启动流程 SpringMVC运行流程 • 客户端&#xff08;浏览器&#xff09;发送请求&#xff0c;直接请求到 DispatcherServlet 。 • DispatcherServlet 根据请求信息调用 …

minio安装使用-linux

下载地址&#xff1a;MinIO | Code and downloads to create high performance object storage 选择 minio server 可以直接下载二进制文件。 将下载的文件传输到服务器的指定文件夹下&#xff0c;如 /opt/minio。 然后在&#xff0c;命令行启动minio&#xff1a; /opt/mini…

【Python】重磅!这本30w人都在看的Python数据分析畅销书更新了!

Python 语言极具吸引力。自从 1991 年诞生以来&#xff0c;Python 如今已经成为最受欢迎的解释型编程语言。 【文末送书】今天推荐一本Python领域优质数据分析书籍&#xff0c;这本30w人都在看的书&#xff0c;值得入手。 目录 作译者简介主要变动导读视频购书链接文末送书 pan…

常见面试题-Redis 主从复制原理以及痛点

Redis 主从复制如何同步数据呢&#xff1f; 参考文章&#xff1a;https://blog.csdn.net/Seky_fei/article/details/106877329 https://zhuanlan.zhihu.com/p/55532249 https://cloud.tencent.com/developer/article/2063597 https://xie.infoq.cn/article/4cffee02a2a12c2…

【Linux】-进程间通信-共享内存(SystemV),详解接口函数以及原理(使用管道处理同步互斥机制)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Nuxt3使用

1.官网下载 npx nuxilatest init nuxt(有墙)&#xff0c;也可以到这个地方下载&#xff1a;git clone https://gitee.com/pmx600/nuxt3.git。 2.找到app.vue文件 将里面的代码修改为&#xff1a;<template><NuxtPage /></template>&#xff0c;NuxtPage 的…

【JavaScript】2.3 数据处理和函数式编程

文章目录 数组操作mapfilterreduce 函数式编程纯函数高阶函数闭包 总结 JavaScript提供了丰富的数据处理方法&#xff0c;特别是在数组操作和函数式编程方面。在这一章节中&#xff0c;我们将学习一些JavaScript中的数据处理技巧和函数式编程的基本概念。 数组操作 JavaScript…

替换的DLL用户电脑报错加载失败

编译后混淆加签名的dll 远程下载下来有个选项&#xff1a; 在某用户电脑上出现加载失败的报错 右键dll 属性里勾选解除锁定后 加载运行正常 跟用户电脑安全策略有关系 有的会出现 大部分不会

函数式编程-Stream流笔记-三更草堂

函数式编程-Stream流 1. 概述 1.1 为什么学&#xff1f; 能够看懂公司里的代码 大数量下处理集合效率高 代码可读性高 消灭嵌套地狱 //查询未成年作家的评分在70以上的书籍 由于数据中作家和书籍可能出现重复&#xff0c;需要进行去重 List<Book> bookList new Ar…

有用!2023汉字小达人市级比赛填空题专项训练,在线模拟题来了

只剩下一周了&#xff0c;2023年第十届汉字小达人市级比赛就要正式开始了。 敲黑板&#xff01;汉字小达人区级比赛时间为2023年11月30日&#xff08;星期四&#xff09;下午16&#xff1a;00-18&#xff1a;00&#xff0c;记得设置闹钟。提前和老师确认学校统一组织比赛&…

uni-app 使用uni.getLocation获取经纬度配合腾讯地图api获取当前地址

前言 最近在开发中需要根据经纬度获取当前位置信息&#xff0c;传递给后端&#xff0c;用来回显显示当前位置 查阅uni-app文档&#xff0c;发现uni.getLocation () 可以获取到经纬度&#xff0c;但是在小程序环境没有地址信息 思考怎么把经纬度换成地址&#xff0c;如果经纬度…

d3dx9_43.dll缺失怎么办?教你一分钟修复d3dx9_43.dll丢失问题

今天&#xff0c;与大家分享关于“d3dx9_43.dll丢失的5个解决方法”的主题。在我们的日常生活和工作中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;而d3dx9_43.dll丢失就是其中之一。那么&#xff0c;什么是d3dx9_43.dll呢&#xff1f;它为什么会丢失&#xff1f;又该…

pikachu靶场PHP反序列化漏洞

pikachu靶场PHP反序列化漏洞 源码分析 查看源代码 class S{var $test "pikachu";function __construct(){echo $this->test;} }// O:1:"S":1:{s:4:"test";s:29:"<script>alert(xss)</script>";} $html; if(isset($_PO…

深度学习之基于YoloV5车辆和行人目标检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介YOLOv5 简介YOLOv5 特点 车辆和行人目标检测系统 二、功能三、系统四. 总结 一项目简介 # 深度学习之基于 YOLOv5 车辆和行人目标检测系统介绍 深度学习在…

帝国cms开发一个泛知识类的小程序的历程记录

#帝国cms小程序# 要开发一个泛知识类的小程序&#xff0c;要解决以下几个问题。 1。知识内容的分类。 2。知识内容的内容展示。 3。知识内容的价格设置。 4。用户体系&#xff0c;为简化用户的操作&#xff0c;在用户进行下载的时候&#xff0c;请用户输入手机号&#xff…

二、类与对象(二)

8 this指针 8.1 this指针的引入 我们先来定义一个日期的类Date&#xff1a; #include <iostream> using namespace std; class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout << _year <&l…