回到顶部
您的当前位置: 编程语言> JAVA> JAVA基础> WEB开发
Servlet技术-JSP(三)-动作元素
2014-06-24 16:46:29
标签: 原创 Servlet JSP 动作元素
<jsp:useBean>

    JavaBean(简称Bean)其实是一个Java类,封状了一些常用的复杂的操作,是用JavaBean可利于代码重用,提高程序结构清晰性,这些Java类放在WEB-INF/classes目录内,可以使用<jsp:useBean>进行实例化,并指定一个名字和作用域.具体语法如下:

<jsp:useBean id=“Bean_name” scope=“scope_value” class=“class_name”
  beanName=“ser_filename” type=“class_or_interface_name”
  optional properties tags
</jsp:useBean>

    (1)id:用来表示这个实例

    用于在合适的作用域(由作用域属性指定)内查找Bean的标识符,该id可以看成指向对象的变量,利用该id可以对该对象进行操作.该对象区分大小写

    (2)scope:表示Bean存在的范围及ID变量名的有效范围

    Bean的作用域.此属性是可选的,其缺省值为page.如果在定义的作用域内找不到该Bean则创建它.其有效值如下:

    Page:如果该Bean存在于当前JSP页面中,则重用它.如果Bean不在当前JSP页面中,则在当前页面中的请求完成后创建并存储该Bean

    Request:如果该Bean不是请求上下文的一部分,将在请求上下文中创建并存储该Bean.

    session:如果该Bean存在于当前会话中,则重用该Bean,如果该Bean不存在,将作为会话的一部分创建并存储它.

    Application:如果此Bean不存在于web应用程序上下文中,则在应用程序上下文中创建并存储此Bean.

    (3)class

    Bean的.class文件的名称.如果该Bean不在作用域内,则将它实例化.也可以使用type属性并结合class属性来指定要将何种类型的Bean实例化.如果使用类属性,不要同时指定beanName属性.

    (4)beanName

    .class文件的名称,Bean包名或者包含该Bean的串行化文件(.ser文件).仅当Bean不存在于指定的作用域中时,才使用此属性.还必须使用类型属性来指定要将何种类型的Bean实例化.beanName属性不能与class属性一起使用.此值区分大小写.

    注:使用beanName主要用来实例化一个串行化的Bean,而不是用来从一个类创建一个全新的实例.如果Bean还没有创建,beanName属性传给java.beans.Bean.instantiate()方法,由类加载器对象进行实例化.并首先假定存在一个串行化的Bean(带有扩展名.ser),然后会将其激活.如果这个操作失败,它就会实例化一个新的实例.

    串行化:对象通过写出描述自己的状态的数值来记录自己,这个过程称为对象的串行化(serialization)

    (5)Type

    如果此属性与class或beanName属性一起使用,它指定要实例化的Bean的类或接口.如果type类型未与class或beanName属性一起使用,则不将新的Bean实例化,而且type属性指的是已在作用域内的Bean.该值区分大小写.

    (6)Properties tags

    <jsp:setProperty>标记列表,它设置实例化的Bean的初始值,例如:

<jsp:useBean id=“connection”class=“com.lxm.conapp.Connection”
  scope=“session”>
      <jsp:setProperty name=“connection” property=“timeout” value=“33”>
      <jsp:setProperty name=“connection” property=“maxUserx” value=“200”>
</jsp:useBean>
<jsp:setProperty>

    <jsp:setProperty>主要用于设定JavaBean的属性值.其语法如下:

<jsp:setProperty name=“beanInstanceName”
{
     property=“*”|
     property=“propertyName” [param=“parameterName”]|
     property=“propertyName” value=“{String|}”
 }
/>

    (1)Name=“beanInstanceName”

    该属性对应<jsp:useBean>中的id,因此name要和<jsp:useBean>中的id一样.

    (2)property

    property属性赋予不同的值代表不同的含义.

    property=“*”:这种赋值方式表示所有请求参数的所有值,用于匹配Bean中的属性.在Bean中的属性名字必须和request对象中的参数名一致.如果request对象的参数值中有空值,那么对应的Bean属性将不会设定如值.同样的如果Bean中有一个属性没有与之对应的request参数值,那么这个属性同样也不会设定.

    property=“propertyName”[param=“parameterName”]:这种赋值方式表示使用request中的一个参数值来指定Bean中的一个属性.在这个语法中,property指定Bean的属性名.Param指定request中的参数名.如果Bean属性和request参数的名字不同,那么就必须得指定property和param,如果同名,那么就只需要指明property就行了.如果参数值为空(或未初始化),对应的Bean属性不被设定.

