jsp指令

3.4.1 page指令

可以使用page指令来控制JSP转换器转换当前JSP页面的某些方面。 例如, 可以告诉JSP用于转换隐式对象out的缓冲器的大小、 内容类型, 以及需要导入的Java类型, 等等.
page指令的语法如下:

<%@ page attribute1="value1" attribute2="value2" ... %>

@和page间的空格不是必须的, attribute1、attribute2等是page指令的属性。 如下是page指令属性的列表:
import: 定义一个或多个本页面中将被导入和使用的java类型。 例如: import=“java.util.List"将导入List接口。 可以使用通配符“”来引入整个包, 类似import="java.util.”。 可以通过在两个类型间加入“,”分隔符来导入多个类型, 如import=“java.util.ArrayList、 java.util.Calendar、java.io.PrintWriter”。 此外, JSP默认导入如下包:java.lang、 javax.servlet、 javax.servlet.http、javax.servlet.jsp。
session: 值为True, 本页面加入会话管理; 值为False则相反。 默认值为True, 访问该页面时, 若当前不存在javax.servlet.http.HttpSession实例, 则会创建一个。
buffer: 以KB为单位, 定义隐式对象out的缓冲大小。 必须以KB后缀结尾。 默认大小为8KB或更大取决于JSP容器) 。 该值可以为none, 这意味着没有缓冲, 所有数据将直接写入PrintWriter。
autoFlush: 默认值为True。 若值为True, 则当输出缓冲满时会自写入输出流。 而值为False, 则仅当调用隐式对象的flush方法时, 才会写入输出流。 因此, 若缓冲溢出, 则会抛出异常。
isThreadSafe: 定义该页面的线程安全级别。 不推荐使用 JSP 参数, 因为使用该参数后, 会生成一些Servlet容器已过期的代码。
info: 返回调用容器生成的Servlet类的getServletInfo方法的结果。
errorPage: 定义当出错时用来处理错误的页面。
isErrorPage: 标识本页是一个错误处理页面。
contentType: 定义本页面隐式对象response的内容类型, 默认是text/html。
pageEncoding: 定义本页面的字符编码, 默认是ISO-8859-1。
isELIgnored: 配置是否忽略EL表达式。 EL是Expression Language的缩写。
language: 定义本页面的脚本语言类型, 默认是Java, 这在JSP 2.2中是唯一的合法值。
extends: 定义JSP实现类要继承的父类。 这个属性的使用场景非常罕见, 仅在非常特殊理由下使用。
deferredSyntaxAllowedAsLiteral: 定义是否解析字符 串中出现“#{”符号, 默认是False。 “{# ”是一个表达式语言的起始符号。
trimDirectiveWhitespaces: 定义是否不输出多余的空格/空行, 默认是False。

大部分page指令可以出现在页面的任何位置, 但当page指令包含contentType或pageEncoding属性时, 其必须出现在Java代码发送任何内容之前。 这是因为内容类型和字符编码必须在发送任何内容前设定。
page指令也可以出现多次, 但出现多次的指令属性必须具有相同的值。 不过, import属性例外, 多个包含import属性的page指令的结果是累加的。 例如, 以下page指令将同时导入java.util.ArrayList和java.util.Date类型:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Date"%>

如下写法, 效果一样:

<%@page import="java.util.ArrayList, java.util.Date"%>

一个page指令可以同时有多个属性。 下面的代码设定了session属性和buffer属性:

<%@page session="false" buffer="16kb"%>
3.4.2 include指令

可以使用include指令将其他文件中的内容包含到当前JSP页面。 一个页面中可以有多个include指令。 若存在一个内容会在多个不同页面中使用或一个页面不同位置使用的场景, 则将该内容模块化到一个include文件非
常有用。
include指令的语法如下:

<%@ include file="url"%>

其中, @和include间的空格不是必须的, URL为被包含文件的相对路径, 若URL以一个斜杠(/) 开始,则该URL为文件在服务器上的绝对路径, 否则为当前JSP页面的相对路径。JSP转换器处理include指令时, 将指令替换为指令所包含文件的内容。 换句话说, 如果编写在清单3.4的copyright.jspf文件, 以及主文件清单3.5的main.jsp页面:清单3.4 copyright.jspf文件

<hr/>
&copy;2015 BrainySoftware
<hr/>

清单3.5 main.jsp页面

<html>
<head><title>Including a file</title></head>
<body>
This is the included content: <hr/>
<%@ include file="copyright.jspf"%>
</body>
</html>
则在main.jsp页面中应用include指令和如下页面的
效果是一样的:
<html>
<head><title>Including a file</title></head>
<body>
This is the included content: <hr/>
<hr/>
&copy; 2015 BrainySoftware
<hr/>
</body>
</html>

如上示例中, 为保证include指令能正常工作,copyright.jspf文件必须同main.jsp位于相同的目录。 按照惯例, 以JSPF为扩展名的文件代表JSP fragement。 虽然JSP fragement现在被称为JSP segment, 但为保证一致性, JSPF后缀名依然被保留。注意, include指令也可以包含静态HTML文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值