分享
 
 
 

Base-Jsp-13-缓冲和页面片断引入

王朝java/jsp·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

v 应答主体的缓冲

Ø HTTP应答消息即包含首部也包含应答主体

ª 首部将告诉浏览器应答主体中所含数据的类型(HTML文本、图像)、应答主体的大

小、应答主体是否可以被缓存等信息。

ª 所有的应答首部必须在应答主体被发送之前发送到浏览器去。

ª 一旦JSP页面向消息主体中写入了什么东西,JSP就会开始把应答发送到浏览器中,

这时再设置首部就太晚了,因为首部会最先被发送出去。

ª 任何邡在JSP页面中而由不是JSP元素的内容,都将被JSP容器自动写入应答主体

中。

ª JSP元素本身是由JSP容器来执行的,它们永远不会出现在应答中。

ª servlet规范规定在应答提交之后就不能再设置首部了,并且当数据已经被写入应答

主体之后就不能再转发请求了。

Ø JSP容器缓冲:JSP容器将把任何不是JSP元素的内容和所有由JSP元素生成的动态内容

写入到缓冲区中,而不是一旦有东西被写入应答主体就马上把应答发送到浏览器。

ª 在某个特定的时候,比如缓冲区已经被填满,或者已经达到了页面的结尾,容

器就会把所有已经设定好的首部发送出去,然后发送缓冲区里应答主体的内容。

ª 当整个页面处理完毕的时候,JSP容器将先发送所有的首部,然后再发送缓冲

区中的内容。

ª 可以使用page指令的两个属性来控制缓冲区的大小,并规定当缓冲区被充满时

应该采取的操作。

<%@ page buffer=”12kb” autoFlush=”false”%>

Buffer属性值指定了缓冲区大小的最小值,容器可以选择使用比这个值大一些的缓冲区,这个值必须是以千字节为单位的数字,后面紧跟kb。默认情况下一个缓冲区至少8kb大小。也可以使用none关键字,这样JSP容器将不会对应答主体执行任何操作。

AutoFlush属性指定了当缓冲区已满时应当执行的操作。True:当缓冲区已满时,缓冲区中的内容将被发送到浏览器(缓冲区被排空),而页面剩余部分将被放入缓冲区,直到缓冲区再次被填满。False:当缓冲区被填满时,JSP容器将抛出一个异常,并结束对页面的处理。

ª 大多数情况应该使用默认值,如果有一个特别大的页面,而又必须在页面的结尾处设置首部,那么就需要增加缓冲区的大小。

ª 如果页面生成速度缓慢,而你又想尽快的把已经产生的结果发送给浏览器,可以禁用缓冲。

ª 不管把buffer属性设成了什么值,都可以用下面的小脚本来强制性地排空缓冲区。

<% out.fjush();%>

v 引入页面片段

ª 可以使用一个JSP指令或者一个标准行为,在JSP页面中引入其他的页面片段。

ª include指令:在翻译阶段(将JSP页面转换成servlet的阶段),JSP的include指令会读入

指定的页面中的内容,并将这些内容和原来的页面融合在一起。

<%@ include file=”header.html”%>

© 引入的页面可以只包含静态内容(例如HTML),也可以是一个普通的JSP页面。主页面和引入的页面融和在一起(引入的页面只是最为普通的文本进行融合,并不对动态内容求值),融合后的完整页面再被整体的转换为一个servlet。

© 这意味着主页和被引入的页面共享所有的页面作用域数据。因此,如果主页面中声明了一个变量,而在某个被引入的页面中也声明了一个同名的变量,那么在翻译阶段将会造成一个错误,因为组合后的页面无法进行编译。

© include指令的一个常见用法是引入应用程序的所有页面都需要的公共声明。

© JSP规范建议在使用include指令引入JSP页面时,最好使用不同的文件扩展名,因为它们一般都不是完整而合法的页面,如:可以使用这些替代的文件扩展名:.jspf或 .jsf。

© 被引用页面改变后,容器可能不会马上产生反应。

ª <jsp:include>指令用于在运行时引入另外的资源。

© <jsp:include page=”navigation.jsp”/>

© 这个指令是在请求处理阶段而不是在翻译阶段执行的。该行为并不是要引入指定页面的实际内容,它将引入执行该引入页面后所产生的应答,这意味着你可以指定任何能够产生文本应答的web资源。JSP容器将通过一个内部的函数调用来调用指定的资源。因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象,以及所有的请求参数。但是要注意,它不能访问任何页面作用域属性,或是在主页面中声明的脚步变量。

©<c:import>行为和<jsp:include>相同,另外它还可以从外部资源引入数据,比如不同的web应用程序,或者一个FTPfuwq。

© 所以应该使用<c:import>来代替<jsp:include>的使用。

© 被引用页面改变后,新版本会立即投入使用。

ª include 和<jsp:include>行为直接的区别

语法 执行时间 引入的内容

<%@ include 翻译阶段 静态文本(HTML、JSP),在JSP页面被转换

File=”relativeURI”%> 为servlet之前和他融合在一起

<jsp:include 请求处理阶段 执行页面或servlet所生成的应答文本

Page=”relativeURI”

Flush=”true/false”/>

v 客户端代码包括JavaScript和Java applet

Ø 使用JavaScript

ª 在JSP页面中包含的JavaScript代码,容器不会把它看作是代码,它只会把这些代码看作是模板文本,并仅仅把它和其他应答一起发送到浏览器去。

ª 浏览器调用JSP页面的唯一方式是发送一个HTTP请求,JavaScript事件处理器无法直接调用JSP元素。

ª JavaScript可以要求浏览器去请求一个完整的页面,但是脚本无法处理应答。

v 防止JSP页面被缓存

Ø 浏览器和服务请求都可以缓存用户访问过得页面,但有时不希望页面被缓存,可以

ª <%

response.addHeader(“Paragma”,”no-cache”);

response.setHeader(“Cache-control”,”no-cache”);

response.setDateHeader(“Expires”,0);

%>

setDateHeader(“Expires”,0)方法将值转换为“Thu,1 Dec 1970 00:00:00 GMT”,也就是,设置为过去的时间,保证了客户端可以在每次请求该页面时获得一个最新的副本,以达到不缓存页面的作用。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有