Property=“propertyName” value=“{String|<%=expression%>}”:

    这种赋值方式表示使用指定的值来设定Bean属性.这个值可以是字符串,也可以是表达式.如果是字符串,那么它就会被转换成Bean属性的类型.如果是一个表达式,那么它的类型就必须和它将要设定的属性值的类型一致.如果参数值为空,那么对应的属性值也不会被设定.这种复制方式的弹性最大,可以通过value动态设定JavaBean的属性.另外,需要同学们注意的是不能在一个<jsp:setProperty>中同时使用param和value.

    下面四行使用请求参数值来匹配Bean中的属性值:

<jsp:setProperty name=“student” property=“*”/>
<jsp:setProperty name=“student” property=“stuName” param=“name”/>
<jsp:setProperty name=“student” property=“age” value=“30”/>
<jsp:setProperty name=“student” property=“stuName”/>

    <jsp:getProperty>主要用于获取JavaBean中的属性值.其语法如下:

<jsp:getProperty name=“beanInstanceName” property=“propertyName”/>

    使用<jsp:getProperty>之前,必须用<jsp:useBean>创建它,这个标签的属性值很简单,对他们进行如下说明:

    name=“beanInstanceName” :该属性对应<jsp:useBean>的id ,因此name要和<jsp:useBean>的id一样.

    property=“propertyName”:是要取得的属性值.如:

<jsp:getProperty name=“student” property=“stuName”/>
<jsp:getProperty name=“student” property=“age”/>
<jsp:include>

    <jsp:include>主要用于包含静态和动态文件.其语法如下:

<jsp:include page=“{relativeURL|<%=expression%>}” flush=“true”/>

    Page=“{relativeURL|<%=expression %>}”:属性的参数为一个相对路径,或者是代表相对路径的表达式,即所要包含进来的文件位置或经过表达式运算出的相对路径.

    Flush=“true”:该属性接受boolean类型的值,假如为true,缓冲区将会被清空,其默认值为false.

    <jsp:include>元素容许包含动态文件和静态文件,这两种包含文件的结果是不同的,如果是静态的,那么这种包含仅仅是把所包含文件的内容加入到JSP文件中去,而如果是动态的文件,那么这个被包含文件也会被JSP编译器执行.尽管不能从文件名来判断一个文件是动态还是静态的,但<jsp:include>能够同时处理这两个文件,因此就不需要在包含时在判断此文件是动态的还是静态的.需要说明的是,如果这个包含文件是动态的那么可以用<jsp:param>传递参数名和参数值.如:

<jsp:include page=“login.jsp” flush=“true”>
        <jsp:param name=“userName” value=“lixiaoming”/>
</jsp:include>
<jsp:forward>

    <jsp:forward>主要用于将客户端的请求从一个JSP页面转到另一个JSP页面.其语法如下: 

<jsp:forward page={“relativeURL”|”<%=expression %>”}/>

    或

<jsp:forward page={“relativeURL”|”<%=expression %>”}>
       <jsp:param name=“paramName” value=“{paramValue|<%=expression%>}”/>
</jsp:forward>

    page ={“relativeURL”|”<%=expression %>”}/>:这里的属性只是一个表达式或是一个字符串,用于说明将要指向的文件URL.

    <jsp:param name=“paramName” value=“{paramValue|<%=expression%>}”/>:表示向一个动态文件发送一个或多个参数.这个文件一定是动态文件.如果想要传递多个参数,则可以在一个JSP文件中使用多个<jsp:param>.其中name指定参数名,value指定参数值.

<jsp:param>

    <jsp:param>标签用来提供key/value的值,与<jsp:include>,<jsp:forward>等标签一起搭配使用,如前面的例子.下面是该标签的语法:

<jsp:param name=“parameterName” value=“parameterValue”/>

    该属性有以下两个属性:

    name=“parameterName” :该属性值表示parameter的名字.

    value=“parameterValue”:该属性表示parameter的值.

ResultSet接口的常用方法