• 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>

     

  • 相关阅读:
    AOP
    session的一些原理
    HttpContext.Cache和Application的区别
    什么是COM组件
    MS—SQL数据库索引的应用
    会话状态(转)
    LINQ体验(6)——LINQ语句之Join和Order By(转)
    永远不停止学习,才是程序员最大的财富,欢迎加入CMS研究室
    面向对象
    从瀑布型开发到迭代型开发的转变
  • 原文地址:https://www.cnblogs.com/goxcheer/p/7272283.html
Copyright © 2020-2023  润新知