博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
jsp 的 3 个编译指令
阅读量:6833 次
发布时间:2019-06-26

本文共 2141 字,大约阅读时间需要 7 分钟。

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

  

静态 include 和动态 include 的区别:

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

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

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

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

 

转载于:https://www.cnblogs.com/eleven24/p/8595493.html

你可能感兴趣的文章
架构设计中的方法学——迭代设计
查看>>
【技术贴】最新唯一解决:未能创建视频预览,请检查设备连接,确定没有其他应用程序或用户使用该设备...
查看>>
SQL Server中数据库文件的存放方式,文件和文件组
查看>>
使用delphi 开发多层应用(八)客户端更新数据到kbmMW服务器
查看>>
HDU_3062 Party (2-SAT)
查看>>
dynamic_shift_reg SRL16E
查看>>
尝试用微博记录 SQL Server 2012开发者训练营笔记
查看>>
.Net中的5种事务总结
查看>>
为什么 Git 比 SVN 好
查看>>
关于Qt的MVC模型思想(转载)
查看>>
Vagrant支持Amazon AWS和Rackspace
查看>>
JNDI全攻略(二)(转)
查看>>
POJ1463:Strategic game(树形DP)
查看>>
SPOJ LCS(Longest Common Substring-后缀自动机-结点的Parent包含关系)
查看>>
Tuning 05 Sizing other SGA Structure
查看>>
用 Qt Creator 开发非 Qt 的 C/C++ 程序
查看>>
Android-Cannot merge new index 66195 into a non-jumbo instruction的解决的方法
查看>>
解决 com.sun.*包导入错误
查看>>
【WP 8.1开发】如何动态生成Gif动画
查看>>
GitHub上创建组织
查看>>