jsp动作元素学习笔记之include指令

=====================================
JSP动作元素概述

jsp文件可以包含JSP元素、固定模板数据或者两者的任意结合。

JSP元素指示JSP容器生成什么代码及操作方式。这些元素有特定的开始和结束标记,使JSP编译器可以对其识别。

模板数据是JSP容器不可识别的所有其他代码。模板数据(通常为HTML)不做修改的加以传递,这样最后生成的HTML就会像在.jsp文件编码中一样准确的包含模板数据。

JSP元素有以下3种:
(1)伪指令;
(2)脚本元素、包含表达式、scriptlet和声明;
(3)动作。

动作元素与伪指令元素不同,伪指令元素是通知Servlet引擎的处理消息,而动作元素只是运行时的脚本动作。伪指令在将JSP编译成Servlet时起作用;而动作元素通常可替换成JSP脚本,是JSP脚本的标准写法。

在所有JSP1.1的兼容环境中,可以利用的标准行为有7种,include行为用来包含一个静态的或者动态的文件。

=====================================
include指令
include动作元素调用另一资源,将其输出流并入JSP页面输出流。

无参的include动作语法格式如下:


可以向被包含页面传递参数的include动作语法格式如下:







include动作元素和include伪指令的区别:

1、首先是语法格式上的区别,这是显而易见的。include动作指令的语法如上所示,include伪指令语法如下:

include编译指令:

<%@ include file="path" %>

2、接下来看一下实现机制的区别:
include伪指令被称为静态include,在jsp翻译成servlet阶段进行处理。处理方式是直接将include文件包含到当前页面,合成为一个完整的jsp文件后,然后进行jsp翻译为servlet的操作。而include动作元素被称为动态include,在jsp翻译成servlet阶段,包含文件和被包含文件会被翻译成两个独立的servlet,不会进行合并处理。

由此可知,动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象、页面设置都必须有自己创建,不过还好它和include它的页面的request范围是一致的。而静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突,而页面设置也可以借用主文件的。

3、一般来说,include伪指令不会检测被包含页面的内容变化,include动作元素则会检测被包含页面的内容变化,不过以我实际测试的结果来看,目前这两种include方式都能够动态检测内容的变化。

=====================================
include动作元素示例

引入页面a.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>


include的两种用法





被引入页面b.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>
<% String str = "hello world"; %>

以下是一个带参数的示例:

引入页面a.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>


include带参示例






被引入页面b.jsp

<%@ page language="java" contentType="text/html;charset=GBK"%>
<% String str = request.getParameter("str"); %>

=====================================

此条目发表在java/j2ee分类目录,贴了, 标签。将固定链接加入收藏夹。

jsp动作元素学习笔记之include指令》有1条回应

  1. 峰峰说:

    好~~~

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据