IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    JSP指令总结

    果冻想发表于 2015-11-02 15:27:02
    love 0

    前言

    JSP指令用来声明JSP页面的一些属性,例如编码格式、文档类型等。这些指令用来告知JSP引擎如何处理该JSP页面。经常使用的编译指令有以下三个:

    • page指令:该指令是针对当前页面属性的指令;
    • include指令:用于指定包含另一个页面;
    • taglib指令:用于定义和访问自定义标签。

    使用编译指令的语法格式如下:

    <%@ 编译指令名 属性名=“属性值”...%>
    

    现在就分别对以上三个编译指令进行总结。对于taglib指令,将在后续的自定义标签库文章中再详细总结。

    page指令

    page指令是最常用的指令,用来声明JSP页面的属性等。比如:

    <%@ page language="java" contentType="text/html"; charset="utf-8" %>
    

    需要注意的是,任何page允许的属性都只能出现一次,否则会出现编译错误;import属性除外,import可以多次出现。

    我们可以在page指令中设置以下的属性:

    属性名称 取值范围 描述
    language java 指定解释该JSP文件时采用的语言,默认为java
    extends 任何类的全名(包含包名) 指定JSP页面编译所产生的Java类所继承的父类,或所实现的接口
    import 任何类名、包名 引入该JSP中用到的类、包等。JSP会默认导入四个包:java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http
    session true、false 指明该JSP页面是否内置Session对象。如果为true,则内置Session对象;否则不内置Session对象。默认为true
    buffer none、数字+kb 指定缓存大小。当autoFlush为true时有效
    autoFlush true、false 是否运行缓存。如果为true,则使用out.println()等方法输出的字符串并不是立刻到达客户端的,而是暂存在缓存中;当缓存满、程序执行完毕或者执行out.flush()操作时才到客户端。默认为true
    isThreadSafe true、false 用来设置JSP页面是否可以多线程访问。当设置为true时,JSP页面能同时响应多个客户的请求;当设置为false时,JSP页面同一时刻只能响应一个客户的请求,其他客户需要排队等待。默认值为true
    info 任意字符串 指明JSP的信息。该信息可以通过Servlet.getServletInfo()方法获得
    errorPage 某个JSP页面的相对路径 指明一个错误显示页面。如果该JSP程序抛出了一个未捕获的异常,则转到errorPage指定的页面。errorPage指定的页面通常isErrorPage属性为true,且内置的exception对象为未捕获的异常
    contentType 合法的文档类型 客户端根据该属性判断文档类型,具体的请参见这里
    pageEncoding 指定生成网页的编码字符集 JSP文件本身的编码,将JSP翻译成Java源码时,就是根据pageEncoding的编码格式读取的
    isErrorPage true、false 设置JSP页面是否为错误处理页面;如果该页面本身已是错误处理页面,则通常无须指定errorPage属性

    include指令

    使用include指令,可以将一个外部文件嵌入到当前的JSP文件中。编译时,当前的JSP文件完全包含了被包含页面的代码。举个例子说明:

    页面一(page1.jsp)主要代码:

    <%@ page language="java" contentType="text/html; charset=utf-8"%>
    <%@ page pageEncoding="UTF-8"%>
    
    <body>
        <%
        out.println("这是页面一");
        %>
    
        <%-- 这里包含页面二 --%>
        <%@ include file="page2.jsp" %>
    </body>
    

    页面二(page2.jsp)主要代码:

    <%@ page pageEncoding="UTF-8"%>
    <%
    out.println("这是页面二");
    %>
    

    运行该程序,在生成class和java目录下,我们都无法找到page2_jsp.class和page2_jsp.java。这说明页面二还未经过编译就已经添加到页面一中了,这就好比直接将页面二的代码写到页面一中,请记住这一点,这将和后面总结到的include动作是截然相反的原理。

    taglib指令

    JSP支持标签技术,使用标签功能可以实现视图代码重用,很少量的代码就能实现很复杂的显示效果。由于taglib指令是一项非常重要的技术,我们可以自定义我们自己的标签库,后续总结自定义标签库中我再结合自定义的标签库一起总结taglib指令,这里就不废话了。

    总结

    都是很基础的总结,随便一本书都可以找到我这里总结的内容;但是,自己亲手总结一遍,对每个指令的每个属性又加深了熟悉。就是这样,每一次总结,都有收获,谁说不是呢!!!生日快乐!!!

    果冻想-一个原创技术文章分享网站。

    2015年10月29日 于呼和浩特。

    未经允许不得转载:果冻想 » JSP指令总结



沪ICP备19023445号-2号
友情链接