JSP 对 JavaBean 的支持使您能通过 Web 站点重复使用组件。JavaBean 可以是类文件或串行化 Bean,也可由 Servlet 动态生成。请使用 <BEAN> 标记来创建一个 Bean 实例,以使从 JSP 文件的任何地方都可对该实例进行访问。标记 <BEAN> 的语法为:
<bean name="Bean_name" varname="local_Bean_name"
type ="class_or_interface_name" introspect="yes|no"
beanName="ser_filename" create="yes|no"
scope="request|session|userprofile" >
<param property_name="value">
</bean>
其中的属性及其含义如下:
(1) name:用于在相应的范围(由 scope 属性指定)内查找 Bean 的名称。例如,这可能是用于存储 Bean 的会话(session)关键值。该值是分大小写的。
(2) varname:用于在 JSP 文件中的任何地方引用 Bean 的名称。该属性是可选的。缺省值为 name 属性值。该值是分大小写的。
(3) type:Bean 的类文件名。该名称用于以代码说明 Bean 实例。缺省值为 Object 类型。该值是分大小写的。
(4) Introspect:当该值为真时,JSP 处理器检查将所有的请求属性,并调用与请求属性匹配的 set 属性方法集(该属性是在 BeanInfo 中传递的)。该属性的缺省值为是。
(5) BeanName:Bean 的 .class 文件名、Bean 软件包名或包含 Bean 的串行化文件(.ser 文件)的文件名。(该名称是给 Bean 实例程序的)。仅当 Bean 不在指定的范围中,且创建属性被设置成是时,才使用该属性。该值是分大小写的。文件路径必须在应用服务器的Java 类路径中指定,除非文件在 applicationserver_root/servlets 目录下。
(6) Create:当该值为真时,如果处理器在指定的范围内没有找到 Bean,则 JSP 将创建一个 Bean 实例。缺省值为真。
(7)Scope:Bean 的生命期。该属性是可选的,其缺省值为 request 。有效值为:
request - 由 Servlet 将 Bean 设置成请求的上下文,该 Servlet 使用 JSP API 中描述的 API 调
用 JSP 文件。如果 Bean 不是请求上下文的一部分,则将创建该 Bean,并将其存储在请求上下文中,除非创建属性已设置为否。
session - 如果当前对话中存在 Bean,则 Bean 已被重用。如果不存在 Bean,且创建属性设置
为是,则它已被创建并作为会话的一部分存储起来。
userprofile - 由 Servlet 请求对象检索、造型成指定的类型,并进行内省的用户简要表文件。(在
IBM WebShere应用服务器中,缺省类型为 com.ibm.servlet.personalization.userprofile.UserProfile)。
(8) param:属性和值配对的列表。属性是在 Bean 中用内省自动设置的。只在实例化 Bean 时,才对属性进行设置。
除了使用 <param> 属性来设置 Bean 属性外,还可以使用其它三种方法:第一,在请求包含 Bean 的 Web 页面(JSP 文件)的 URL 时,指定查询参数。必须将内省属性设置成“是”。其示例如下:http://www.myserver.com/signon.jsp?name=jones&password=d13x,其中 Bean 属性名将设置为 jones。
第二种方法,将属性指定成由 HTML <FROM> 标记提交的参数。必须将 mothod 属性设置成 post。将 action 属性设置成调用 Bean 的 JSP 文件的 URL。必须将 introspect 属性设置成“是”。其示例如下:
<form action="http://www.myserver.com/SearchSite" method="post">
<input type="text" name="Search for: ">
<input type="submit">
</form>
第三种方法是使用 JSP 语法设置 Bean 属性。
在指定了 <BEAN> 标记后,就可以从 JSP 文件中的任何地方访问 Bean。这里有三种访问 Bean 属性的方法:使用 JSP scriptlet、使用 JSP 表达式、使用 <INSERT> 标记(如同 变量数据的 HTML 模板语法中所说明的)。请参阅JSP示例(DisplayData.jsp 文件)以获取三个访问 Bean 方法的每个方法示例。
4.直接插入的 Java 代码(scriptlet)
可以在 JSP 文件的 <% 和 %> 标记间直接嵌入任何有效的 Java 语言代码。这样嵌入的代码称为 scriptlet。如果没有指定 method 指令,则生成的代码将成为 service 方法的主体。用于 Servlet 的 scriptlet 可以使用一个预定义的变量集,该变量集符合基本的 Servlet、输出和输入类:
(1) request:由 javax.servlet.http.HttpServletRequest 定义的 Servlet 请求类
(2) responses:由 javax.servlet.http.HttpServletRequest 定义的 Servlet 响应类
(3) out:由 java.io.PrintWriter 定义的输出转录程序类
(4) in:由 java.io.BufferedReader 定义的输入阅读程序类
其示例如下:
<%
foo = request.getParameter("Name");
out.println(foo);
%>
新闻热点
疑难解答