JSP 的编译指令是通知 JSP 引擎的消息,它不直接生成输出。

常见的编译指令有如下三个:

1、page:该指令是针对当前页面的指令

2、include:用于指定包含另一个页面

3、taglib:用于指定和访问自定义标签

使用编译指令的语法格式如下:

<%@ 编译指令名 属性名="属性值" ... %>

  

page 指令:

page 指令通常位于 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=UTF-8"]
[pageEncoding="UTF-8"]
[isErrorPage="true | false"]
%>

  

下面详细介绍各属性的意义:

language:声明当前页面使用的脚本语言的种类,都是 java,不用设置

extends:指定 JSP 页面编译所产生的 java 类所继承的父类,或所实现的接口

import:用来导入包。有几个包是自动导入的,java.lang.*、javax.servlet.*、javax.servlet.jsp.*、javax.servlet.http.*

session:设定这个页面是否需要 HTTP Session

buffer:指定输出缓冲区大小。

autoFlush:当输出缓冲区即将溢出时,是否需要强制输出缓冲区的内容

info:设置该 JSP 的信息,可通过 Servlet.getServletInfo() 方法获取该值

errorPage:指定错误处理页面

isErrorPage:设置本 JSP 页面是否为错误处理程序

contentType:用于设置生成网页的文件格式和编码字符集

pageEncoding:指定生成网页的编码字符集

例子:

<%@ page contentType="text/html; charset=UTF-8" language="java" %>

  

info 使用:

<%@ page contentType="text/html; charset=UTF-8" language="java" info="this is page info" %>
<%=getServletInfo()%>

  

errorPage 属性实质是 JSP 的异常处理机制,JSP 脚本不要求强制处理异常。

当我们不去处理的时候,服务器将会把错误信息返回给客户端。

include 指令:

使用 include 指令,可以把一个外部文件嵌入到当前 JSP 文件中,同时解析这个页面中的 JSP 语句。

这是个静态的 include 语句,它会把目标页面的其他编译指令也包含进来,但动态 include 则不会。

1、静态 include

<%@include file="scriptlet.jsp" %>  

2、动态 include

<jsp:include page="scriptlet.jsp" />

  

静态 include 和动态 include 的区别:

(1)、静态导入 (include指令) 通过 file 属性指定被包含的文件,并且 file 属性不支持任何表达式;动态导入 (include) 动作通过 page 属性指定被包含的文件,且 page 属性支持 JSP 表达式

(2)、使用静态导入 (include指令) 时,被包含的文件内容会原封不动的插入到包含页中,然后 JSP 编译器再将合成后的文件最终编译成一个 Java 文件;使用动态导入 (include动作) 包含文件时,当标识被执行时,程序会将请求转发到被包含页(也就是一个Servlet),并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。因为服务器执行的是多个文件,所以 JSP 编译器会分别对这些文件进行编译

(3)、使用 include 指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含、包含文件中不能有重名的变量或方法;而 include 动作包含文件时,由于每个文件是单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不相冲突的。

(4)、静态导入是将被导入页面代码完全融入,两个页面融合成一个整体 Servlet,因此被导入页面甚至不需要是一个完整的页面;而动态导入则在 Servlet 中使用 include 方法来引入被导入页面的内容

