【Java.Web】JSP —— 语法基础 —— JSP指令Directives(page include taglib)

JSP指令

JSP指令在:

<%@      ... ...      %>

之间;用来设置和整个JSP网页相关的属性,如网页的编码方式和脚本语言等;

JSP指令的一般语法形式为:

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

<%@之后的空格和%>之前可以包括空格。


常见的3中JSP指令为page,include和taglib;JSP指令不会产生任何的输出内容。


page指令

page指令可以指定所使用的编程语言,与JSP对应的Servlet所实现的接口,所扩展的类及导入的软件包等。

page指令的语法形式为:

<%@ page 属性1=“值1” 属性2=“值2” %>

<%@ page page_directive_attr_list %>

page_directive_attr_list ::= { language=”scriptingLanguage”}
                             { extends=”className” }
                             { import=”importList” }
			     { session=”true|false” }
			     { buffer=”none|sizekb” }
			     { autoFlush=”true|false” }
			     { isThreadSafe=”true|false” }
			     { info=”info_text” }
			     { errorPage=”error_url” }
			     { isErrorPage=”true|false” }
			     { contentType=”ctinfo” }
			     { pageEncoding=”peinfo” }
			     { isELIgnored=”true|false” }
			     { deferredSyntaxAllowedAsLiteral=”true|false”}
			     { trimDirectiveWhitespaces=”true|false”}


  • language 
    • 指定文件中的程序代码锁使用的编程语言,目前仅java为有效值和默认值。该指令作用于整个文件,多次使用该指令,只有第一次使用是有效的
    • i.e. <%@ page language="java" %>
  • extends
    • 指定该JSP文件所继承的java类;尽量不要使用该属性,servlet容器默认会处理
  • import
    • 指定导入的java软件包或类名列表,该列表用逗号隔开;在JSP文件中,可以多次使用该指令来导入不同的软件包
    • java包java.lang.*,javax.servlet.*,javax.servlet.jsp.*,javax.servlet.http.*是由JSP容器隐式导入的
    • i.e. <%@ page import="java.io.*,java.util.Hashtable" %>
  • session
    • 指定当前JSP页是否使用Http Session;如果值为“true”,则隐式的引入javax.servlet.http.HttpSession对象session;如果值为“false”,则session对象不可用;默认为true
    • i.e. <%@ page session="true" %>
  • buffer
    • 指定页面输出对象JspWriter的缓冲模型;
    • 如果值为“none”,则不使用缓冲,所有的内容直接通过ServletResponse的PrintWriter方法输出;缓冲的大小以kb的形式指定,"kb"在值中必须指定,否则会导致转换错误
    • 默认的缓冲大小的值为"8kb"
  • autoFlush
    • 指定当缓冲填满时是否自动flush
    • 当buffer="none"时,设置autoFlush为false将导致错误
    • 默认值为“true”
  • isThreadSafe
    • 如果值为false,则JSP容器将会按照request传入的顺序顺序执行该JSP;如果为true,则JSP容器会同时执行多个request的处理
    • 如果设置为true,则JSP需要保证同步性
    • 默认值为“true”
  • info
    • 定义一个string,其不会被写入输出,可以通过Servlet.getServletInfo方法获得该值
  • isErrorPage
    • 指示当前JSP页是否为一个错误页面
    • 如果值为“true”,则隐式对象exception可用;若值为“false”,则exception对象不可用
    • 默认值为“false”
  • errorPage
    • 当发生错误时,若异常未被捕获则转向的错误处理页面的URL
    • 若通过该值设定了error page,则在web.xml文件中定义的error pages不会被使用
  • contentType
    • 定义response的MIME类型和字符集,同时也定义了当前JSP页面的解码字符集
    • 值可以采用"MIME TYPE"或者"MIME TYPE; charset=CHARSET"形式,“;”后面的空格可选
    • 对于标准语法的JSP页面,默认的MIME TYPE的值为"text/html";对于XML语法的JSP页面,默认值为"text/xml"
    • i.e.  <%@ page contentType="text/html; charset=utf-8" %>
  • pageEncoding
    • JSP页面的字符集
  • isELIgnored
    • 定义在JSP页面中是否忽略EL表达式
    • 值为“true”,则忽略EL 表达式
  • trimDirectiveWhitespaces
    • 定义如何处理文件中的空格;
    • 如果为"true",只包含空格的文本会被移除;默认不截取空格


include指令

JSP可以通过include指令来包含其他文件的内容,被包含的可以是JSP文件或HTML文件。

include指令的语法为:

<%@ include file="目标组件的绝对或相对URL" %>

该指令在JSP页面翻译的时候,会把include中的内容插入到JSP页面中。

i,e,

<%@ include file="copyright.html" %>

如果多数网页都包含相同的内容,可以把这部分相同的内容单独放到一个文件中,其他的JSP文件通过Include指令即可将这个文件包含吉利啊。

使用include指令来包含其他文件被看作静态包含。


taglib指令

JSP容器可以通过tag库扩展tag标签集。

语法:

<%@ taglib ( uri=”tagLibraryURI” | tagdir=”tagDir” ) prefix=”tagPrefix” %>

JSP页面中的taglib指令声明了当前页所使用的tag库,使用uri属性唯一指定采用的tag库,使用属性prefix区分tag库。

如果JSP容器不能通过uri定位tag库,则会导致一个致命的转换错误。

i.e.

该示例引入一个tag库并使用super前缀标识,该tag库包含一个doMagic元素类型:

<%@ taglib uri=”http://www.mycorp/supertags” prefix=”super” %>
...
<super:doMagic>
...
</super:doMagic>

属性值:

  • uri
    • 唯一定义一个tag库,使用绝对或相对路径
  • tagdir
    • 标识一个位于/WEB-INF/tags路径下或其子路径下的tag库,如果该值没有以“/WEB-INF/tags”开头,则会发生转换错误
  • prefix
    • 定义tag元素的前缀:<prefix>:<tagname>
    • 前缀jsp, jspx, java, javax, servlet, sun, sunw 是保留的前缀
    • 空的前缀在此JSP规范中是非法的,会导致一个转换错误












你可能感兴趣的:(java,Web)