指令是一种JSP句法元素,它告诉JSP转换器应该如何将某个JSP页面转换成Servlet。

JSP 2.2中定义了几个指令:page、include、taglib、tag、attribute以及variable。其中最重要的是:page和include。

1.The page Directive

1.1.语法

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

@和page之间的空格是可选的,attribute1、attribute2等都是page指令的属性。

page指令可以出现在页面中的任何位置。只是当它包含contentType或者pageEncoding属性时,它必须放置在所有的模板数据之前, 并且是在利用Java代码发送任何内容之前。因为必须在发送任何内容之前设置内容类型和字符编码。

page指令可以多次出现。但是在多个page指令中多次出现的同一个属性,它的值必须一致,只有import属性除外。

1.2.属性

import
指定要导入的一种或多种Java类型,供本页的Java代码所用。

导入List接口:

<%@ page import="java.util.List" %>

利用通配符*可以导入整个包:

<%@ page import="java.util.*" %>

导入多重类型时,两种类型之间要用逗号隔开:

<%@ page import="java.util.ArrayList, java.util.Calendar, java.io.PrintWriter" %>

默认导入的包:

javax.servlet.*;
javax.servlet.http.*;
javax.servlet.jsp.*;

contentType
指定该页面隐式对象response的内容类型,其默认值为text/html。

pageEncoding
指定该页面的字符编码,其默认值为ISO-8859-1。

1.3.不常用属性
session
值为true时,表示这个页面参与Session管理;

值为false时,表示不参与Session管理。

默认值为true,意味着如果之前还没有javax.servlet.http.HttpSession实例,那么调用这个JSP页面时会创建一个。

buffer
指定隐式对象out的缓冲区大小,以千字节为单位。强制以kb为后缀。

缓冲区的默认容量大于或等于8kb,具体取决于JSP容器。

这个属性还可以设置为none,表示不适用缓存,但这样会导致输出的内容直接被写入相应的PrintWriter。

autoFlush

默认值为true,表示当缓冲区满时,被缓存的输出应当自动刷新。

值为false时,表示只有在调用隐式对象response的flush方法时,才进行刷新缓冲区。因此,当缓冲区益处时,就会抛出一个异常。

isThreadSafe
表示页面中实现的线程安全级别。建议JSP的作者不要使用这个属性,因为它会产生一个包含不建议使用的代码的Servlet。

info
指定所生成的Servlet的getServletInfo方法的返回值。

errorPage
表示负责处理该页面可能会出现的错误的页面。

isErrorPage
表名这个页面是否负责处理错误。

isElIgnored
表名是否忽略EL表达式。

language
指定这个JSP页面使用的脚本语言,其默认值为java,这个值是JSP 2.2中唯一有效的值。

extends
指定这个JSP页面的实现类必须扩展的超类。该属性很少使用。

deferredSyntaxAllowedAsLiteral
指明是否允许使用字符序列“#{”作为该页面和编译单元的String字面值。

默认值为false。

与EL表达式有关。

trimDirectiveWhitespaces
表名是否从输出内容中删除只包含空格的模板文本。

默认值为false。

2.The include Directive

利用include指令可以将另一个文件的内容放到当前的JSP页面中。在一个JSP页面中可以使用多个include指令。

如果某部分特殊的内容需要被其他页面所用,或者被处于不同位置的某个页面所用,那么将这部分内容做成一个include文件是很有帮助的。

2.1.语法

<%@ include file="url" %>

此处@和include之间的空格是可选的,并且url是表示一个include文件的相对路径。

如果url以一个正斜线(/)开头,那么其在服务器中就会被解读成是一条绝对路径。

如果不是以正斜线开头,则会被解读为相对于当前JSP页面的路径。

include指令和include动作的区别
使用include指令时,这种包含是发生在页面转换的时候,例如JSP容器将页面转换成一个Servlet的时候。

使用include动作时,这种包含则是发生在请求的时候。因此,可以利用include动作传递参数。

使用include指令时,被包含资源的文件扩展名并不重要。