jsp 的 3 个编译指令的更多相关文章

  1. 02.JSP的3个编译指令

    本章介绍JSP的3个编译指令,在JSP中常见的编译指令有如下3个:         1.page:用于针对当前页面的指令.         2.include:用于指定包含另一个页面.         ...

  2. 二、JSP的3个编译指令,7个动作指令,9个内置对象

    JSP 3个编译指令 1)  page指令(基本不需要用到,使用默认即可) 主要属性: 1.Language:指定脚本所采用的语言类型,现在只支持java 2.Extends:定义当前jsp产生的se ...

  3. JavaWeb从0开始学(二)-----JSP基本语法与编译指令

    在上一节中我们学习了如何搭建一个简单的Web应用,并且已经知晓了一个JSP页面主要由静态的HTML内容和动态的Java脚本共同组成.JSP的基本语法共有JSP注释.JSP声明.输出JSP表达式与JSP ...

  4. 【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令

    序: 从实现到现在一直是以.net为主,但偶尔也会参与一些其他语言的项目.最近需要对一个Java Web项目进行二次开发,一直没学习过JSP所以买了几本书自学试试.参考资料为<轻量级Java E ...

  5. JSP的编译指令

    JSP有3个编译指令,是通知JSP引擎的消息,它不直接生成输出.编译指令都有默认值,无须为每个指令设置值. 常见的编译指令有如下三个: page:针对当前页面的指令. include:指定包含另一个页 ...

  6. JSP学习(2)---四种基本语法与三种编译指令

    JSP的异常可以不处理,即使是checked异常. 四种基本语法: jsp声明,jsp注释,jsp表达式,jsp脚本 三种编译指令: page,include,taglib 下面是具体的练习. sho ...

  7. JSP基本的语法、3个编译指令、7个动作指令、9个内置对象

    一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...

  8. jsp笔记2(编译指令与动作指令)

    一.jsp的编译指令是通知jsp引擎的消息,不会生成输出. jsp的3个编译指令: page:针对当前页面的指令   include:包含另一个页面的指令   taglib:用于定义和访问自定义标签 ...

  9. 01_13_JSP编译指令

    01_13_JSP编译指令 1. Directive Directive(编译指令)相当于在编译期间的命令 格式: <%@Directive 属性=”属性值”%> 常见的Directive ...

随机推荐

  1. Github二次学习

    作者声明:本博客中所写的文章,都是博主自学过程的笔记,参考了很多的学习资料,学习资料和笔记会注明出处,所有的内容都以交流学习为主.有不正确的地方,欢迎批评指正. 本节课视频内容:https://www ...

  2. Linux学习——操作文件与目录

    1. ls:列出文件及目录信息. 命令格式:ls [选项] ... 常用选项: -a 显示指定目录下所有子目录与文件,包括隐藏文件. -A 显示指定目录下所有子目录与文件,包括隐藏文件.但不列出“.” ...

  3. 20162320MyOD重做版

    博客说明 由于上次的MyOD.java没有得分,所以这次我重做了这个java,代码是自己完成的,请教了一些同学的思路.故补交一篇博客来说明我对每一步代码的编写的想法以及理解. 代码片段及理解 1.先创 ...

  4. Android连接SQLServer详细教程(数据库+服务器+客户端)

    摘星 标签: android连接sql http://blog.csdn.net/haoxingfeng/article/details/9111105

  5. 配置resin web方式部署项目

    写在前面,推荐下载resin4.0.47版本.其它版本没有测试 最近打算做一个小项目,然后容器选用了resin.想通过web提交war文件的方式 进行部署,更新代码也方便. 试了resin最新的版本( ...

  6. rsa加密算法,前后端实现。

    前端js: 下载地址:http://travistidwell.com/jsencrypt/ js第一版本: // 对数据加密 function encrypt(enStr){ //没有加载jsenc ...

  7. erlang随机排列数组

    参考karl's answer 1> L = lists:seq(1,10). [1,2,3,4,5,6,7,8,9,10] Associate a random number R with e ...

  8. 软工网络15团队作业4-DAY8

    每日例会 昨天的工作. 张陈东芳:可导入部分类信息,继续尝试将所有信息导入: 吴敏烽:商品类的规范化编写: 周汉麟:界面的排版继续优化: 林振斌:按照浏览历史,次数等,继续优化商品类排序: 李智:研究 ...

  9. ural1519-Formula 1

    题意 给出一个 \(n\times m\) 的棋盘,上面有一些格子是不能经过的.求有多少种欧拉回路可以经过所有可经过到格子.\(n,m\le 12\) . 分析 上个月就看了一下插头dp,然而这道题写 ...

  10. HDU5266-pog loves szh III

    题目 给出一棵\(n\)个点的树,从1到\(n\)编号,\(m\)次询问\({LCA} _{v\in[L,R]}\). \(n,m\le 3\times 10^5​\) 分析 我的做法是直接对LCA进 ...