JSP_Page指令,include指令和taglib指令
Posted 小企鹅推雪球!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP_Page指令,include指令和taglib指令相关的知识,希望对你有一定的参考价值。
JSP_指令
- JSP指令向容器提供指示和说明,告诉容器如何处理JSP的请求和响应
- JSP指令的语法格式:
<%@ directive attribute = "value" %>
- JSP指令可以有多个属性,并将属性列为键值对的形式,以逗号分隔
@
符号和指令名称之间,以及最后一个属性和关闭%>
之间的空格是可选的
JSP_三种指令类型
<%@page ... %>
:页面依赖属性,例如脚本语言,错误页面和缓冲要求<%@include file=""%>
包括在转换阶段的文件<%@include file=""%>
声明了一个标签库,包含自定义动作,用在页面中
Page指令
- page指令用于向容器提供说明,这些说明涉及当前的JSP页面
- 可以在JSP页面的任何位置编写
page
指令,但是通常page
指令被编码在JSP页面顶部 - page指令的语法:
<%@ page attribute ="value" %>
或者XML
的形式:<jsp:directive.page attribute = "value" />
JSP_Page指令的buffer属性
buffer属性
指定服务器输出响应对象的缓冲特性,可以编辑none
值来指定不使用缓冲,以便servlet输出立即被定向到响应对象- 编写一个以
KB
为单位的最大缓冲区大小,这将指示servlet
在写入响应之前写入缓冲区。 - 指示
servlet
将输出直接写入响应输出对象:<%@ page buffer = "none" %>
- 指示
servlet
将输出写入大小不小于64KB字节的缓冲区 :<%@ page buffer = "64kb" %>
JSP_Page指令的autoFlush属性
autoFlush
属性指定缓冲区输出是否在缓冲区填充时自动刷新,或者是否引发异常以指示缓冲区溢出。true
(默认值)值表示自动缓冲区刷新,false
值表示引发异常。
2.当servlet
的输出缓冲区已满时,以下指令会导致servlet
抛出异常:<%@ page autoFlush = "false" %>
- 使
servlet
在完全输出时刷新输出缓冲区:<%@ page autoFlush = "true" %>
- buffer和autoFlush属性在page指令中进行编码:
<%@ page buffer = "16kb" autoflush = "true" %>
JSP_Page指令的contentType属性
- contentType属性设置JSP页面和生成的响应页面的字符编码, 默认内容类型为:
text/html,
它是HTML页面的标准内容类型。 - 要从JSP输出XML:
<%@ page contentType = "text/xml" %>
- 指定浏览器生成的页面呈现为 HTML
<%@ page contentType = "text/html" %>
- 指定内容类型设置为 Microsoft Word文档 -
<%@ page contentType = "application/msword" %>
- 指定响应的字符编码:如果要指定返回浏览器的结果页面使用
:
UTF-8:
<%@ page contentType = “text/html:charset=UTF-8” %>`
JSP_Page指令的errorPage属性
- 在当前页面运行时出现错误时,指定一个错误提示页面,
errorPage
属性告诉JSP引擎显示哪个页面。errorPage
属性的值是相对URL
。- 当抛出所有未捕获的异常时,用于在页面出错时指定显示
MyErrorPage.jsp
的内容:<%@ page errorPage = "MyErrorPage.jsp" %>
JSP_Page指令的isErrorPage属性
isErrorPage
属性表示当前的JSP页面可以用作另一个JSP的错误页面。isErrorPage
的值可为true或false
。isErrorPage属性的默认值为false
。- 处理错误
handleError.jsp将isErrorPage
选项设置为true :<%@ page isErrorPage = "true" %>
JSP_Page指令的extends 属性
extends
属性指定生成的servlet
必须扩展的超类- 指示JSP转换器生成servlet,以使servlet扩展
somePackage.SomeClass
-<%@ page extends = "somePackage.SomeClass" %>
JSP_Page指令的import属性
import属性与Java import
语句具有相同的功能,并且类似于Java import
语句import
选项的值是要导入的程序包的名称。- 导入
java.sql.*
,使用<%@ page import = "java.sql.*" %>
- 导入多个包,可以使用逗号分隔:
<%@ page import = "java.sql.*,java.util.*" %>
- 默认情况下,容器会自动导入
java.lang.*,javax.servlet.*,javax.servlet.jsp.*和javax.servlet.http.*。
JSP_Page指令的info属性
info
属性允许提供JSP的描述:<%@ page info = "This JSP Page Written By Maxsu" %>
JSP_Page指令的isThreadSafe属性
isThreadSafe
选项将页面标记为线程安全。默认情况下,所有JSP都被认为是线程安全的。- 如果将
isThreadSafe
选项设置为false
,则JSP引擎确保一次只有一个线程正在执行JSP。 page
指令将isThreadSafe
选项的值设置为false
-<%@ page isThreadSafe = "false" %>
JSP_Page指令的language属性
language
属性指示在JSP页面脚本编写中使用的编程语言。- 使用Java作为脚本语言,因此language选项可设置为:
<%@ page language = "java" %>
JSP_Page指令的session属性
session
属性指示JSP页面是否使用HTTP会话。如果设置值为true
,则表示JSP页面可以访问内置session
对象,设置值为false
表示JSP页面无法访问内置session
对象。- 下列代码允许JSP页面使用任何内置
session
对象方法,如:session.getCreationTime()或session.getLastAccessTime()
<%@ page session = "true" %>
JSP_Page指令的isELIgnored属性
1.isELIgnored
属性能够禁用JSP 2.0中引入的表达式语言(EL)表达式的求值计算。
2. isELIgnored
属性的默认值为true
,这意味着表达式${...}
按JSP规范进行评估计算。
3. 如果isELIgnored
属性设置为false,则不会对表达式进行评估求值,而将其视为静态文本内容。
4. 设定表达式不会被评估计算 -<%@ page isELIgnored = "false" %>
JSP_Page指令的isScriptingEnabled属性
isScriptingEnabled
属性确定脚本元素是否被允许使用。isScriptingEnabled
属性默认值为true,它表示启用脚本,表达式和声明。isScriptingEnabled
如果属性的值设置为false,则如果JSP使用任何脚本,表达式(非EL)或声明,则会引发转换时错误。- 如果要限制脚本,表达式(非EL)或声明的使用,可将
isScriptingEnabled
属性的值可以设置为false
<%@ page isScriptingEnabled = "false" %>
JSP_include指令
include
指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用include指令进行编码。JSP_include
指令语法<% @ include file = "relative url">
;include
指令中的文件名实际上是一个相对URL
。如果只指定一个没有关联路径的文件名,那么JSP编译器会假定该文件与JSP在同一个目录中。xml
的语法:<jsp:directive.include file = "relative url" />
JSP_include指令示例
include
指令的一个很好的例子是要一个页面中包括多个公共页面的内容,如:比如一个主页中包函公共页眉和页脚。- 创建
main.jsp
:表示网站的主页 - 创建
header.jsp
:顶部菜单和公共内容 - 创建
footer.jsp
:显示网站的其他信息
main.jsp内容让如下
<head>
<title>main.jsp</title>
</head>
<body>
<%@ include file="header.jsp"%>
<center>
<p>main主页面</p>
<p>include指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。可在JSP页面的任何位置使用 include指令进行编码。</p>
</center>
<%@ include file="footer.jsp"%>
</body>
header.jsp内容
<html>
<head>
<title>header.jsp的内容</title>
</head>
<body>
<h1>header.jsp内容 </h1>
<center>
<p>main主页面</p>
<p>header.jsp内容,此时用的center早已经被废弃,虽然可以实现居中,但是,不用为好。</p>
</center>
</body>
</html>
footer.jsp的内容`
<html>
<head>
<title>footer.jsp的内容 -</title>
</head>
<body>
<p>footer.jspe内容</p>
</body>
</html>
运行后效果如下:
JSP_taglib指令
- JSP API 允许自定义JSP标签,如
HTML
和xml
标签,标签库是一组实现自定义行为的用户定义标签 taglib
指令声明JSP页面使用一组自定义标签,标识库的位置,并提供了在JSP页面中标识自定义标签的方法。- JSP
taglib
指令语法:<%@ taglib uri="uri" prefix = "prefixOfTag" >
url
属性解析标签库的位置prefixOfTag
属性通知容器什么位置的标签是自定义操作- JSP 的
XML
语法:<jsp:directive.taglib uri = "uri" prefix = "prefixOfTag" />
- 当使用自定义i标签时,通常为
<prefix:tagname>
的形式,前缀与在taglib指令中指定的前缀相同,标记名是标记库中实现的标记的名称。
taglib指令样例
- 自定义的
Vaule
标签库,包含一个名为hello
的标签,如果想使用一个前缀为mytag
的hello
标签,那么标签将书写为<mytag:hello>
- 在JSP文件中使用为如下:
<%@ taglib uri = "Vaule标签库的地址" prefix = "mytag" %>
<html>
<body>
<mytag:hello/>
</body>
</html>
以上是关于JSP_Page指令,include指令和taglib指令的主要内容,如果未能解决你的问题,请参考以下文章