24_Jsp_9大内置对象_4大域对象

来源:互联网 发布:算法工程师课程 编辑:程序博客网 时间:2024/06/07 08:29

9大内置对象

内置对象不能在<%! %>中使用!

这里写图片描述

1)out对象

out对象是javax.servlet.jsp.JspWriter的实例,代表jsp的输出流,用于输出内容形成html页面。

  • out对象一些方法:
    1. out.println( ):输出完成后会换行,换行效果在页面中不显示只在源码中显示
    2. out.print( ):输出后不换行
    3. out.getBufferSize( ):输出缓冲区大小
    4. out.getRemaining( ):输出剩余缓冲区大小
    5. out.clear( ):清空缓冲区,不将数据发送至客户端
    6. out.clearBuffer( ):将数据发送至客户端,再清空缓冲区
    7. out.flush( ):输出缓冲区内容
    8. out.close( ):关闭输出流

2)request对象

request对象是jsp中的重要对象,每个对象封装着一次用户请求,并且所有对请求参数都被封装在request对象中,request对象是获取用户请求参数的重要途径。

  • request对象的一些方法:

    1. request.getMethod( ):获取请求的方法名,如get,post.
    2. request.getRequestURI( ):获取请求资源名.如请求访问:/jspstudy/08/request.jsp
    3. request.getProtocol( ):获取请求使用的协议.如:HTTP/1.1
    4. request.getServerName( ):获取请求使用的服务器,如:localhost.
    5. request.getServerPort( ):获取请求使用的服务器端口,如:8080
    6. request.getRemoteAddr( ):获取客户端的ip地址.
    7. request.getRemoteHost( ):获取客户端主机.
    8. request.getParameter( ):获取传递过来的参数值.
    9. request.getParameterValues( ):请求参数有多个值时,该方法返回多个值组成的数组.
    10. request.setAttribute( ):用来在同一个request周期中保存变量使用;setAttribute( )方法和RequestDispatcher.forward()都在一起使用。
    11. request.getAttribute( ):可得到JSP页面一表单中控件的Value
    12. request.getRequestDispatcher( ).forward( ):请求转发
  • 测试

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>request方法</title></head><body><form action="" method="post">  username:<input type="text" name="username"><br/>  <input type="submit">  请求方法名:<%=request.getMethod() %><br/>  请求的资源:<%=request.getRequestURI() %><br/>  请求使用的协议:<%=request.getProtocol() %><br/>  请求使用的服务器:<%=request.getServerName() %><br/>  请求使用的服务器端口:<%=request.getServerPort() %><br/>  客户端的IP地址:<%=request.getRemoteAddr() %><br/>  客户端主机:<%=request.getRemoteHost() %><br/>  表单提交过来的值:<%=request.getParameter("username") %><br/> </form></body></html>
  • 输出
请求方法名:POST请求的资源:/jspstudy/08/request.jsp请求使用的协议:HTTP/1.1请求使用的服务器:localhost请求使用的服务器端口:8080客户端的IP地址:0:0:0:0:0:0:0:1客户端主机:0:0:0:0:0:0:0:1表单提交过来的值:test

3)response对象

response对象用于服务器对客户端的响应,大部分时候使用out对象向页面输出,但是out对象是JspWriter对象的实例,JapWriter是Writer的子类,Writer是字符流,因此out对象无法输出非字符内容。jsp页面需要输出图片、pdf文档、excel等非字符对象时需要使用response作为响应输出;response还可以用于重定向,向客户端增加cookie.

  • 常用方法:

    1. addCookie(Cookie):添加cookie
    2. setHeader(String name,String value):设置头信息。
    3. sendRedirect( ):重定向,类似于客户端跳转
    4. getOutputStream( ):输出流
  • 常用用法:

    1. 定时刷新:response.setHeader("refresh","2"):2秒刷新一次。
    2. 定时跳转:response.setHeader("refresh","2;URL=hello.jsp"):2秒后跳转到hello.jsp。注:此为客户端跳转;
    3. 客户端跳转:response.sendRedirect("hello.jsp");
      注意:以上(2)用法可能会失败,原因是用户在2秒内刷新了页面,导致refresh失效;

