JSP page对象详解
page对象是java.long.Object类的实例。它指向当前JSP页面本身,有点像类中的this指针,用于设置JSP页面的属性,这些属性将用于和JSP容器通信,控制所生成的servlet结构。
语法
<%@ page attr="value1" attr="value2" ... %> // xml语法格式 <jsp:directive.page attr="value1" attr="value2" ... />
属性
1. import
page指令中唯一容许在同一文档出现多次的属性。属性的值可以以逗号隔开。它指定jsp页面转换成servlet应该输入的包。对于没有明确指定包的类,将根据jsp页面所在的包(生成的servlet的目录)决定类的包的位置。这意味着,将在jsp页面所在的包来寻找该类。注意一定要将实用工具类和bean包放在指定的包中,不要依赖于自动导入。
2. language
用于指定在脚本元素中使用的脚本语言,默认java。在jsp2.0规范中,只能是java。
3. contentType和pageEncoding
contentType属性设置发送到客户端文档的响应报头的MIME类型和字符编码。多个使用;号分开。pageEncodeing属性只用于更改字符编码。servlet默认MIME是text/plain,jsp默认MIME是text/html。
4. session
session控制页面是否参与会话,默认true。如果存在已有会话,则预定义session变量,绑定到已有会话中。否则创建新会话将其绑定到session。设置false表示不自动创建新会话,在jsp页面转换为servlet时,这时对变量session的访问导致错误。设置为false并不是禁用会话跟踪,它只是阻止jsp页面为不拥有会话的用户创建新会话。注意对于不需要会话跟踪的页面那就设置为false;当设置为false时session对象是不可访问的。
5. isELlgnored
定义在jsp页面中是否执行或忽略EL表达式。true表示忽略,false表示执行。默认值依赖于web.xml的版本。servlet2.3之前默认true,servlet2.4默认false。用于JSP版本不一致造成使用EL表达式出现的问题。使用:isELlgnored="true";
6. buffer和autoFlush
buffer属性指定out对象(JspWriter)使用的缓冲区大小,以kb为单位,默认8kb,none表示不使用缓冲区。这样要求设置报头或状态代码的jsp元素要出现在文件的顶部,任何HTML内容之前。
autoFlush属性控制当缓冲区满了后,是自动清空输出缓冲区(默认true),还是在缓冲区溢出后抛出异常(false)。在buffer=none的时候,autoFlush=false是错误的。
7. info
定义一个可以在servlet中通过getServletInfo方法获取的字符串。jsp容器做的是在servlet中生成getServletInfo方法返回info属性指定的String。
8. errorPage和isErrorPage
errorPage属性用来指定一个jsp页面,由该页面来处理当前页面中抛出但没有捕获的任何异常。指定的页面可以通过exception变量访问异常信息。
isErrorPage属性表示当前页是否可以作为其他jsp页面的错误页面。true或false。错误页面应该放在WEB-INF目录下面,只让服务器访问,也不会生成转发的调用,客户端只能看到最初的请求页面URL,看不到错误页面的URL。
如果为整个web应用程序指定错误页面,或为应用中不同类型的错误指定错误处理页面,使用web.xml中的error-page元素。如果一个页面通过该属性定义了专有的错误页面,那么在web.XML文件中定义的任何错误页面不会被使用。只能够在错误处理页面中使用错误对象exception。
9. isThreadSafe
控制由jsp页面生成的servlet是否允许并发访问(默认true允许)。这种阻止并发访问的实现是基于SingleThreadModel接口。所以,避免使用isThreadSafe属性。
10. extends
尽量避免使用。这是服务器提供商该做的事情。父类必须是对HttJspPage接口的实现类。而HttJspPage是应用于HTTP协议的请求和响应的JspPage扩展接口。
常用方法
class getClass() 返回此Object的类
int hashCode() 返回此Object的hash码
boolean equals(Object obj) 判断Object是否与指导的Object对象相等
void copy(Object obj)把此Object拷贝到指定的Object对象中
Object clone()克隆此Object对象
String toString()把此Object对象转换成String类的对象
void notify()唤醒一个等待的线程
void notifyAll()唤醒所有等待的线程
void wait(int timeout)使一个线程处于等待直到timeout结束或唤醒
void wait()使仪的线程处于等待直到被唤醒
例子
1. 为JSP页面指定编码
<%@ page language="java" contentType="text/html;charset=GBK"%> <html> <head> </head> <body> <center><h2>这里是contentType属性的设置测试</h2></center> </body> </html>
2. 使用word进行页面显示
<%@ page language="java" contentType="application/msword;charset=GBK"%> <html> <head> </head> <body> <center><h2>使用word进行页面显示</h2></center> </body> </html>
3. 可能会出现错误的页面设置错误页
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%> <%@ page errorPage="error.jsp"%> <html> <head> </head> <body> <center><h2>errorPage属性测试</h2></center> </body> </html>
page对象就是页面实例的引用。它可以被看做是整个JSP页面的代表。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。