浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib。本篇主要提及include指令。
include指令使用格式:<%@ include file="文件的绝对路径或相对路径"%>
file属性:指定被包含的文件,该属性不支持任何表达式,也不允许通过如下的方式来传递参数。
<%@ include file="welcome.jsp?name=Tom"%>下面用法将会抛出异常,也是不允许的:
<% String path="login.jsp";%>
<%@ include file="<%=path%>"%>
如果该属性值以”/“开头,那么指定的是一个绝对路径,将在当前应用的根目录下查找文件;如果是以文件名称或文件夹名开头,那么指定的是一个相对路径,将在当前页面的目录下查找文件。
JSP中常用的动作标识有<jsp:include>、<jsp:forward>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:fallback>、<jsp:pugin>。本篇主要提及<jsp:include>动作标识。
<jsp:include>动作标识使用格式:<jsp:include page="被包含文件的路径" flush="true|false"/>
或者向被包含的动态页面中传递参数:
<jsp:include page="被包含文件的路径" flush="true|false"><jsp:param name="参数名称" value="参数值"/></jsp:include>
page属性:和include指令的file属性一样。
flush属性:表示当输出缓冲区满时,是否清空缓冲区。该属性值为boolean类型,默认值为false,通常情况下设为true。
处理方式不同:使用include指令,被包含的文件的内容会原封不动地插入到包含页中使用该指令地位置,然后JSP编译器再对这个合成地文件进行编译最终编译成的文件只有一个。使用include动作标识,该标识被执行时,程序会将请求转发到(注意是转发而不是请求重定向)被包含的页面,并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。服务器执行的是两个文件,JSP编译器会分别对这两个文件进行编译。注:]请求转发,存储在request对象中的信息会被保留并被带到目标页面中;请求重定向,重新生成一个request请求,将该请求重定向到指定的URL,所以事先存储在request对象中的信息都不存在了。
包含方式不同:include指令,静态包含,最终服务器执行的是将两个文件合成后由JSP编译器编译成的一个class文件,若改变被包含的文件,则主文件的代码就发生了改变,服务器会重新编译主文件。include动作标识,动态包含,通常用来包含那些经常需要改动的文件。服务器执行的是两个文件,被包含文件的改动不会影响到主文件,服务器不需要对主文件进行重新编译,只需要重新编译被包含的文件即可,而只有当<jsp:include>动作标识被执行时,使用该标识时,目标文件才会被编译。
约定不同:include指令的约定index.jsp文件的部分代码
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ include file="top.jsp" %>
top.jsp文件的部分代码
<%@ page language="java" contentType="text/html; charset=GB2312"%>
访问index.jsp将会出现异常
<jsp:include>动作标识,无需遵循这样的约定,不会出现异常
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<jsp:include page="top.jsp"/>
浅谈JSP中include指令与include动作标识的区别的更多相关文章
- 浅谈HTTP中GET、POST用法以及它们的区别
浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
浅谈JS中的!=.== .!==.===的用法和区别 var num = 1; var str = '1'; var test = 1; test == num //tr ...
- Java基础学习总结(29)——浅谈Java中的Set、List、Map的区别
就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操 ...
- 浅谈AngularJS中的指令和指令间的相互通信
说到AngularJS,我们首先想到的大概也就是双向数据绑定和指令系统了,这两者也是AngularJS中最为吸引人的地方.双向数据绑定呢,感觉没什么好说的,那么今天我们就来简单的讨论下AngularJ ...
- 浅谈caffe中train_val.prototxt和deploy.prototxt文件的区别
本文以CaffeNet为例: 1. train_val.prototxt 首先,train_val.prototxt文件是网络配置文件.该文件是在训练的时候用的. 2.deploy.prototxt ...
- 浅谈Java中的Set、List、Map的区别(转)
对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java ...
- [转]浅谈HTTP中GET、POST用法以及它们的区别
HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一个URL地址,它用于描述一个网络上的资源,而HTT ...
- 浅谈Java中的Set、List、Map的区别
http://developer.51cto.com/art/201309/410205_all.htm
- 浅谈css中单位px和em,rem的区别-转载
px是你屏幕设备物理上能显示出的最小的一个点,这个点不是固定宽度的,不同设备上点的长宽.比例有可能会不同.假设:你现在用的显示器上1px宽=1毫米,但我用的显示器1px宽=两毫米,那么你定义一个div ...
随机推荐
- Asp.Net Mvc 使用WebUploader 多图片上传
来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...
- NPM (node package manager) 入门 - 基础使用
什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...
- JS 判断数据类型的三种方法
说到数据类型,我们先理一下JavaScript中常见的几种数据类型: 基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Functi ...
- Socket聊天程序——初始设计
写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...
- Boost信号/槽signals2
信号槽是Qt框架中一个重要的部分,主要用来解耦一组互相协作的类,使用起来非常方便.项目中有同事引入了第三方的信号槽机制,其实Boost本身就有信号/槽,而且Boost的模块相对来说更稳定. signa ...
- OSGi规范的C#实现开源
这是大约在3-4年前完成的一个C#实现的OSGi框架,实现的过程参照了OSGi规范与与一些实现思路(感谢当时的那些资料与项目),此框架虽然仅在几个小型项目有过实际的应用,但OSGi的规范实现还是相对比 ...
- 新手学习web遇到的一些乱码问题
在新手学习web网站学习的时候经常会遇到?????这种乱码,对于刚起步的菜鸟来说真的很头痛,很容易打击继续学的信心当然了对于菜鸟的我最近也遇到过乱码问题,沉浸其中不能自拔,爱的深啊!!!!!我所遇到的 ...
- eclipse — 导入android项目后识别成java项目的问题及解决
最近在eclipse导入android项目的时候遇到了奇葩问题,再此记录 遇到的问题就是:将完好的android项目导入到eclipse的时候,原本这是一个很容易的事情,但是导入成功后发现,,,靠ec ...
- SSIS 包部署 Package Store 后,在 IS 中可以执行,AGENT 执行却报错
可以执行 SSIS Package ,证明用 SSIS Package 的账户是可以执行成功的.SQL Server Agent 默认指定账号是 Network Service. 那么可以尝试一下将 ...
- T-SQL 拆分使用指定分隔符的字符串(split string)
比如有一个表,我们需要些一个语句像SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......' , 然后就能返回分割成单独的行. 原表: | So ...