Jsp基础总结之二(jsp动作)

1.3 Jsp动作

 

<jsp:param></jsp:param>

 

<jsp:param>标识可用来传递参数,被传递的参数以“参数名=值”的形式加入到了请求中。该标识不能单独存在,通常情况下与<jsp:include>、<jsp:forward>和<jsp:plugin>一起使用。
该标识的使用格式如下:
<jsp:param name="参数名" value="值"/>
参数说明:
name属性:该属性指定了参数的名称,它不支持任何的表达式,其值必须为字符串型。下面的用法是错误的:
<% String arg="username";%>
<jsp:forward page="/success.jsp">
    <jsp:param name="<%=arg%>" value="yxq"/>
</jsp:forward>
将会抛出下面的异常:
The name attribute of the jsp:param standard action does not accept any expressions
value属性:该属性指定了参数的值,它可以是一个代表了具体值的表达式。下面的用法是正确的:
<% String sex="MAN";%>
<jsp:forward page="/success.jsp">
    <jsp:param name="usersex" value="<%=sex%>"/>
</jsp:forward>
如果向目标页面中传递多个参数,可应用多个<jsp:param>标识来实现,如下面的用法:
<% String arg1="A"%>
<% String arg2="B"%>
<jsp:forward page="/result.jsp">
  <jsp:param name="select1" value="<%=arg1%>"/>
  <jsp:param name="select2" value="<%=arg2%>"/>
</jsp:forward>
在目标页面中可通过调用request对象的getParameter()方法获取传递的参数。

 

<jsp:useBean></jsp:useBean>

<jsp:useBean> 指的是创建一个Bean实例并指定它的名字和作用范围.

例如:<jsp:useBean id="test" scope="page" class="test.TestBean"/>

id="beanInstanceName"

在你所定义的范围中确认Bean的变量,你能在后面的程序中使用此变量名来分辨不同的Bean

这个变量名对大小写敏感,必须符合你所使用的脚本语言的规定,在Java Programming Language中,这个规定在Java Language 规范已经写明。如果这个Bean已经在别的<jsp:useBean>中创建,那么这个id的值必须与原来的那个id值一致.

scope="page | request | session | application"

Bean存在的范围以及id变量名的有效范围。缺省值是page,以下是详细说明:

page - 你能在包含<jsp:useBean>元素的JSP文件以及此文件中的所有静态包含文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。

request - 你在任何执行相同请求的Jsp文件中使用Bean,直到页面执行完毕向客户端发回响应或转到另一个文件为止。你能够使用Request对象访问Bean,比如request.getAttribute(beanInstanceName)

session - 从创建Bean开始,你就能在任何使用相同session的Jsp文件中使用Bean.这个Bean存在于整个Session生存周期内,任何在分享此Session的Jsp文件都能使用同一Bean.注意在你创建Bean的Jsp文件中<% @ page %>指令中必须指定session=true

application - 从创建Bean开始,你就能在任何使用相同application的Jsp文件中使用Bean.这个Bean存在于整个application生存周期内,任何在分享此application的Jsp文件都能使用同一Bean.

class="package.class"

使用new关键字以及class构造器从一个class中示例一个bean.这个class不能是抽象的,必须有一个公用的,没有参数的构造器.这个package的名字区别大小写。

type="package.class"

如果这个Bean已经在指定的范围中存在,那么写这个Bean一个新的数据库类型 。如果你没有使用class或beanName指定type,Bean将不会被示例.package和class的名字,区分大小写.

beanName="{package.class | <%= expression %>}" type="package.class"

使用java.beans.Beans.instantiate方法来从一个class或连续模版中示例一个Bean,同时指定Bean的类型。 beanName可以是package和class也可以是表达式,它的值会传给Beans.instantiate.tupe的值可以和Bean相同。

package 和 class 名字区分大小写.

 

 <jsp:setProperty />

jsp:setProperty用来设置已经实例化的Bean对象的属性,有两种用法。

首先,你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty,如下所示:
<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName"
property="someProperty" ... />

 


此时,不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会执行。

 

第二种用法是把jsp:setProperty放入jsp:useBean元素的内部,如下所示:
<jsp:useBean id="myName" ... >
...
<jsp:setProperty name="myName"
property="someProperty" ... />
</jsp:useBean>
此时,jsp:setProperty只有在新建Bean实例时才会执行,如果是使用现有实例则不执行

 

jsp:setProperty动作有下面四个属性:
name name属性是必需的。它表示要设置属性的是哪个Bean。
property property属性是必需的。它表示要设置哪个属性。

有一个特殊用法:如果property的值是“*”,表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
value value属性是可选的。该属性用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如“true”)通过Boolean.valueOf转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf转换。
value和param不能同时使用,但可以使用其中任意一个。

param param是可选的。它指定用哪个请求参数作为Bean属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。
例如,下面的代码片断表示:如果存在numItems请求参数的话,把numberOfItems属性的值设置为请求参数numItems的值;否则什么也不做。

<jsp:setProperty name="orderBean"
property="numberOfItems"
param="numItems" />

如果同时省略value和param,其效果相当于提供一个param且其值等于property的值。进一步利用这种借助请求参数和属性名字相同进行自动赋值的思想,你还可以在property(Bean属性的名字)中指定“*”,然后省略value和param。此时,服务器会查看所有的Bean属性和请求参数,如果两者名字相同则自动赋值。

以下的代码都是合法的

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

<jsp:setProperty name="TestBean" property="username" />

<jsp:setProperty name="TestBean" property="useranme" value="fang" />

 

<jsp:getProperty/>

jsp:getProperty动作提取指定Bean属性的值,转换成字符串,然后输出。jsp:getProperty有两个必需的属性,即:name,表示Bean的名字;property,表示要提取哪个属性的值

<jsp:getProperty name="BeanName" property="PropertyName" />

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值