JSP入门
1、JSP头部信息
1.1 3种指令
1.2 page指令的常用属性
2、Scriptlet
3、JSP隐式对象
4、JSP的生命周期
5、初始化JSP
6、JSP属性
可访问性 | 作用域 | 适用于 | Servlet中 | JSP中(使用隐式对象) | |
Context(上下文) 不是线程安全的 |
web应用的所有部分:Servlet、JSP、ServletContextListener、ServletContextAttributeListener | 如果服务器或应用关闭,上下文则撤销 | 希望为整个应用共享资源。如:数据库连接,email地址等等 | getServletContext(). | application. |
HttpSession(会话) 不是线程安全的 |
访问这个特定会话的所有Servlet和JSP。 | 会话的生命周期,可以通过编程撤销,也可以通过超时撤销 | 与客户会话有关的资源和数据。 | request. | request. |
Request(请求) 线程安全 |
应用中能直接访问请求对象(httpRequest)的所有部分。 | 就是Servlet的service方法。 | request.getSession() | session | |
page(页面) | 没有 | pageContext. |
6.1 使用pageContext获得和设置属性
JSP 页面中的操作和模板数据是使用 JspWriter 对象编写的,该对象由隐式变量 out 引用,而此变量是使用 PageContext 对象中的方法自动初始化的。
此抽象类模仿 java.io.BufferedWriter 和 java.io.PrintWriter 类中的一些功能,但又不同于这些类,因为它从 print 方法抛出 java.io.IOException,而 PrintWriter 不会这样做。
缓冲
初始 JspWriter 对象与 ServletResponse 的 PrintWriter 对象关联,关联方式取决于页面是否被缓冲。如果页面未被缓冲,则写入此 JspWriter 对象的输出将直接写入 PrintWriter,如有必要,将通过对响应对象调用 getWriter() 方法创建 PrintWriter。但是,如果页面被缓冲,则在刷新缓冲区之前不会创建 PrintWriter 对象,并且 setContentType() 之类的操作是合法的。因为这种灵活性显著简化了编程,所以默认情况下将对 JSP 页面进行缓冲。
缓冲会带来超出缓冲区时该如何处理的问题。可以采用两种方法:
- 超出缓冲区不是致命错误;在超出缓冲区时,只需刷新输出即可。
- 超出缓冲区是致命错误;在超出缓冲区时,引发一个异常。
两种方法都有效,并且在 JSP 技术中都得到支持。页面的行为由 autoFlush 属性控制,该属性的默认值为 true。通常,需要确保已将正确且完整的数据发送到其客户端的 JSP 页面可能想将 autoFlush 设置为 false,比如客户端是应用程序自身的情况。另一方面,发送有意义的数据(即使只构造了一部分时)的 JSP 页面可能想将 autoFlush 设置为 true;比如发送要通过浏览器立即显示的数据时。每个应用程序都需要考虑自己的特定需求。
一个可以考虑的选择是不设置缓冲区大小界限;但是,这又带来了计算不受控制的弊病,将消耗数量无法估计的资源。
JSP 实现类的 "out" 隐式变量就属于这种类型。如果页面指令选择 autoflush="true",那么在导致溢出情况时,或者在当前操作是在没有进行刷新的情况下执行的时候,此类上的所有 I/O 操作都将自动刷新缓冲区的内容。如果 autoflush="false",那么在执行当前操作将导致缓冲区溢出的情况下,此类上的所有 I/O 操作都将抛出 IOException。
PageContext
|
作者:禅楼望月
出处:http://www.cnblogs.com/yaoyinglong
如果,您认为阅读这篇博文让您有些收获,不妨点击一下右下角的【推荐】
如果,您希望这篇博文也能帮助到其他人,不妨点击一下右边的【分享到…】
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】
如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【禅楼望月】
本文版权归作者和博客园共有,欢迎转载,但请注明出处,且在文章页面明显位置给出原文连接。