Jsp九大内置对象和4大作用域

一.在java开发中,jsp提供了9个内置的对象,这些内置对象将由容器为用户进行实例化,用户直接使用。

这9个内置对象分别为:pageContext,request,response,session,

          application,config,out,page,exception。

常用的为前面5个

  1. page  :  代表该页面本身,也就是 Servlet 中的 this ,能用 page 的地方就可以用 this .即Object page=this

  2. request   : 客户端的请求参数都被封装在该对象里。这是一个常用对象,获取客户端请求参数必须使用该对象。

                 常用方法:getParameter(String paramName)、getParameterValues(String paramName)、setAttribute(String arrtName,Object      attrValue)

                                      getAttribute(StringattrName) 和 setCharacterEncoding(String env)等。

  3. response:和request相对应,用于服务器响应客户端请求,向客户端输出信息。javax.servlet.HttpServletResponse接口

  4.session  : 该对象代表一次会话。当客户端与站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。常用方法: getAttribute(String 

              attrName)、       setAttribute(String attrName, Object attrValue) 等。

  5.appliction   :该实例代表 JSP 所属的 WEB 应用本身,用于 JSP 页面,或者在 Servlet 之间信息交换。 常用方法有 getAttribute( name , value)、

          setAttribute(  name , value)、getInitParameter( name )  等。

  6.pageContext:  代表 JSP 页面上下文,它相当于页面中所有对象功能的集合,可以访问页面中的共享数据。 常用方法有:getServletContext() 和

          getServletConfig() 等

  7.out  :  JSP 页面输出流,用于输出内容,形成 HTML 页面。同时也能管理应用服务器上的输出缓存区,底层:javax.servlet.jsp.jspWriter抽象类

  8.config: Jsp页面通过jsp容器初始化时被传递的对象,javax.servlet.ServletConfig.在servlet初始化时,jsp引擎通过config向它传递信息,信息可以是属性名

        和属性值匹配的参数,也可以是servletCtext传递的服务器有关信息

  9.exception:代表页面中的异常和错误。只有页面是错误处理页面,page 的isErrorPage 属性为 true 时该对象才可以使用。常用方法 getMessage()  、

         printStrackTrace()等,它是java.lang.Throwable的一个对象

(下面会给常用的对象一些例子)

二.在jsp开发中,可以保存四种数据保存范围:分别为page,request,session,application。

page范围:只在一个页面中保存数据。javax.servlet.jsp.PageContext(抽象类)

request范围:只在一个请求中保存数据。javax.servlet.http.HttpServletRequest(接口)

 session范围:在一个会话范围内保存数据,仅供单个用户使用:javax.servlet.http.HttpSession(接口)

application范围:在整个服务器上保存数据,所有用户共享:javax.servlet.ServletContext(接口)

 

内置对象的使用例子:

1.page

 <%
  //设置页面范围数据key->value
  pageContext.setAttribute("name","祁高翔");
  pageContext.setAttribute("age", 21);
  %>
  <%
  //取值
   String name=(String)pageContext.getAttribute("name");
   int age=(Integer)pageContext.getAttribute("age");
  %>
   <font color="blue" size=50px>姓名:<%=name %></font><br/>
   <font color="red" size=50px>年龄:<%=age %></font><br/> 

2.request

    <%
    //设置request范围的数据key->value
      request.setAttribute("name", "request祁高翔");
    request.setAttribute("age",21);
    %>
   <jsp:forward page="requestTarget.jsp">
   <jsp:param value="" name=""/>
   </jsp:forward>

 请求另外一个页面

<%
  String name=(String)request.getAttribute("name");
  int age=(Integer)request.getAttribute("age");
%>
       <font size=15px color="gray" face="宋体">已经跳转到Target页面</font><br>
 <font color="red" size=5px>姓名: <%=name %></font>
 <font color="red" size=5px>年龄: <%=age %></font>

3. session,application同request,只是数据保存的作用范围不同

4.response

4.1自动刷新应用

<%
//每隔一秒刷新一次
    response.setHeader("refresh","1");
//获取当前时间
  Date date=new Date();
%>
系统的当前时间是: <%=date.toLocaleString()%>

 4.2页面重定向(不带参数)属于客户端跳转

 response.sendRedirect("index.html");

5.out

<body>
<% out.println("Goxcheer"); int total=out.getBufferSize();//获取总的缓存区大小 int available=out.getRemaining();//未使用的缓存区大小 int use=total-available;//获取使用的缓存区大小 out.println("总的缓存区大小"+total); out.println("未使用的缓存区大小"+available); out.println("获取使用的缓存区大小"+use); %>
</body>

 6.exception

注意要包含指令<%@page errorPage="error.jsp" %>

        <%@page isErrorPage="true" %>      

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@page errorPage="error.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
   <%
    int a=1;
   int b=0;
   out.write(a/b);
   %>
</body>
</html>

 

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%@page isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
 <%
 if(exception!=null){
	 out.println(exception.getMessage());
 }
 %>
</body>
</html>

 7.pageContext

<body>
 <%
 pageContext.setAttribute("name0","pageScore");
 request.setAttribute("name1", "requestScore");
 session.setAttribute("name2", "sessionScore");
 application.setAttribute("name3", "applicationScore");
 out.println("用pageContext访问页面中的"+pageContext.getAttribute("name0")+"<br>");
 out.println("用pageContext访问页面中的"+pageContext.getRequest().getAttribute("name1")+"<br>");
 out.println("用pageContext访问页面中的"+pageContext.getSession().getAttribute("name2")+"<br>");
 out.println("用pageContext访问页面中的"+pageContext.getServletContext().getAttribute("name3")+"<br>");
 %>
</body>

 

 

 

 

 

posted @ 2017-08-02 09:52  Goxcheer  阅读(156)  评论(0编辑  收藏  举报