jsp/servlet相关技术 (四) --- jsp的内置对象(一)

本文深入探讨了JSP页面中的9个内置对象,详细介绍了它们的作用和用途,包括application、config、exception、out、page、pagecontext、request、response和session。此外,文章还阐述了这些对象之间的区别以及如何在Web开发中利用它们实现数据共享、错误处理和页面输出等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        jsp脚本中包含9个内置对象,这9个内置对象都是servlet  API接口的实例,只是jsp规范对他们进行了默认初始化(由jsp页面对应servlet的_jspservice()方法来创建这些实例)。也即是说,他们已经是对象,可以直接使用。9个内置对象为:

        1、application:javax.servlet.servletContext的实例,该实例代表jsp所属的web应用本身,可用于jsp页面,或者在servlet之间交换信息。常用的方法有getattribute(string  attname)、setattribute(string attname,string attvalue)和getinitparameter(string  paramname)等。

        2、config:javax.servlet.servletconfig的实例,该实例代表该jsp的配置信息。常用的方法有getinitparameter(string  paramname)和getinitparameternames()等方法。事实上,jsp页面通常无需配置,也就不存在配置信息。因此,该对象更多的在servlet中有效。

        3、exception:java.lang.throwable的实例,该实例代表其他页面中的异常和错误。只有当页面是错误处理页面,即编译指令page的iserrorpage属性为true时,该对象才可以使用。常用的方法有getmessage()和printstacktrace()等。

        4、out:javax .servlet.jsp.jspwriter的实例,该实例代表jsp页面的输出流,用于输出内容,形成html页面。

        5、page:代表页面本身,也就是servlet中的this,其类型就是生成的servlet类,能用page的地方就用this。

        6、pagecontext:javax.servlet.jsp.pagecontext的实例,该对象代表该jsp页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getservletcontext()和getservletconfig()等。

        7、request:javax.servlet.http.httpservletrequest的实例,该对象封装了一次请求,客户端的请求参数都被封装在该对象中。这是一个常用对象,获取客户端请求参数必须使用该对象。常用的方法有getparameter(string  paramname)、getparametervalues(string  paramname)、setattribute(string attrname , object  attrvalue)、getattribute(string  attrname)和setcharacterencoding(string  env)等。

        8、response:javax.servlet.http.httpservletresponse的实例,代表服务器对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象常用于重定向,常用的方法有getoutputstream()、sendredirect(java.lang.string  location)等。

        9、session:javax.servlet.http.httpsession的实例,该对象代表一次会话。当客户端浏览器与站点建立连接时,回话开始;当客户端关闭浏览器时,会话结束。常用的方法有:getattribute(string  attrname)、setattribute(string  attrname,object  attrvalue)等。

         在jsp页面对应生成的servlet类文件中:

        

         1、application对象

         对于大部分的浏览器而言,它通常负责完成三件事情:

        (1)向远程服务器发送请求

        (2)读取远程服务器返回的字符串数据

        (3)负责根据字符串数据渲染出一个丰富多彩的页面

         对于客户端的请求,web服务器响应步骤如下:

       (1)启动单独的线程

       (2)使用I/O流读取用户的请求数据

       (3)从请求数据中解析参数

       (4)处理用户请求

       (5)生成响应数据

       (6)使用IO流向客户端发送请求数据

         jsp、servlet之间如何交换数据:几乎所有web服务器都会提供4个类似map的结构,分别是application、session、request、page,并允许jsp、servlet将数据放入其中,也允许从其中取出数据。这4个map结构的区别是范围不同:

        application:对于整个web应用有效,一旦jsp、servlet将数据存入application中,该数据将可以被该应用下其他所有的jsp、servlet访问。

        session:仅对一次会话有效,一旦jsp、servlet将数据放入session中,该数据将可以被本次会话的其它所有的jsp、servlet访问。

        request:仅对本次请求有效,一旦jsp、servlet将数据放入request中,该数据将可以被该次请求的其它jsp、servlet访问。

        page:仅对当前页面有效,一旦jsp、servlet将数据放入page中,该数据只看了一被当前页面的jsp脚本、声明部分访问。

        application对象代表web应用本身,因此使用application来操作web应用的相关数据。application对象通常有如下两个作用:

       (1)在整个web应用的多个jsp、servlet之间共享数据

       (2)访问web应用的配置参数

         ①、让多个jsp、servlet共享数据

         application通过setattribute(string attrname ,object  value)方法将一个值设置成application的attrname属性,该属性的值对整个web应用有效,访问属性的方法为getattribute(string attrname)。

         ②、获取web应用配置参数

        

        上边代码使用application的getinitparameter(string      paramname)来获取web应用的配置参数,这些参数在web.xml文件中使用context-param元素配置。

       

        2、config对象

        config对象代表当前jsp配置信息,该对象在servlet中用处较大,因为servlet需要在web.xml文件中进行配置,可以指定配置参数。

        使用config获取jsp配置参数:

       

       web.xml文件中的对应配置:

      

       3、exception对象

       exception对象是throwable的实例,代表jsp脚本中产生的错误和异常,是jsp页面异常机制的一部分。

       在jsp的异常处理机制中,一个异常处理页面可以处理多个jsp页面脚本部分的异常。异常处理页面通过page指令的errorpage属性确定。

       当jsp页面page指令的iserrorpage为true时,该页面就会提供exception对象。

       4、out对象

       out对象代表一个页面输出流,通常用于在页面上输出变量值及常量。一般使用输出表达式的地方,都可以使用out对象达到同样的效果。

      

      注意:<%=.... %>的本质就是out.write(......)

      5、pagecontext对象

      这个对象代表页面上下文,该对象主要用于访问jsp之间的共享数据。使用pagecontext可以访问page、request、session、application范围的变量。

      pagecontext是pagecontext类的实例,它提供了如下两个方法访问page、request、session、application范围的变量。

                  (1)getattribute(string   name):取得page范围内的name属性

                  (2)getattribute(string   name, int scope):取得指定范围的name属性,其中scope可以是如下4个值:

                            ①、pagecontext.page_scope:对应于page范围。

                            ②、pagecontext.request_scope:对应于request范围。

                            ③、pagecontext.session_scope:对应于session范围。

                            ④、pagecontext.application_scope:对应于application范围。

        pagecontext还可用于获取其他内置对象,pagecontext对象包含一下方法:

         ①、servletrequest    getrequest():获取request对象

         ②、servletresponse      getresponse():获取response对象

         ③、servletconfig       getservletconfig():获取config对象

         ④、servletcontext       getservletcontext():获取application对象

         ⑤、httpsession      getsession():获取session对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值