• JSP内置对象 属性范围


    JSP内置对象概览

    内置对象概览
    NO 内置对象 类型 描述
    1 pageContext javax.servlet.jsp.PageContext JSP页面容器
    2 request javax.servlet.http.HttpServletRequest 得到用户的请求信息
    3 response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
    4 session javax.servlet.http.HttpSession 用来保存每一个用户的信息
    5 application javax.servlet.ServletContext 表示所有用户的共享信息
    6 config javax.servlet.ServletConfig 服务器配置,可以得到初始化参数
    7 out javax.servlet.jsp.JspWriter 页面输出
    8 page java.lang.Object 表示从该页面生成的一个servlet实例
    9 exception java.lang.Throwable 表示JSP页面发生的异常,错误页有效

    JSP 4种属性范围

      1.page:只在一个页面中保存属性,跳转后失效.

      2.request:只在一次请求中保存,服务器跳转后依然有效

      3.session:在一次会话范围中,无论何种跳转都可以使用,但是新开的浏览器无法使用.

      4.application:在整个服务器上保存,所有用户都可以使用.

        page属性(pageContext)

           

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>get and set pageContext Attribute</title>
     9 </head>
    10 <body>
    11 <%//设置页面属性,该属性仅在本页有效
    12     pageContext.setAttribute("name", "hx");
    13     pageContext.setAttribute("birthday",new Date());
    14 %>
    15 <%//获得页面属性,并向下转型
    16     String name = (String)pageContext.getAttribute("name");
    17     Date d = (Date) pageContext.getAttribute("birthday");
    18 %>
    19 <%//显示页面属性值
    20     out.println(name);
    21     out.println(d);
    22 %>
    23 
    24 </body>
    25 </html>

        在本页中正常显示.修改使其发生服务器跳转.

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>get and set pageContext Attribute</title>
     9 </head>
    10 <body>
    11 <%//设置页面属性,该属性仅在本页有效
    12     pageContext.setAttribute("name", "hx");
    13     pageContext.setAttribute("birthday",new Date());
    14 %>
    15 <%//获得页面属性,并向下转型
    16     String name = (String)pageContext.getAttribute("name");
    17     Date d = (Date) pageContext.getAttribute("birthday");
    18 %>
    19 <%//显示页面属性值
    20     out.println(name);
    21     out.println(d);
    22 %>
    23 <jsp:forward page="2getAndSetPageAttribute.jsp"/>
    24 
    25 </body>
    26 </html>
     1 <!-- 2getAndSetPageAttribute.jsp -->
     2 
     3 <%@ page language="java" contentType="text/html; charset=UTF-8"
     4     pageEncoding="UTF-8"%>
     5 <%@ page import="java.util.*" %>
     6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     7 <html>
     8 <head>
     9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    10 <title>Insert title here</title>
    11 </head>
    12 <body>
    13 <%//获得页面属性,并向下转型
    14     String name = (String)pageContext.getAttribute("name");
    15     Date d = (Date) pageContext.getAttribute("birthday");
    16 %>
    17 <%//显示页面属性值
    18     out.println(name);
    19     out.println(d);
    20 %>
    21 </body>
    22 </html>

     在发生跳转后,name和d均为null,pageContext仅本页有效

    request属性范围

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>request attribute scope</title>
     9 </head>
    10 <body>
    11 <%
    12 request.setAttribute("name", "hx");
    13 request.setAttribute("birthday",new Date());
    14 %>
    15 <%
    16 String name=(String)request.getAttribute("name");
    17 Date d = (Date)request.getAttribute("birthday");
    18 %>
    19 <%
    20 out.println(name);
    21 out.println(d);
    22 %>
    23 </body>
    24 </html>

     本页生效

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>request attribute scope</title>
     9 </head>
    10 <body>
    11 <%
    12 request.setAttribute("name", "hx");
    13 request.setAttribute("birthday",new Date());
    14 %>
    15 <%
    16 String name=(String)request.getAttribute("name");
    17 Date d = (Date)request.getAttribute("birthday");
    18 %>
    19 <%
    20 out.println(name);
    21 out.println(d);
    22 %>
    23 <jsp:forward page="request_scope2.jsp"></jsp:forward>
    24 </body>
    25 </html>
    26 
    27 request_scope2.jsp
    28 <%@ page language="java" contentType="text/html; charset=UTF-8"
    29     pageEncoding="UTF-8"%>
    30 <%@ page import="java.util.*" %>
    31 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    32 <html>
    33 <head>
    34 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    35 <title>Insert title here</title>
    36 </head>
    37 <body>
    38 <%
    39 String name=(String)request.getAttribute("name");
    40 Date d = (Date)request.getAttribute("birthday");
    41 %>
    42 <%
    43 out.println(name);
    44 out.println(d);
    45 %>
    46 </body>
    47 </html>

     服务器跳转生效

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>request attribute scope</title>
     9 </head>
    10 <body>
    11 <%
    12 request.setAttribute("name", "hx");
    13 request.setAttribute("birthday",new Date());
    14 %>
    15 <%
    16 String name=(String)request.getAttribute("name");
    17 Date d = (Date)request.getAttribute("birthday");
    18 %>
    19 <%
    20 out.println(name);
    21 out.println(d);
    22 %>
    23 <a href="request_scope2.jsp">客户端跳转</a>
    24 </body>
    25 </html>
    26 
    27 
    28 request_scope2.jsp
    29 
    30 <%@ page language="java" contentType="text/html; charset=UTF-8"
    31     pageEncoding="UTF-8"%>
    32 <%@ page import="java.util.*" %>
    33 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    34 <html>
    35 <head>
    36 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    37 <title>Insert title here</title>
    38 </head>
    39 <body>
    40 <%
    41 String name=(String)request.getAttribute("name");
    42 Date d = (Date)request.getAttribute("birthday");
    43 %>
    44 <%
    45 out.println(name);
    46 out.println(d);
    47 %>
    48 </body>
    49 </html>

     使用超连接(客户端跳转后)属性值无效.

    session属性范围

     1 <%@ page language="java" contentType="text/html; charset=UTF-8"
     2     pageEncoding="UTF-8"%>
     3 <%@ page import="java.util.*" %>
     4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
     5 <html>
     6 <head>
     7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     8 <title>Insert title here</title>
     9 </head>
    10 <body>
    11 <%
    12     session.setAttribute("name", "hx");
    13     session.setAttribute("birthday",new Date());
    14 %>
    15 <%
    16     String name = (String)session.getAttribute("name");
    17     Date d = (Date)session.getAttribute("birthday");
    18 %>
    19 <%
    20     out.println(name);
    21     out.println(d);
    22 %>
    23 
    24 </body>
    25 </html>

     

     本页有效

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.*" %>
    <!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>
    <%
        session.setAttribute("name", "hx");
        session.setAttribute("birthday",new Date());
    %>
    <%
        String name = (String)session.getAttribute("name");
        Date d = (Date)session.getAttribute("birthday");
    %>
    <%
        out.println(name);
        out.println(d);
    %>
    <a href="session_scope2.jsp">test session scope</a>
    </body>
    </html>
    
    session_scope2.jsp
    
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.*" %>
    <!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>
    <%
        String name = (String)session.getAttribute("name");
        Date d = (Date)session.getAttribute("birthday");
    %>
    <%
        out.println(name);
        out.println(d);
    %>
    </body>
    </html>

     客户端转发也有效

    application

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.*" %>
    <!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>
    <%
        application.setAttribute("name", "hx");
        application.setAttribute("birthday",new Date());
    %>
    <%
        String name = (String)application.getAttribute("name");
        Date d = (Date)application.getAttribute("birthday");
    %>
    <%
        out.println(name);
        out.println(d);
    %>
    <a href="applicaion_scope2.jsp">test application scope</a>
    </body>
    </html>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.*" %>
    <!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>
    <%
        String name = (String)application.getAttribute("name");
        Date d = (Date)application.getAttribute("birthday");
    %>
    <%
        out.println(name);
        out.println(d);
    %>
    </body>
    </html>

     在A浏览器中访问第一段代码所在URL,然后在B浏览器中访问第二段代码所在URL,显示正常

    重访PageContext:

        在page.setAttribute()方法是一个重写方法.

             一个是public void setAttribute(String name, Object value)

             一个是public void setAttribute(String name, Object value, int scope)

                     在此方法中的int scope相当于选择范围,可选的数为

                                 1.public void final int PAGE_SCOPE;                      表示page属性范围

                                 2.public void final int REQUEST_SCOPE;               表示request属性范围

                                 3.public void final int SESSION_SCOPE;                 表示session属性范围

                                 4.public void final int APPLICATION_SCOPE;         表示application属性范围

           pageContext对象可以随意设置属性范围,默认为page属性,而其他操作是对这一功能的包装.习惯上仅让pageContext具有page属性范围

  • 相关阅读:
    opencv-python与c++ opencv中的一些区别和基础的知识
    使用TensorFlow Object Detection API+Google ML Engine训练自己的手掌识别器
    使用Google Cloud Platform构建机器学习项目-宠物识别
    dlib下训练自己的物体检测器--手的检测
    python学习--Linux下dlib安装(主要是cmake和boost的安装)
    Python学习--使用dlib、opencv进行人脸检测标注
    《Python网络编程》学习笔记--UDP协议
    《Python网络编程》学习笔记--从例子中收获的计算机网络相关知识
    《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
    Spring Cloud Gateway:使用ReadBodyPredicateFactory读取request的body,可能无法匹配404
  • 原文地址:https://www.cnblogs.com/slowalker-lee/p/7894913.html
Copyright © 2020-2023  润新知