当前位置: 首页 > news >正文

JSP WEB开发(二) JavaBean

目录

JavaBean

JavaBean特征

JavaBean的标签

 JavaBean 的范围

标签

JavaBean

JavaBean 是一种符合某些命名和设计规范的 Java 类,它是一种可重用组件技术,主要用于封装数据,执行负责的计算任务,封装事务逻辑等。JavaBean 的实质是一种具有特定结构和行为的 Java 类,它遵循一定的规则和约定,使得它们易于编写、测试和使用。

JavaBean 必须满足以下几个条件:

  1. 必须有一个无参构造函数;
  2. 属性私有化,对外提供公共的 getter 和 setter 方法;
  3. 遵循驼峰命名法,例如:name -> getName(), setName()

简单示例

public class Student {private String name;private int age;public Student() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

封装了一个学生的姓名和年龄信息:在这个例子中,Student 类有两个属性:name 和 age,分别对应着姓名和年龄。这两个属性都是私有的,对外提供了对应的 getter 和 setter 方法,以供外部程序读取和设置这些属性的值。

JavaBean 还可以通过反射机制动态地访问和修改其属性,这使得它们在 Web 开发中非常有用。例如,你可以将一个 JavaBean 对象绑定到一个 HTML 表单,当用户提交表单时,自动将表单的数据填充到 JavaBean 中,然后将 JavaBean 发送到服务器进行处理。

JavaBean 还可以被序列化,这意味着它们可以被保存到磁盘或在网络上传输。这对于构建分布式应用程序非常有用。

JavaBean特征

JavaBean是一个public

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

有一个无参数的构造方法

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

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

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

JavaBean的标签

在 JSP 中,我们可以使用三个标签来操作 JavaBean:<jsp:useBean><jsp:setProperty><jsp:getProperty>

<jsp:useBean> 标签:这个标签用于在网页中创建一个 Bean 对象。它可以在页面中查找已经存在的 Bean 对象,如果没有找到则创建一个新的 Bean 对象。

<jsp:useBean id="myBean" scope="request" class="com.example.MyBean"/>

id 参数指定了 Bean 的名称,scope 参数指定了 Bean 的作用域,class 参数指定了 Bean 的类名。 

<jsp:setProperty> 标签:这个标签用于为 Bean 对象中的属性赋值。

<jsp:setProperty name="myBean" property="*" />

name 参数指定了 Bean 的名称,property 参数指定了要设置的属性名。星号 * 表示设置所有的属性。

<jsp:getProperty> 标签:这个标签用于获取 Bean 对象中属性的值。

<jsp:getProperty name="myBean" property="propertyName"/>

name 参数指定了 Bean 的名称,property 参数指定了要获取的属性名。

这三个标签的主要作用是在 JSP 页面中创建并使用 JavaBean 对象。

这三个标签主要作用是在JSP页面中创建并使用JavaBean对象,然后在“MVC”模式下的Web项目开发中,JavaBean主要是在Servlet中创建并使用。

// 在 Servlet 中创建并设置 JavaBean
MyBean myBean = new MyBean();
myBean.setName("Tom");
myBean.setAge(18);
request.setAttribute("myBean", myBean);// 在 JSP 页面中使用 JavaBean
<jsp:useBean id="myBean" scope="request" class="com.example.MyBean"/>
<jsp:setProperty name="myBean" property="*" />
<p>姓名:${myBean.name}</p>
<p>年龄:${myBean.age}</p>

我们在 Servlet 中创建了一个名为 myBean 的 JavaBean 对象,并设置了它的属性。然后我们将这个对象放在了请求中。在 JSP 页面中,我们使用 <jsp:useBean> 标签找到了这个对象,然后使用 <jsp:setProperty> 标签设置了它的属性,最后使用 EL 表达式 ${} 获取了它的属性值。

 JavaBean 的范围

JavaBean 的范围是指在哪个范围内有效,主要有四种:page、request、session 和 application。

