jsp 的 3 个编译指令
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 个编译指令的更多相关文章
- 02.JSP的3个编译指令
本章介绍JSP的3个编译指令,在JSP中常见的编译指令有如下3个: 1.page:用于针对当前页面的指令. 2.include:用于指定包含另一个页面. ...
- 二、JSP的3个编译指令,7个动作指令,9个内置对象
JSP 3个编译指令 1) page指令(基本不需要用到,使用默认即可) 主要属性: 1.Language:指定脚本所采用的语言类型,现在只支持java 2.Extends:定义当前jsp产生的se ...
- JavaWeb从0开始学(二)-----JSP基本语法与编译指令
在上一节中我们学习了如何搭建一个简单的Web应用,并且已经知晓了一个JSP页面主要由静态的HTML内容和动态的Java脚本共同组成.JSP的基本语法共有JSP注释.JSP声明.输出JSP表达式与JSP ...
- 【JSP】JSP基础学习记录(一)—— 基础介绍以及3个编译指令
序: 从实现到现在一直是以.net为主,但偶尔也会参与一些其他语言的项目.最近需要对一个Java Web项目进行二次开发,一直没学习过JSP所以买了几本书自学试试.参考资料为<轻量级Java E ...
- JSP的编译指令
JSP有3个编译指令,是通知JSP引擎的消息,它不直接生成输出.编译指令都有默认值,无须为每个指令设置值. 常见的编译指令有如下三个: page:针对当前页面的指令. include:指定包含另一个页 ...
- JSP学习(2)---四种基本语法与三种编译指令
JSP的异常可以不处理,即使是checked异常. 四种基本语法: jsp声明,jsp注释,jsp表达式,jsp脚本 三种编译指令: page,include,taglib 下面是具体的练习. sho ...
- JSP基本的语法、3个编译指令、7个动作指令、9个内置对象
一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...
- jsp笔记2(编译指令与动作指令)
一.jsp的编译指令是通知jsp引擎的消息,不会生成输出. jsp的3个编译指令: page:针对当前页面的指令 include:包含另一个页面的指令 taglib:用于定义和访问自定义标签 ...
- 01_13_JSP编译指令
01_13_JSP编译指令 1. Directive Directive(编译指令)相当于在编译期间的命令 格式: <%@Directive 属性=”属性值”%> 常见的Directive ...
随机推荐
- CentOS7.x安装Docker1.11.1
原文发表于cu:2016-05-30 本文属于重发,当前Docker已经分为EE与CE版本,CE版本是17.06.0-ce,最新的CE版本安装方式已略有不同:但可以指定安装版本,如1.11.1,1.1 ...
- Tim Cook在电话会议上宣布,Burberry前CEO Angela Ahrendts将在下周加入苹果
在今天的第二季度财报电话会议上,苹果公司的 CEO Tim Cook 宣布 Burberry 的前 CEO Angela Ahrendts 将在下周入职苹果,出任苹果负责零售和网上商店的高级副总裁. ...
- ExpressJS基础概念及简单Server架设
NodeJS Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js 的包 ...
- ES6的新特性(8)——数组的扩展
数组的扩展 扩展运算符 含义 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. console.log(...[1, 2, 3]) / ...
- USACO 2.3.4 Money Systems 货币系统(完全背包)
Description 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统. [In their own rebellious way],,他们对货币的数值感到好奇. 传统地,一个货币系统是 ...
- C++Primer第五版——习题答案和解析
感谢原文博主的分享:https://blog.csdn.net/misayaaaaa/article/details/53786215 新手入门必看的书.知识是一个系统化并且相互关联的体系,零散的东西 ...
- vue cli3 配置postcss
1.安装postcss-import,postcss-cssnext 包 2.修改package.json 将postcss响应的内容替换为 "postcss": { " ...
- 第三次c++作业
https://github.com/egoistor/3Elevators-scheduling 老实说,因为这周时间紧张,(高数的期中考和一些奇奇怪怪的时期), 所以代码大体是有,但是很多细节处理 ...
- SGU 181 X-Sequence(一题比较水的求模找规律)
E - X-Sequence Time Limit:500MS Memory Limit:4096KB 64bit IO Format:%I64d & %I64u Submit ...
- Alpha-6
前言 失心疯病源6 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 今天完成了那些任务 18:30~20:30 完成blob类下关于预测车辆下一个位置的函数 代码签入github ...