Jsp(二)

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格式:


属性
下表列出与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指令—Taglib指令

JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。
Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。
Taglib指令的语法:

<%@ taglib uri="uri" prefix="prefixOfTag" %>

uri属性确定标签库的位置,prefix属性指定标签库的前缀。
等价的XML语法:



JSP 动作元素(Jsp行为)

与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。
利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。
动作元素只有一种语法,它符合XML标准:


常见的属性
所有的动作要素都有两个属性:id属性和scope属性。

  • id属性:
    id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
  • scope属性:
    该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。


  • 动作元素

    动作元素用来包含静态和动态的文件。该动作把指定文件插入正在生成的页面。
    语法格式如下:

    
    

    前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候
    以下是include动作相关的属性列表:

    |属性|描述|
    |---|---|
    |page|包含在页面中的相对URL地址|
    |flush|布尔属性,定义在包含资源前是否刷新缓存区|


    动作元素

    jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。
    这个功能非常有用,因为它使得我们可以发挥 Java 组件复用的优势。
    jsp:useBean动作最简单的语法为:

    
    

    在类载入后,我们既可以通过 jsp:setProperty 和 jsp:getProperty 动作来修改和检索bean的属性。
    以下是useBean动作相关的属性列表:

    |属性|描述|
    |---|---|
    |class|指定Bean的完整包名|
    |type|指定将引用该对象变量的类型|
    |beanName|通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字|
    在给出具体实例前,让我们先来看下 jsp:setProperty 和 jsp:getProperty 动作元素:


    动作元素

    jsp:setProperty用来设置已经实例化的Bean对象的属性,有两种用法。首先,你可以在jsp:useBean元素的外面(后面)使用jsp:setProperty,如下所示:

    
    ...
    
    

    此时,不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会执行。第二种用法是把jsp:setProperty放入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自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。|

    你可能感兴趣的:(Jsp(二))