=====================================
JSP编译指令概述
编译指令的英文原话是“directive”,原意是“指示、命令”的意思。在一些java技术书籍中将其称翻译为“伪指令”,也有将其翻译为“编译指令”的,我个人更习惯叫编译指令。只要知道都是指的“directive”就OK了。
JSP的编译指令是通知JSP引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无须为每个指令设置值。
常见的编译指令有3个:
page:该指令是针对当前页面的指令。
include:用于指定包含另一个页面。
taglib:用于定义和访问自定义标签。
使用编译指令的语法格式如下:
<%@ 编译指令名 属性名="属性值"…%>
=====================================
page指令
page指令用来定义JSP文件中的全局属性。其通常位于JSP页面的顶端,一个JSP页面可以使用多条page指令。page指令的语法格式如下:
<%@page [language="Java"]
[extends="package.class"]
[import="package.class│package.*,…"]
[session="true│false"]
[buffer="none│8kb│size kb"]
[autoFlush="true│false"]
[isThreadSafe="true│false"]
[info="text"]
[errorPage="relativeURL"]
[contentType="mimeType[;charset=characterSet]"│"text/html;charSet=ISO8859-1"]
[isErrorPage="true│false"] %>
下面依次介绍page指令各属性的意义。
language:
声明当前JSP页面使用的脚本语言的种类,因为页面是JSP页面,该属性的值通常都是java,该属性的默认值也是java,所以通常无须设置。
extends:
指定JSP页面编译所产生的Java类所继承的父类,或所实现的接口。
import:
用来导入包。下面几个包是默认自动导入的,不需要显式导入。默认导入的包有:java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*。
session:
设定这个JSP页面是否需要HTTP Session。
buffer:
指定输出缓冲区的大小。输出缓冲区的JSP内部对象:out用于缓存JSP页面对客户浏览器的输出,默认值为8kb,可以设置为none,也可以设置为其他的值,单位为kb。
autoFlush:
当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容。设置为true时为正常输出;如果设置为false,则会在buffer溢出时产生一个异常。
info:
设置该JSP程序的信息,也可以看做其说明,可以通过Servlet.getServletInfo()方法获取该值。如果在JSP页面中,可直接调用getServletInfo()方法获取该值,因为JSP页面的实质就是Servlet。
errorPage:
指定错误处理页面。如果本页面产生了异常或者错误,而该JSP页面没有对应的处理代码,则会自动调用该指令所指定的JSP页面。
因为JSP内建了异常机制支持,所以JSP可以不处理异常,即使是checked异常。
isErrorPage:
设置本JSP页面是否为错误处理程序。如果该页面本身已是错误处理页面,则通常无须指定errorPage属性。
contentType:
用于设定生成网页的文件格式和编码方式,即MIME类型和页面字符集类型,默认的MIME类型是text/html;默认的字符集类型为ISO-8859-1。
=====================================
include指令
使用include指令,可以将一个外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话)。这是个静态的include语句,它会把目标页面的其他编译指令也包含进来,但动态include则不会。
include既可以包含静态的文本,也可以包含动态的JSP页面。静态的include编译指令会将被包含的页面加入本页面,融合成一个页面。
include编译指令的语法:
<%@include file="relativeURLSpec"%>
如果被嵌入的文件经常需要改变,建议使用<jsp:include>操作指令,因为它是动态的include语句。
以下是一个示例:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@include file="scriptlet.jsp"%>
关于include编译指令与动作指令的区别可以参考以下链接:
http://www.darkmi.com/blog/archives/1021
=====================================
taglib编译指令
定义一个标签库以及其自定义标签的前缀。
taglib指令的语法格式如下:
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
示例:
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
说明:
tagPrefix:
自定义标签的前缀名。如果前缀为bean,那么在页面上使用的此标签库中任何标签标签应写为<bean:XXX>,这里XXX是标签名。
URIToTagLibrary:
标签库本身的URI。可以是以“/”开始的绝对路径名,“/”解释为Web应用的根。或者是一个充作TLD符号名的URL。这种情况下,名字必须通过web.xml文件中的<tablig>入口被映射到实际的TLD。
自定义标签的开发看这里:http://www.darkmi.com/blog/archives/1032
=====================================
Sorry, the comment form is closed at this time.
No comments yet.