博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP指令
阅读量:4994 次
发布时间:2019-06-12

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

以下内容引用自:

JSP指令(Directives)为容器提供方向和指导,告诉它如何处理JSP过程的某些方面。

JSP指令影响Servlet类的总体结构。它通常具有以下形式:

<%@ directive attribute="value" %>

指令有若干个属性,可以以键-值对的形式列出并由逗号分隔。

@符号和指令名称之间的空格,以及最后一个属性和结束标志%>之间的空格,是可选的。

指令标签有三种类型:

指令 描述
<%@ page ... %> 定义page-dependent属性,比如脚本语言,错误页面和缓冲要求。
<%@ include ... %> 包含在转换阶段的文件。
<%@ taglib ... %> 声明了一个用于页面中的标签库,包括自定义操作。

一、页面指令

页面指令用于为属于当前JSP页面的容器提供指示。可以在JSP页面的任何地方编写页面指令代码。按照惯例,通常在JSP页面的顶部编写页面指令代码。

下面是页面指令的基本语法:

<%@ page attribute="value" %>

可以编写等同于上述语法的XML,如下所示:

二、属性

以下是页面指令相关的属性列表:

属性 目的
buffer 指定一个输出流的缓冲模型。
autoFlush 控制Servlet输出缓冲区的行为。
contentType 定义了字符编码方案。
errorPage 定义了Java未检查运行时异常报告的另一个JSP的URL。
isErrorPage 表明这个JSP页面是否是由另一个JSP页面的errorPage属性指定的URL。
extends 指定一个超类,生成的Servlet必须扩展
import 指定在JSP中使用的包或类的列表,正如Java导入声明为Java类所做的相同。
info 定义一个字符串,可以访问Servlet的getServletInfo()方法。
isThreadSafe 为生成的Servlet定义线程模型。
language 定义了在JSP页面中使用的编程语言。
session 指定JSP页面是否参与HTTP会话
isELIgnored 指定JSP页面中的EL表达式中是否将被忽略。
isScriptingEnabled 决定是否允许使用脚本元素。

三、包含指令

包含指令用于在转换阶段包含一个文件。这个指令告诉容器在转换阶段将其他外部文件的内容与当前JSP合并。可以在JSP页面中的任何位置编写include指令。

一般使用这个指令的形式如下:

<%@ include file="relative url" >

包含指令中的文件名实际上是一个相对URL。如果只指定一个文件名而没有相关路径,JSP编译器就会假定文件与JSP在同一个目录下。

可以编写等同于上述语法的XML,如下所示:

示例:

include指令的一个很好的例子是一个具有多页内容的公共页眉和页脚。

定义以下三个文件(a)header.jps,(b)footer.jsp(c)main.jsp如下:

以下是header.jsp内容的:

<%!    int pageCount = 0;   void addCount() {      pageCount++;   }%><% addCount(); %>         The include Directive Example               

The include Directive Example

This site has been visited <%= pageCount %> times.

以下是内容footer.jsp中 -

Copyright © 2010

最后这里是main.jsp的内容-

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

Thanks for visiting my page.

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

现在把所有这些文件保存在根目录下,并尝试访问main.jsp

刷新main.jsp,会发现页面匹配计数器不断增加。

四、taglib指令

JSP API允许用户定义自定义的JSP标签,看起来像HTML或XML标签,且标签库是一组用户定义的标签,能够实现自定义的行为。

taglib指令声明了JSP页面使用一组自定义标签,识别库的位置,并提供方法来确定JSP页面中的自定义标签。

taglib指令遵循以下语法:

<%@ taglib uri="uri" prefix="prefixOfTag" >

其中,uri属性值解析为容器理解的一个位置,prefix属性通知容器什么标记是自定义操作。

可以编写相当于上述的语法的XML,如下所示:

示例:

例如,假设custlib标签库包含一个名为hello的标签。如果想使用一个前缀为mytag的hello标签,标签将是<mytag:hello>,它将在JSP文件中被使用如下:

<%@ taglib uri="http://www.example.com/custlib" prefix="mytag" %>         

 

测试工程:

转载于:https://www.cnblogs.com/EasonJim/p/6946174.html

你可能感兴趣的文章
apache的MPM机制-prefork
查看>>
js的一些实用的小技巧
查看>>
vue-cli中理不清的assetsSubDirectory 和 assetsPublicPath
查看>>
iOS的UILabel设置居上对齐,居中对齐,居下对齐
查看>>
最流行的android组件大全
查看>>
【Android自定义控件】支持多层嵌套RadioButton的RadioGroup
查看>>
Swift - 内存泄露原因(循环强引用)及解决办法
查看>>
AIDL-Android接口描述语言实现跨进程通讯
查看>>
剑指Offer - 九度1354 - 和为S的连续正数序列
查看>>
LeetCode - Anagrams
查看>>
用MFC时,如果程序崩溃,检查内存,然后注意GDI数量,在任务管理器里选项-查看列-GDI数量...
查看>>
angular(转)
查看>>
ansible简单现网配置
查看>>
数据结构C++版-树
查看>>
JavaScript学习总结--创建对象(3_原型)
查看>>
FZU 2092 收集水晶 dp+bfs
查看>>
Java学习---网页编辑器FCKeditor使用详解
查看>>
IDEA开发React环境配置
查看>>
香港两日游
查看>>
cordova 打包发布正式版 apk
查看>>