jsp中对于<jsp:useBean>的使用

JavaBeans的解释:JavaBeans是java中的一种常见的类。最初的设计用于java的GUI,通过拖动组件就可以建立一个Button,为此需要Button这个类有一个无参构造方法,用于反射创建。为了方便调节Button的背景颜色,宽高等属性,需要统一的一套获取属性和设置属性的方法,即规范中的getXxx()和setXxx()。这样就能用反射获取Button的各项属性,然后在通过对应的get和set方法进行设置。并且在完成GUI的设计后,需要能够在重启IDE的情况下打开原来的设计,所以还需要能过够序列化。为了安全,需要将属性私有。Button要能点击出现事件,所以还要能绑定事件。属性、方法、事件,这样就成了初代的JavaBean,作为一个组件存在,方便复用。通过调用不同的组件就可以快速拼装出一个新产品。当然这是可视化的JavaBean,本篇谈论的是另一类不可视化的JavaBean在jsp中的使用。在jsp中的JavaBean,有以下要求,要区分和可视化JavaBean的不同,不需要事件和序列化。(另个人感觉VO,POJO,EJB都是JavaBean在不同情况下的表现形式)

1、类是public

2、提供一个默认的无参构造函数

3、通过一系列的getter或setter方法来设置属性

 <jsp:useBean>:jsp中使用此标签有四个属性,id指定Bean的对象名。class指定Bean的完成包名,说明了类型。type指定将引用该对象变量的类型。beanName通过java.beans.Beans的instantiate()方法指定Bean的名字。如下使用

<jsp:useBean id="user" class="com.shixun.User"/>

这样就new了一个User类型的对象,对象名为user。在page属性中。

<jsp:setProperty>:jsp中的这个标签的使用较为复杂,本篇主要介绍的就是这个。首先该标签有两种用法,1、在<jsp:useBean>标签外。2、在<jsp:useBean>标签内。

<jsp:useBean id="user" class="com.shixun.User"/>    //标签已经关闭
<jsp:setProperty property="*" name="user"/>     //在useBean标签外

这种在标签外的设值方式,jsp:setProperty一定会执行。放在内部的方式

<jsp:useBean id="user" class="com.shixun.User">
    <jsp:setProperty property="*" name="user"/>
</jsp:useBean>

这种设值方式,只有新建Bean实例时才会执行,如果时使用现有实例则不会执行jsp:setProperty。

jsp:setProperty一共有四个属性,name指定设置的是那个对象,对应着useBean中的id值。property属性对应对象中的设置的是哪个属性。value用来指定Bean的值。添加的字符串数据会同过标准的valueOf方法转换成对应的基本类型的封装类型。(java中默认的类型转换包括boolean, byte, short, int, long, float, double, 还有java.lang.String, java.awt.Color, java.awt.Font。这些就是属性编辑器)最后一个属性为param不可与value同时使用,只能选其一。它制定了用那个请求参数作为Bean属性的值。如果当前请求没有参数,则什么也不做。这时可以将Bean中设置默认值,当有参数的时候再进行属性值的更新。

jsp:setProperty的四种使用方法。使用不出错的前提是property中的参数不能出错。

第一种:

<jsp:setProperty property="*" name="user"/>    <!-- 注意在useBean创建之后,如果没有找到对应的属性则设为null -->

这种方法的使用较为简单,赋值的方式是,将request中的参数名称与Bean中属性名匹配,然后赋值,按照上文的类型转换处理。注意这里的参数是request.getParameter()中取得的,并不是getAttribute()中的。在第一个页面中设置request的属性,然后利用<jsp:forward page="vertify.jsp"></jsp:forward>到第二个页面,观察Bean是否装配,即可验证。

第二种:

<jsp:setProperty property="id" name="user"/>
<jsp:setProperty property="psss" name="user"/>  <!-- request中没有psss,报错 -->

这种方式是第一种方式的定制版本。需要给Bean中的哪个属性赋值就setProperty其中的属性。操作的是request中的参数。

第三种:

<jsp:setProperty property="id" name="user" value="123"/>
<jsp:setProperty property="atime" name="user" value="2020-10-10"/> <!-- 笔者自定义了Date的类型转换 -->

这种其实就是简单的直接赋值,value会通过上文中的属性编辑器转换为对应的类型。

第四种:

<jsp:setProperty property="id" name="user" param="pwd"/>
<jsp:setProperty property="atime" name="user" param="123"/><!-- param中的参数不存在则,会给Bean中的atime属性赋值为null -->

这种比较方便了,参数param指定的是request中的参数,property指定的是Bean中的参数,这样可以不需要将request和Bean中的参数名对应,但是像这样就相当于手动调节了。

转载于:https://www.cnblogs.com/ant-xu/p/11349918.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值