  1. Page:表示当前页面,即该 JavaBean 只在当前页面有效,一旦离开当前页面,该 JavaBean 就会被销毁。
  2. Request:表示一次请求,即该 JavaBean 只在当前请求有效,一旦请求结束,该 JavaBean 就会被销毁。
  3. Session:表示一次会话,即该 JavaBean 只在当前会话有效,一旦会话结束,该 JavaBean 就会被销毁。
  4. Application:表示整个应用,即该 JavaBean 在整个应用中都有效,直到应用关闭才会被销毁。
<jsp:useBean id="logBean" scope="page" class="mypack.LogBean" />

建了一个名为 logBean 的 JavaBean,它的作用域是 page,也就是说,这个 JavaBean 只在当前页面有效。如果你想要让这个 JavaBean 在整个应用中都有效,你可以将 scope 设置为 application:你也可以将 scope 设置为 request 或者 session,这样 JavaBean 就会在请求或者会话中有效。

需要注意的是,不同的作用域会影响到 JavaBean 的生命周期。一般来说,如果 JavaBean 不需要在整个应用中都有效,那么最好将其作用域设置为最小的作用域,这样可以减少内存的消耗。

另外,JavaBean 的作用域也会影响它的可见性。例如,如果一个 JavaBean 的作用域是 page,那么只有当前页面才能看到它;如果它的作用域是 request,那么所有在同一个请求中的页面都可以看到它;如果它的作用域是 session,那么所有在同一会话中的页面都可以看到它;如果它的作用域是 application,那么所有页面都可以看到它。

标签

<jsp:useBean>

标签是用来创建一个 Bean 对象的

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

 这个标签创建了一个 package.class 类的一个对象,对象的名字是 beannamescope 参数指定了该对象的作用范围,可能的取值有四个:pagerequestsessionapplication

eg.

<jsp:useBean id="myBean" scope="request" class="bean.SampleBean" />

在这个例子中,我们创建了一个名为 myBean 的 Bean 对象,它的作用域是 request,也就是说,这个 Bean 对象只在当前请求有效。

 <jsp:setProperty>

标签用于设置一个Bean对象的属性。这个标签通常与 <jsp:useBean> 标签一起使用,后者用来创建或查找一个Bean实例

<jsp:setProperty name="beanName" property="propertyName"value="propertyValue" />
  • name: 指定要操作的Bean的名字。
  • property: 指定要为该Bean的哪个属性赋值。
  • value: 指定给属性赋的值。

 eg.假设我们有一个名为 "myBean" 的Bean,它有一个名为 "sample" 的属性。我们可以用以下方式来设置这个属性

<jsp:useBean id="myBean" class="com.example.MyBean" />
...
<jsp:setProperty name="myBean" property="sample" value="Hello, JSP!" />

首先通过 <jsp:useBean> 创建了一个名为 "myBean" 的 Bean 实例,并指定了它的类是 "com.example.MyBean"。然后,我们使用 <jsp:setProperty> 来设置 "myBean" 的 "sample" 属性的值为 "Hello, JSP!"

注意:<jsp:setProperty> 只能对简单类型的属性(如 String、int 等)进行赋值。如果需要为复杂类型(如自定义类)的属性赋值,则需要使用 <jsp:setProperty> 标签和 <jsp:getProperty> 标签配合使用。

<jsp:getProperty>

是 JavaServer Pages (JSP) 中的一个标签,用于从页面中获取已存在的 bean 对象的属性值,并将其显示到页面上。

<jsp:getProperty name="beanName" property="propertyName"/>
  • name: 指定要获取其属性值的 bean 名称。
  • property: 指定要获取的 bean 属性名称。

eg.假设我们有一个名为 "myBean" 的 bean,它有一个名为 "sample" 的属性。我们可以使用 <jsp:getProperty> 标签将此属性的值输出到页面上

<jsp:useBean id="myBean" class="com.example.MyBean" />
...
<jsp:getProperty name="myBean" property="sample"/>

通过 <jsp:useBean> 创建了一个名为 "myBean" 的 bean 实例,并指定了它的类是 "com.example.MyBean"。然后,我们使用 <jsp:getProperty> 将 "myBean" 的 "sample" 属性的值输出到页面上。

<jsp:setProperty>

可以用来设置一个Bean对象的属性,但这次是从传入参数(通常是来自表单提交的数据)中取值。这种情况下,param 属性被用来指定传入参数的名字。 

<jsp:setProperty name="beanName" property="propertyName"param="paramName" />

