java bean 动作标签_<jsp:javabean>动作标签实例

动作标签实例

之后补齐基础知识

scope属性

该属性指定了所创建Bean实例的存取范围,省略该属性时的值为page.标识被执行时,首先会在scope属性指定的范围来查找指定的Bean实例,如果该实例已经存在,则引用这个Bean,否则重新创建,并将其存储在scope属性指定的范围内。

scope属性可选值如下

page:(当前页面范围)

制定了所创建的Bean实例只能够在当前的JSP文件中使用,包括在通过include指令静态包含(实际上是一个页面)的页面中有效

request: (请求范围getAttribute("id属性值") 方法获取创建的Bean实例。一个请求的生命周期是 从客户端向服务器发出一个请求到服务器响应这个请求给用户后 结束,所以请求结束后,存储在其中的Bean的实例也就是失效了。

session:(一个用户,多个页面)

指定了所创建的Bean实例的有效范围为session.

session是当用户访问Web应用时,服务器为用户创建的一个对象,服务器通过session的ID值 来区分其他的用户。针对某一个用户而言, 在该范围中的对象可被多个页面共享。(购物车应用)

可以使用session对象的getAttribute("id属性值")方法获取存储在session中的Bean实例,也可以使用session对象的getValue("id属性值")来获取,但该方法不建议使用。

application:(多个用户,多个页面)

该值指定了所创建的Bean实例的有效范围从服务器启动开始到服务器关闭结束。 application对象是在服务器启动时创建的,它被多个用户共享。所以访问该application对象的所有用户共享存储于该对象中的Bean实例。 (浏览人数)

可以使用application对象的getAttribute(“id属性值”)方法获取在application中的Bean实例

先放上本次实例

本次实例主要解决了 :

如果在session范围和request范围都存在名为car的ShopCar实例,而存储在session范围内的ShopCar实例是通过标识创建的。那么代码中的标识会为哪个范围中的ShopCar实例赋值呢?

实例工程架构如下

e754f377419fef3dbadab94bb70c4d94.png

存在一个javaBean,关键代码如下:

package com.bean;

public class ShopCar {

private String name;

private String maker;

public ShopCar() {

name = "noname";

maker="noplace";

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getMaker() {

return maker;

}

public void setMaker(String maker) {

this.maker = maker;

}

}

JavaBean:简单说,它就是一个Java类,这个类可以重复地使用。

它必须遵循以下规定:

是一个公有类。

具有一个公有的不带参数构造方法。

每个属性必须定义一组getXXX()和setXXX()方法, 以便读取和存储其属性值。

符合上述规定的JavaBean,将拥有:事件处理、自省机制、永续储存等特性。

参照博主

新建javabean1.jsp 文件:

pageEncoding="UTF-8"%>

Insert title here

第一种方法实例化javaBean

ShopCar car = new ShopCar(); //创建一个javaBean ShopCar的实例

session.setAttribute("car",car); //将创建的JavaBean实例存在session范围内

%>

第二种方法实例化javaBean

两种方法作用一致 --%>

--%>

ShopCar r_car = new ShopCar();

request.setAttribute("car", r_car); //作用域范围是request

%>

Request范围内:

车名:

地址:

Session范围内:

车名:

地址:

id指的是实例化的对象,class就是Java类。这一行相当于

ShopCar car = new ShopCar();

name是对象,property是属性,value是属性的值。

实验结果:

8e55eb1e97267ab5b2033175eef6291d.png

从结果得知:

标识被执行时,会按照page、request、session和application的顺序来查找由name属性指定的Bean实例,并且返回第一个被找到的实例;若任何范围内不存在这个Bean实例,就会抛出异常

客户端和服务器的一次通信就是一次请求(发送请求或得到相应) ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值