4)session对象

session对象代表一次用户会话,一次用户会话的含义是:从客户端连接服务器开始,到客户端与服务器断开为止,这个过程就是一次会话。
session通常用于跟踪用户的会话信息,如判断用户是否登录,购物车中跟踪用户购买的商品。
session范围的属性可以在多个页面点跳转之间共享,一旦关闭浏览器,session结束,session范围内的属性就会全部丢失。

  • session常用方法:
    1. String getId( ):获得Session Id。Session Id类似于Cookie的JSessionId,是服务器自动分配的;
    2. session.setAttribute(key , value):设置属性。
    3. session.getCreationTime( ):获得创建时间。
    4. session.getLastAccessedTime( ):获得最后访问时间。
    5. session.isNew( ):这个Session是否是新的,即判断Session Id。
    6. session.invalidate( ):把session的属性设置全部清空。
  • 登录-注销页面:
    1. 使用session.setAttribute( )注册。
    2. 使用session.getAttribute( )判断是否已经注册。
    3. 使用session.invalidate( )注销。

5)page对象

代表该页面本身,通常没有太大用处。

6)pageContext对象

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

  1. pageContext.forward(String)
  2. pageContext.include(String)
  3. pageContext.getServletConfig( )
  4. pageContext.getServletContext( )
  5. pageContext.getRequest( )
  6. pageContext.geResponse( )
  7. pageContext.getSession( )

    • 也就是说,只要有了pageContext对象,就能完成一切内置对象的功能;

7)application对象

jsp、servlet之间不能相互调用,为了解决jsp和servlet之间数据交换的问题,web服务器提供了四个对象,分别是application、session、request、page。放入application对象中的数据对整个Web应用有效,一旦jsp、servlet将数据放入application对象之中,该数据可以被该应用下其它jsp、servlet访问。

  • 常用方法:
    1. getRealPath(path):获得真实路径。
    2. getContextPath( ):获得虚拟路径。
    3. getInitParameter(String )
//我们可以在web.xml中添加初始化参数:[html] view plain copy<context-param>      <param-name></param-name>      <param-value></param-value>  </context-param>  application==this.getServletContext()

8)config对象

config对象代表当前jsp配置信息,但jsp页面通常无需配置,该对象在jsp页面中较少使用,在servlet中使用较多。

  • 如果将一个hello.jsp文件放到WEB-INF中,如果能够让其能够被访问。
    答案就是在WEB-INF/web.xml设置即可,内容如下:
<servlet>    <servlet-name>he</servlet-name>    <jsp-file>/WEB-INF/hello.jsp</jsp-file></servlet><servlet-mapping>    <servlet-name>he</servlet-name>    <url-pattern>hello</url-pattern></sevlet-mapping>重启服务器后,则在地址栏输入http://localhost:8080/test/hello即可。
  • config常用方法:

    1. getInitParameterNames( )
    2. getInitParameter(String name)
  • 什么是初始化参数呢?
    初始化参数在web.xml中进行配置,形式如下:

<servlet><init-param>    <param-name>name</param-name>    <param-value>value</param-value></init-param></servlet>

9)exception对象

exception对象是Throwable的实例,代表jsp脚本中产生的错误和异常,是jsp页面异常机制的一部分。把page指令的isErrowPage属性设置为true时可以访问exception内置对象。

  • 常用方法:
    1. getMessage( );

这里写图片描述

4大域对象

  1. request——HttpServletRequet
  2. session——HttpSession
  3. application——ServletContext
  4. page——PageContext

    • 这四个对象有3个方法:
      1)void setAttribute(String key,Object o)//设置属性
      2)Object getAttribute(String key)//取得后要向下转型
      3)void removeAttribute(String key)//删除属性
      注意:在getAttribute之后一定要转型!
//举例:pageContext.setAttribute("name","xiazdong");//只能在单个页面中进行保存String name = (String)pageContext.getAttribute("name");//换了一个页面后就无法取得//注意:尽可能在满足功能的前提下,将属性设置的保存范围尽可能的小。这样能够提高性能;