JSP核心技术.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JSP核心技术.doc

JSP核心技术——JSP引擎内幕 主题: 幕后 多线程和持久性 隐含对象 JSP的生命期 编译JSP JSP的性能调整 太多的文章都讨论过JSP的背景、语法和元素。很少讨论JSP引擎如何工作的许多细节技术。开发优秀的JSP应用程序或者说要做一个优秀的JSP程序员,至少需要了解JSP引擎是如何工作应该是必备的基本知识。 1 幕后 当JSP引擎接收到对请求时,它将JSP页面的静态数据和动态元素转换成Java代码段。这个转换实际上时相当直观的。 JSP元素内包含的动态数据已经是Java代码,所以这些段不必修改就可以使用。静态数据被包装进println()方法。然后,这些Java代码段被顺序放进特殊的包装器类。 JSP包装器由JSP引擎自动创建,它处理支持JSP所设计的大多数工作,而不需作者干预。包装器通常扩展javax.servlet.Servlet类,这意味着JSP实际上被转换为Java Servlet代码的特殊形式。在许多方面,JSP可以被看作为一种用于创建Java Servlet的宏语言;JSP页面实际上提供了一个到Java Servlet API的以页面为中心的接口。 然后,源代码被编译为功能完全的Java Servelt。这个由JSP引擎创建的新Servlet处理基本的异常处理、输入/输出、线程以及大量与网络和协议相关的其他任务。实际上,是由新生成的Servlet处理请求并生成返回给请求JSP页面的客户的输出。 1.1 重新编译 JSP引擎可以被设计为在接到新的请求时重新编译每个页面。每个请求产生它自己的Servlet来处理相应。幸运的是,JSP采用一种更高效的方式。 JSP页面和Java Servlet为每个页面创建一个实例,而不是为每个请求创建一个实例。当接到新的请求时,只是在已生成的Servlet内创建一个线程。这意味着对JSP页面的第一个请求将生成一个新的Servlet,但以后的请求只是重用第一个请求所创建的Servlet。 注意:第一个请求时的延迟 当一个JSP页面第一次通过JSP引擎运行时,在收到响应前可能有较长的延迟。出现延迟的原因是,JSP引擎需要将JSP转换为Java代码、进行编译以及将它初始化,然后才能响应第一个请求。 以后的请求会利用已编译的Servlet。第一个请求后的请求应该会更快地得到处理。 有些特殊地事件可以通过JSP引擎何时重新编译JSP页面。为了管理重新编译,JSP引擎保持JSP页面代码的记录,并在源代码改变时重新编译页面。JSP的不同实现对于何时重新编译有不同的规则,但所有的引擎必须在JSP源代码改变时重新编译页面。 记住,JSP页面的外部资源,例如JavaBean或包含的JSP页面,可能不会造成页面重新编译。另外,不同的JSP引擎对于何时重新编译页面有不同的规则。 注意:预编译协议 从JSP 1.1起,规范里定义了一种预编译页面的方式。要想预编译特定的JSP,必须带着jsp_precomplie参数建立对此JSP的HTTP请求。 例如,键入如下URL: /core-jsp/catalog.jsp?jsp_precompile=true 如果此JSP还未编译过或者JSP代码已经改变,那么就会编译它。 1.2 Servlet与JSP的关系 因为JSP页面被转换为Java Servlet,所以JSP表现出的许多行为与Java Servlet一样。JSP从Java Servlet继承了强大的功能和几个缺点。 Java Servlet通过创建一个在JVM内运行的持久的应用程序进行工作。处理新的请求的方法实际上是,在这个持久的应用程序内运行一个新的线程。对JSP页面的每个请求在对应的Java Servlet内有一个新线程。 Java Servlet还为JSP开发人员提供几个内建方法和对象。它们提供一个到Servlet的行为和JSP引擎的直接接口。 2 多线程和持久性 JSP从Java Servlet继承了多线程和持久性。持久性允许对象在第一次创建Servlet时初始化,所以JSP Servlet的物理内存内容在请求之间保持不变。可以在持久空间内创建创建变量,这就允许Servlet执行缓存、会话跟踪以及在无状态环境内没有的其他功能。 JSP开发员接触不到线程编辑所涉及的许多问题。JSP引擎处理创建、销毁和管理线程所涉及的大多数工作。这样JSP开发员就不必承担多线程编辑的重担。但是JSP开发员需要了解几个影响JSP页面的多线程编程问题。 线程可能不经意地损害其他线程。在这种情况下是,JSP程序员所需要知道何时以及如何使页面不被线程化。 2.1 持久性 因为Servlet只被创建一次,然后作为不变的实例一直运行,所以可以创建持久的变量和对象。同一Servlet的所有线程

文档评论(0)

ailuojue1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档