JSP隐含对象
JSP支持九个自动定义的变量,江湖人称隐含对象。
这九个隐含对象的简介见下表:
|对象|描述|
|---|---|
|request
|HttpServletRequest类的实例
|
|response
|HttpServletResponse类的实例
|
|out
|PrintWriter类的实例,用于把结果输出至网页上
|
|session
|HttpSession类的实例
|
|application
|ServletContext类的实例,与应用上下文有关
|
|config
|ServletConfig类的实例
|
|pageContext
|PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
|
|page
|类似于Java类中的this关键字
|
|Exception
|Exception类的对象,代表发生错误的JSP页面中对应的异常对象
|
Jsp指令—Page指令
Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。
Page指令的语法格式:
<%@ page attribute="value" %>
等价的XML格式:
<jsp:directive.page attribute="value" />
属性
下表列出与Page指令相关的属性:
|属性 |描述|
|---|---|
|buffer
|指定out对象使用缓冲区的大小
|
|autoFlush
|控制out对象的 缓存区
|
|contentType
|指定当前JSP页面的MIME类型和字符编码
|
|errorPage
|指定当JSP页面发生异常时需要转向的错误处理页面
|
|isErrorPage
|指定当前页面是否可以作为另一个JSP页面的错误处理页面
|
|extends
|指定servlet从哪一个类继承
|
|import
|导入要使用的Java类
|
|info
|定义JSP页面的描述信息
|
|isThreadSafe
|指定对JSP页面的访问是否为线程安全
|
|language
|定义JSP页面所用的脚本语言,默认是Java
|
|session
|指定JSP页面是否使用session
|
|isELIgnored
|指定是否执行EL表达式
|
|isScriptingEnabled
|确定脚本元素能否被使用
|
Jsp指令—Include指令
JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行。
Include指令的语法格式如下:
<%@ include file="文件相对 url 地址" %>
include 指令中的文件名实际上是一个相对的 URL 地址。
如果您没有给文件关联一个路径,JSP编译器默认在当前路径下寻找。
等价的XML语法:
<jsp:directive.include file="文件相对 url 地址" />
Jsp指令—Taglib指令
JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>
uri属性确定标签库的位置,prefix属性指定标签库的前缀。
等价的XML语法:
<jsp:directive.taglib uri="uri" prefix="prefixOfTag" />
JSP 动作元素(Jsp行为)
与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。
利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。
动作元素只有一种语法,它符合XML标准:
<jsp:action_name attribute="value" />
常见的属性
所有的动作要素都有两个属性:id属性和scope属性。
<li>id属性:
id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
<li>scope属性:
该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。
<jsp:include>动作元素
<jsp:include>动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。
语法格式如下:
<jsp:include page="相对 URL 地址" flush="true" />
前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。
以下是include动作相关的属性列表:
|属性|描述|
|---|---|
|page
|包含在页面中的相对URL地址
|
|flush
|布尔属性,定义在包含资源前是否刷新缓存区
|
<jsp:useBean>动作元素
jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。
这个功能非常有用,因为它使得我们可以发挥 Java 组件复用的优势。
jsp:useBean动作最简单的语法为:
<jsp:useBean id="name" class="package.class" />
在类载入后,我们既可以通过 jsp:setProperty 和 jsp:getProperty 动作来修改和检索bean的属性。
以下是useBean动作相关的属性列表:
|属性|描述|
|---|---|
|class
|指定Bean的完整包名
|
|type
|指定将引用该对象变量的类型
|
|beanName
|通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字
|
在给出具体实例前,让我们先来看下 jsp:setProperty 和 jsp:getProperty 动作元素:
<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。
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自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。
|
网友评论