使用include动作时,文件扩展名必须为jsp,以便它能够将其作为一个JSP页面进行处理。

3.The taglib Directive
可以通过使用这个指令来为JSP页面扩展标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

JSP——指令(Directive)的更多相关文章

  1. jsp jsp指令

    JSP 由HTML和java语句拼接而成的文本,后缀名为.jsp 1.Jsp翻译成servlet:先翻译,Tomcat将翻译后的文件放置在安装目录下(所有JSP页面本质上就是Servlet程序) 2. ...

  2. JavaWeb---总结(十六)JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  3. JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  4. javaweb学习总结(十六)——JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  5. java web 学习十六(JSP指令)

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  6. javaee学习-JSP指令简介

    JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: page指令 Inclu ...

  7. javaWeb学习总结(8)- jsp指令(3)

    一.JSP指令简介 一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定 ...

  8. JavaWeb学习 (十五)————JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

  9. [03] JSP指令

    1.概述 JSP指令用于"转换阶段"提供整个JSP页面的相关信息,影响由JSP页面生成的Servlet的整体结构.指令不会产生任何的输出到当前的输出流中. 指令的基本语法为: &l ...

  10. JSP指令(page include taglib)

    JSP指令指示JSP转换器如何翻译JSP页面到Servlet:JSP指令用来设置整个JSP页面相关的属性,如网页编码方式.脚本语言等 JSP指令的格式: <%@ directive attrib ...

随机推荐

  1. React前端有钱途吗?《React+Redux前端开发实战》学起来

    再不学React就真的跟不上大前端的形式了,目前几乎所有前端的招聘条件都是精通React者优先,看看拉勾网的React薪资,都是15K-20K,这个暑假,必须动起来了. 如果你熟悉JavaScript ...

  2. 第十二篇 JavaScript(简称JS) 实现显示与隐藏

    JavaScript   JavaScript简称JS.JS是脚本语言,它是一种轻量级的编程语言,是可以插入HTML页面的编程代码,几乎所有现代浏览器都是支持的. 理论老师不行,我就抄袭手册上的一些关 ...

  3. Linux学习篇之OpenKM的安装(汉化)

    OpenKM是一个开放源代码的电子文档管理系统,它的特点是可用于大型公司或是中小企业, 适应性比较强. 并且在知识管理方面的加工,提供了更加灵活和成本较低的替代应用,下面讲一下搭建方法. 一.以下都是 ...

  4. (转)oracle使用expdp、impdp和exp、imp导入导出表及表结构

    使用expdp.impdp和exp.imp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp和impdp是服务端的工具程序,他们只能在 ...

  5. usb驱动正在使用不能卸载

    @ubuntu:/home/lyd# rmmod cyusb3610rmmod: ERROR: Module cyusb3610 is not currently loadedroot@ubuntu: ...

  6. VMware Tools按钮变灰色,无法安装的解决方法

    参考博客: https://blog.csdn.net/weixin_30639719/article/details/94846851 https://jingyan.baidu.com/artic ...

  7. JS---client系列

    offset系列:获取元素的宽,高,left,top, offsetParent   offsetWidth:元素的宽,有边框 offsetHeight:元素的高,有边框 offsetLeft:元素距 ...

  8. linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案

    1.使用yum安装mysql后 2.初始密码在/var/log/mysqld.log这个文件里 3.输入命令:grep 'temporary password' /var/log/mysqld.log ...

  9. 【2019银川网络赛】L:Continuous Intervals

    题目大意:给定一个长度为 N 的序列,定义连续区间 [l, r] 为:序列的一段子区间,满足 [l, r] 中的元素从小到大排序后,任意相邻两项的差值不超过1.求一共有多少个连续区间. 题解:单调栈 ...

  10. hiho #1474 拆字游戏(dfs,记录状态)

    #1474 : 拆字游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Kui喜欢把别人的名字拆开来,比如“螺”就可以拆成“虫田糸”,小Kui的语文学的不是很好,于是 ...