首页 > 编程 > JSP > 正文

JSP隐式对象和MVC设计模式

2019-11-02 15:50:28
字体:
来源:转载
供稿:网友

 今天我们一起来了解一下关于JSP应用的JSP的隐式对像和MVC设计模式。

  首先我们先来说一下JSP的隐式对象:JSP隐式对象是Web容器加载的一组类的实例。它是可以直接在JSP页面使用的对象。分为4个主要类别:1、 输入和输出对象:控制页面的输入和输出(request、response、out)。

  2、 作用域通信对象:检索与JSP页面的Servlet相关的信息(session、application、pageContext)。

  3、 Servlet对象:提供有关页面环境的信息(page、config)。

  4、 错误对象:处理页面中的错误(exception)。

 

  我们先了解一下输入和输出对象:request对象:request隐式对象表示客户端的请求,包含了所有的请求信息,常用的方法:voidsetContentType(String name):设置作为响应生成的内容的类型和字符编码。

  void sendRedirect(Stringname):发送一个响应给浏览器,指示其应请求另一个URL(会丢失数据,跳转后不再执行sendRedirect方法下面的代码。

  out对象:在JSP页面中应使用out隐式对象来向客户端发送文本形式的实体内容。

  out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似。

  JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。

  JSP页面中的out隐式对象相当于插入到ServletResponse.getWriter方法返回的PrintWriter对象前面的缓冲包装类对象。

 

  只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:设置page指令的buffer属性关闭了out对象的缓存功能写入到out对象中的内容充满了out对象的缓冲区整个JSP页面结束作用域通信对象:pageContext对象是javax.servlet.jsp.PageContext类的实例对象,javax.servlet.jsp.PageContext类是javax.servlet.jsp.JspContext的子类。

  pageContext对象是通过调用JspFactory.getPageContext方法返回的。

  pageContext对象封装了当前JSP页面的运行信息,它提供了返回JSP页面的其他隐式对象的方法。

  在JSP页面中只需将pageContext对象传递给某个Java类的实例对象,在该Java对象中就可以访问和调用其他隐式对象的功能了。

  pageContext对象使用户可以访问当前页面作用域中定义的所有隐式对象。

 

  getException()方法返回exception隐式对象getPage()方法返回page隐式对象getRequest()方法返回request隐式对象getResponse()方法返回response隐式对象getServletConfig()方法返回config隐式对象getServletContext()方法返回application隐式对象getSession()方法返回session隐式对象getOut()方法返回out隐式对象PageContext类中定义了一个setAttribute方法来将对象存储进pageContext对象内部的一个HashMap对象中,同时也定义了一个getAttribute方法来检索存储在该HashMap对象中的对象。

  void setAttribute(String name, ob ject value) ob ject getAttribute(String name)

  (注意:PageContext类除了可以存储和检索自身中的属性对象外,还定义了可以存储和检索其他域范围内的属性对象的方法。)

  在application、session、request、pageContext对象中都可以调用setAttribute方法和getAttribute方法来设置和检索各自域范围内的属性。

  存储在application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表