  • name: 指定要操作的Bean的名字。
  • property: 指定要为该Bean的哪个属性赋值。
  • param: 指定传入参数的名字。

eg. 假设我们有一个名为 "myBean" 的Bean,它有一个名为 "sample" 的属性。并且,我们在一个表单中有一个名为 "sample" 的输入字段。我们可以这样设置 "myBean" 的 "sample" 属性:

<form action="your_jsp_page.jsp"><input type="text" name="sample" /><input type="submit" value="Submit" />
</form>
...
<jsp:useBean id="myBean" class="com.example.MyBean" />
...
<jsp:setProperty name="myBean" property="sample" param="sample" />

在这个例子中,当用户提交表单后,"sample" 输入框中的值会被传递到 "your_jsp_page.jsp" 页面。然后,我们使用 <jsp:setProperty> 来设置 "myBean" 的 "sample" 属性的值为用户输入的值。

 <jsp:setProperty> 标签也可以一次性为多个Bean对象的属性赋值,而不需要一一列出每个属性。在这种情况下,property 属性被设为 "*" 表示匹配所有传入参数。

<jsp:setProperty name="beanName" property="*" />
  • name: 指定要操作的Bean的名字。

 eg,假设我们有一个名为 "myBean" 的Bean,它有多个属性。而且,在一个表单中有多个输入字段,它们的名字分别对应了 "myBean" 的各个属性名。我们可以这样设置 "myBean" 的属性:

<form action="your_jsp_page.jsp"><input type="text" name="name" /><input type="text" name="age" /><input type="text" name="email" /><input type="submit" value="Submit" />
</form>
...
<jsp:useBean id="myBean" class="com.example.MyBean" />
...
<jsp:setProperty name="myBean" property="*" />

在这个例子中,当用户提交表单后,"your_jsp_page.jsp" 页面会接收到 "name", "age", 和 "email" 这三个参数。然后,我们使用 <jsp:setProperty property="*"> 来设置 "myBean" 的相应属性的值为用户输入的值。

http://www.lryc.cn/news/393370.html

相关文章:

  • G2.【C语言】EasyX绘制颜色窗口
  • 异构计算技术与DTK异构开发套件
  • 数据结构之“栈”(全方位认识)
  • vue项目打包部署后 浏览器自动清除缓存问题(解决方法)
  • 解决vscode配置C++编译带有中文名称报错问题
  • A61 STM32_HAL库函数 之 TIM扩展驱动 -- C -- 所有函数的介绍及使用
  • 使用瀚高数据库开发管理工具进行数据的备份与恢复---国产瀚高数据库工作笔记008
  • css 选择器汇总
  • My Greedy Algorithm(贪心算法)之路(一)
  • Win11 Python3.10 安装pytorch3d
  • kotlin 中 string array 怎么表示
  • ffmpeg使用bmp编码器把bgr24编码为bmp图像
  • 基于YOLOv10+YOLOP+PYQT的可视化系统,实现多类别目标检测+可行驶区域分割+车道线分割【附代码】
  • 计算机网络之令牌总线
  • 策略模式的应用
  • 如何使用uer做多分类任务
  • 【HICE】转发服务器实验
  • MATLAB-分类CPO-RF-Adaboost冠豪猪优化器(CPO)优化RF随机森林结合Adaboost分类预测(二分类及多分类)
  • 绝区贰--及时优化降低 LLM 成本和延迟
  • JDBC【封装工具类、SQL注入问题】
  • Windows打开redis以及Springboot整合redis
  • MySQL使用LIKE索引是否失效的验证
  • 封装日历uniapp,只显示年月不显示日
  • golang线程池ants-实现架构
  • Mysql面试合集
  • Android Gradle 开发与应用 (五): 构建变体与自定义任务
  • Django学习第六天
  • docker部署mycat,连接上面一篇的一主二从mysql
  • VUE2拖拽组件:vue-draggable-resizable-gorkys
  • 容器:stack