JSP的隐含对象

    在JSP容器生成的Servlet类的_jspService()方法中,定义了几个对象,而这些对象就是我们在编写JSP页面时,可以使用的隐含对象。要注意的是,因为这些隐含对象是在_jspService()方法中定义的,所以我们只能在脚本段和表达式中使用这些对象。

    在JSP页面中,总共有9个隐含对象:











    1.1 pageContext
    pageContext对象提供了访问其他隐含对象的方法:
    ▶public abstract javax.servlet.ServletRequest getRequest()
    ▶public abstract javax.servlet.ServletResponse getResponse()
    ▶public abstract javax.servlet.http.HttpSession getSession()
    ▶public abstract javax.servlet.ServletContext getServletContext()
    ▶public abstract JspWriter getOut()
    ▶public abstract javax.servlet.ServletConfig getServletConfig()
    ▶public abstract java.lang.Object getPage()
    ▶public abstract java.lang.Exception getException()
    在pageContext对象中,可以使用两个方法来保存和获取属性:
    ▶public abstract void setAttribute(java.lang.String name,java.lang.Object value)
    ▶public abstract java.lang.Object getAttribute(java.lang.String name)
    在pageContext对象中保存的属性,只能在当前页面中去获取,也就是说,pageContext对象具有页面范围。
    利用pageContext对象,还可以设置和得到在其他范围对象中保存的属性:
    ▶public abstract void setAttribute(java.lang.String name,java.lang.Object value,int scope)
    ▶public abstract java.lang.Object getAttribute(java.lang.String name,int scope)
    其中scope参数用来指定要获取哪一个范围对象的属性,有四个可能的取值,其中PageContext.PAGE_SCOPE表示页面范围,PageContext.REQUEST_SCOPE表示请求范围,PageContext.SESSION_SCOPE表示会划范围,PageContext.APPLICATION_SCOPE表示WEB应用程序范围。
    在PageContext对象中,有两个方法来删除范围中的属性:
    ▶public abstract void removeAttribute(java.lang.String name,int scope)删除指定范围内名字为name的属性。
    ▶public abstract void removeAttribute(java.lang.String name)删除所有范围内名字为name的属性。
    PageContext对象还提供了搜索属性的方法:
    ▶public abstract java.lang.Objedt findAttribute(java.lang.String name)该方法会按照page,request,session和application范围的顺序搜索指定名字的属性,如果找到则返回属性的值,如果没有找到,则返回null。
    PageContext对象也提供了请求转发的两个方法forward()和include(),其中内部实现是调用RequestDispatcher对象的forward()和include()方法。
    2.2 out
    out对象的类型是javax.servlet.jsp.JspWriter,该类从java.io.Writer类派生,以字符流的形式输出数据。out对象实际上是PrintWriter对象的带缓冲的版本(在out对象内部使用PrintWriter对象来输出数据),可以通过page指令的buffer属性来调整缓冲区的大小,默认的缓冲区是8kb。
    在out对象中,提供了几个和缓冲区操作相关的方法:
    ▶public abstract void clear() throws java.io.IOException 清除缓冲区中的内容。如果缓冲区已经被刷新,将抛出IOException异常。
    ▶public abstract void clearBuffer() throws java.io.IOException 清除缓冲去中的当前内容。这个方法和clear()方法的区别是,如果缓冲区已经被刷新,这个方法不会抛出IOException异常。
    ▶public abstract void close() throws java.io.IOException 刷新缓冲区,关闭输出流。注意,在编写JSP页面时,不需要显示地去掉用这个方法,因为在JSP容器所生成的代码中会自动包含对close()方法的调用。
    ▶public int getBufferSize() 获取out对象使用的缓冲区的大小。
    ▶public abstract int getRemaining() 获得缓冲区中未使用的字节数。
    ▶public boolean isAutoFlush() 判断out对象是否是自动刷新。
    out对象针对不同的数据类型,提供了多个重载的print()和println()方法,用于输出数据。要注意的是,虽然println()方法会输出一个换行,但是客户端的浏览器在显示页面时会忽略输出的换行。
    3.3 page
    page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:
Object page = this;
    4.4 exception
    exception对象表示了JSP页面运行时产生的异常,该对象只有在错误页面(在page指令中指定属性isErrorPage=true的页面)中才可以使用。
    在JSP页面中,可以利用page指令的errorPage属性指定一个错误处理页面,当JSP页面运行发生错误时,JSP容器会自动调用指定的错误处理页面。如果一个JSP页面使用errorPage属性定义了错误页面,那么在web.xml文件中定义的任何错误页面将不会被使用。

好的,根据您的要求,以下是JSP隐含对象的教案。 一、授课形式: 本节课采用讲授和实例演示相结合的授课形式。讲授部分主要介绍JSP隐含对象的相关知识点,实例演示部分则通过具体案例演示,展示JSP隐含对象在实际开发中的应用。 二、教学目的与要求: 1. 理解JSP隐含对象的概念和作用; 2. 掌握JSP中的隐含对象及其作用; 3. 能够用JSP隐含对象实现数据传递和页面跳转等功能。 三、教学重点: 1. JSP隐含对象的概念和作用; 2. JSP中的隐含对象及其作用; 3. JSP中的数据传递和页面跳转等功能。 四、教学难点: 1. 掌握JSP中的隐含对象及其作用; 2. 理解JSP中数据传递和页面跳转等功能的实现原理。 五、教学方法与手段: 1. 讲授:通过PPT和板书等方式,介绍JSP隐含对象的相关知识点; 2. 实例演示:通过具体案例演示,展示JSP隐含对象在实际开发中的应用; 3. 互动讨论:通过提问、回答等方式,促进学生对JSP隐含对象的理解和掌握。 六、教学内容及过程设计: 1. JSP隐含对象概述 a. 什么是JSP隐含对象? b. JSP隐含对象的作用。 2. JSP中的隐含对象 a. request、response对象。 b. session、application对象。 c. out、pageContext对象。 d. config、page对象。 3. JSP中的数据传递 a. 在同一页面中传递数据。 b. 在不同页面中传递数据。 4. JSP中的页面跳转 a. 使用超链接实现页面跳转。 b. 使用表单实现页面跳转。 c. 使用脚本实现页面跳转。 七、作业: 1. 编写一个JSP页面,实现使用隐含对象完成数据传递和页面跳转的功能。 八、课后小结: 通过本节课的学习,我们了解了JSP隐含对象的相关知识点,掌握了JSP中的隐含对象及其作用,能够用JSP隐含对象实现数据传递和页面跳转等功能。在实际开发中,我们可以根据具体需求选择合适的JSP开发框架,以提高开发效率和应用性能。 九、参考资料: 1. 《Java Web开发技术详解》 2. 《JSP和Servlet技术教程》 3. 《Head First Servlets and JSP: Passing the Sun Certified Web Component Developer Exam》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值