include指令和include动作的区别

04月 10th, 2008

include指令和include动作都能实现将外部文档包含到JSP文档中的功能,名称也很相似,非常容易混淆。include指令和include动作到底有什么分别,哪一种方式会更好呢?
1.include指令
include可以在JSP页面转换成Servlet之前,将JSP代码插入其中。它的主要优点是功能强大,所包含的代码可以含有总体上影响主页面的 JSP构造,比如属性、方法的定义和文档类型的设定。它的缺点是难于维护只要被包含的页面发生更改,就得更改主页面,这是因为主页面不会自动地查看被包含 的页面是否发生更改。
include指令的语法格式如下
<%@ include file=”Relative Url”%>

2.include动作
jsp:include 动作是在主页面被请求时,将次级页面的输出包含进来。尽管被包含的页面的输出中不能含有JSP,但这些页面可以是其他资源所产生的结果。服务器按照正常的 方式对指向被包含资源的URL进行解释,因而这个URL可以是Servlet或JSP页面。服务器以通常的方式运行被包含的页面,将产生的输出放到主页面 中,这种方式与RequestDispatcher类的include方法一致。它的优点是在被包含的页面发生更改时,无须对主页面做出修改。它的缺点是 所包含的是次级页面的输出,而非次级页面的实际代码,所以在被包含的页面中不能使用任何有可能在整体上影响主页面的JSP构造。
jsp:include动作的完整语法如下
<jsp:include page=”Relative path to resource” flush=”true”>
其中jsp:include之间不能有空格,page属性指定被包含的页面,这个属性是必需的,是指向某种资源的相对URL。如果这个相对URL不是以/ 开头,则将其解释为相对于主页面的路径;如果是以/开头,是这个URL被解释为相对于当前WEB应用的根目录,而不是服务器的根目录,这是因为该URL是 由服务器来解释的,不是由用户的浏览器来解释的。像下面这行代码,是由用户的浏览器进行解释的,因此会按照相对于服务器的根目录进行解释。
flush属性是一个可选的次级属性,默认值为false,它指定在将页面包含进来之前是否应该清空主页面的输出流。
注意:在JSP1.1中,flush是必需的属性,而且聚会只能是true。
3.两者的区别和比较
jsp:include动作和include指令之间的根本性的不同在于它们被调用的时间。jsp:include动作在请求期间被激活,而include指令在页面转换期间被激活。
两者之间的差异决定着它们在使用上的区别。使用include指令的页面要比使用jsp:include动作的页面难于维护。前面已经说过,使用JSP指 令,如果包含的JSP页面发生变化,那么用到这个页面的所有页面都需要手动更新。在JSP服务器的相关规范中并没要求能够检测出包含的文件什么时候发生改 变,实际上大多数服务器页都有去实现这种机制。这样就会导致十分严重的维护问题,需要记住所有包含某一个页面的其他页面,或者重新编译所有的页面,以使更 改能够生效。在这点上,jsp:include就体现出了十分巨大的优势,它在每次请求时重新把资源包含进来。在实现文件包含上,应该尽可能地使用 jsp:include动作。
jsp:include动作直比于include指令在维护上有着明显优势,而include指令仍然能够得以存在,自然在其他方面有特殊的优势。这个优 势就是include指令的功能更强大,执行速度也稍快。include指令允许所包含的文件中含有影响主页面的JSP代码,比如响应报送的设置和属性方 法的定义。以下表格就是两种包含方式的对比:

include指令

jsp:include动作

语法格式

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

<jsp:include page=”..”>

发生作用的时间

页面转换期间

请求期间

包含的内容

文件的实际内容

页面的输出

转换成的Servlet

主页面和包含页面转换为一个Servlet

主页面和包含页面转换为独立的Servlet

影响主页面

可以

不可以

include指令

jsp:include动作

发生更改时是否需要显式更改主页面

需要

不需要

编译时间

较慢-资源必须被解析

较快

执行时间

稍快

较慢-每次资源必须被解析

灵活性

较差-页面名称固定

更好-页面可以动态指定

了解到jsp:include动作和include指令各自的功能和区别,在使用时,就可以通过考虑各方面的因素,来决定使用哪一种方式。尽管各自都有一 定的优缺点,在实际使用中,还是应优先考虑使用jsp:include动作,这是因为它在代码维护上的优势远胜过其在功能上的不足。

GET方法和POST方法的区别

03月 25th, 2008

HTTP请求消息使用GET或POST方法以便在Web上传输请求。

GET 方法
用于检索信息(如文档、图表或数据库请求结果)
请求的页面可以被设置为书签和使用电子邮件发送
请求信息作为查询字符串发送。但是根据不同的服务器,查询字符串的长度限制在240-255个字符。

举例:搜索引擎Google使用GET方法对用户输入的搜索字符串检索搜索结果

POST 方法
用于发送敏感信息(如信用卡号、密码等)或要保存到数据库中的信息
请求的页面不能设置为书签或不能通过电子邮件发送
发送的数据没有大小限制

举例:登入窗口表单使用POST方法

Mac启动快捷键

03月 21st, 2008

Mac机没有传统PC中的BIOS,所以有些功能不同。

方便MacBook用户,也为了自己以后备用,特地在记录。

  • 启动时按住 C 键——从可启动 CD 或 DVD 光盘启动,如随机附带的 Mac OS X 安装光盘。
  • 启动时按住 D 键——如果插入1号安装盘,则启动为 Apple Hardware Test (AHT)。
  • 按住 Option-Command-P-R 键直至听到两声嘀嘀声——重置 NVRAM。
  • 启动时按住 Option(也就是Alt键) 键——启动进入 Startup Manager,您可以选择从一个Mac OS X 宗卷启动。 注意:按住 N 键可显示出第一个可启动网络宗卷。
  • 按住 Eject、F12 键,或者按住鼠标键(/触控板)——推出所有移动介质,如光盘。
  • 启动时按住 N 键——试图从兼容的网络服务器(NetBoot)启动。
  • 启动时按住 T 键——启动为 FireWire 目标磁盘模式。
  • 启动时按住 Shift 键——启动为安全模式并且暂时关闭登录项。
  • 启动时按住 Command-V 键——启动为 Verbose 模式。
  • 启动时按住 Command-S 键——启动为单用户模式。
  • 启动时按住 Option-N 键——使用默认启动镜像从 NetBoot 服务器启动。

在Windows下,也许很多用户也会觉得,仅有一个鼠标按键的MacBook会在调出下拉菜单的时候有些困难,实际上只要用两个手指按在触摸板上,就能够激活鼠标右键菜单功能。