zoukankan      html  css  js  c++  java
  • JSP页面的隐含对象和Servlet程序里的对象之间的关联和区别

    首先,有两个概念:

    1.JSP页面的域对象:pageContext,request,session,application对象(四个)

       void setAttribute(String name,Object o):设置属性名对应的属性值

       Object getAttribute(String name):获取指定属性名的属性值

       Enumeration getAttributeNames():获取所有的属性名组成的Enumeration对象

       removeAttribute(String name):移除指定属性名的属性

       pageContext<request<session<application对象(对属性的作用域的范围从小到大)都有这些方法,这四个对象称之为域对象。

       pageContext:属性的作用范围仅限于当前JSP页面

       request:属性的作用范围仅限于同一个请求

       session:属性的作用范围仅限于一次会话

       application:属性的作用范围限于当前WEB应用,是范围最大的属性作用范围。只要在一处设置属性,在其他各处的JSP或Servlet中都可以获取到。

    2.JSP页面的隐含对象:没有声明就可以使用的对象,共9个。

      ①request:HttpServletRequest的一个对象

      ②response:HttpServletResponse的一个对象

      ③pageContext:页面的上下文,是PageContext的一个对象。

        可以从该对象中获取到其他8个隐含对象,

        也可以从中获取到当前页面的其他信息(在自定义标签时,可以获取比如属性,参数等):

        定义一个类:HelloSimpleTag.java

        

       

    然后在TestTag.jsp页面里使用tt:helloSimple标签

    从上面的例子中可以看出,pageContext确实可以获取到request、out等对象。

    注意:不是说这9个对象就不能在servlet程序里调用,只是说在JSP页面里可以直接调用这9个对象而不需要先获取到对象。

            比如:在JSP页面就可以直接调用session对象:session.getAttribute。

            而在servlet程序里如果要调用session对象,必须先获取到session对象才可以使用:request.getSession().setAttribute。

           又比如在上面的HelloSimpleTag.java里,存在一个函数setJspContext,这个函数就传入了一个JspContext对象。所以我们可以利用该对象强转成pageContext对象,这样就在java程序里获取到了pageContext对象。于是此时才可以利用该对象获取其他隐含对象比如request、out等对象,然后再利用request、out去实现想实现的功能。

           

      ④session:代表浏览器和服务器的一次会话,是HttpSession的一个对象

      ⑤application:代表当前WEB应用,是ServletContext对象

      ⑥config:当前JSP对应的Servlet的ServletConfig对象(了解)

      ⑦out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上

      ⑧page:指向当前JSP对应的servlet对象的引用(了解)

       ⑨exception:在JSP文件的开头声明了Page指令的isErrorPage="true"时,才可以使用.

        <%@ page isErrorPage="true">

  • 相关阅读:
    一道某高大上互联网公司的笔试题分享
    人机博弈-吃子棋游戏(四)搜索算法
    人机博弈-吃子棋游戏(三)走法生成
    人机博弈,吃子棋游戏(二)如何算气
    eclipse手动导入dtd文件
    spring BeanFactory概述
    xp的虚拟机如何访问本地主机上的文件
    XML Schema 简介
    DTD 简介
    spring开发相关网址
  • 原文地址:https://www.cnblogs.com/TTTTT/p/6023541.html
Copyright © 2011-2022 走看看