• JSP中四种属性保存范围(1)


    一、四种属性范围

    在JSP中提供了四种属性保存范围

    page:在一个页面内保存属性,跳转之后无效
    request:在一次服务请求范围内,服务器跳转后依然有效
    session:-在一次会话范围内,无论何种跳转都可以使用,但是新开浏览器无法使用
    application:在整个服务器上保存,所有用户都可以使用

    名称

    作用域

    application

    在所有应用程序中有效

    session

    在当前会话中有效

    request

    在当前请求中有效

    page

    在当前页面有效

     

     

     

     

     

     

     

      

         置统一的请求编码:request.setCharacterEncoding("GBK");  

    1. 请求方式:<%=request.getMethod()%><br>  
    2. 请求的资源:<%=request.getRequestURI()%><br>  
    3. 请求用的协议:<%=request.getProtocol()%><br>  
    4. 请求的文件名:<%=request.getServletPath()%><br>  
    5. 请求的服务器的IP:<%=request.getServerName()%><br>  
    6. 请求服务器的端口:<%=request.getServerPort()%><br>  
    7. 客户端IP地址:<%=request.getRemoteAddr()%><br>  
    8. 客户端主机名:<%=request.getRemoteHost()%><br
     1 四种属性范围:
     2     page(pageContext):只在一个页面中保存属性。                      跳转之后无效。
     3     request:只在一次请求中有效,服务器跳转之后有效。                    客户端跳无效
     4     session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
     5     application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
     6     注意:如果设置过多的application属性范围会影响服务器性能
     7 
     8 page(pageContext)对象:
     9     pageContext.PAGE_SCOPE
    10     pageContext.REQUEST_SCOPE
    11     pageContext.SESSION_SCOPE
    12     pageContext.APPLICATION_SCOPE
    13     pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
    14             
    15 request对象:
    16     通过地址重写的方式进行传值:
    17     要访问的网页地址?参数1=值1&参数2=值2&...
    18     Request常用的方法:
    19     1.01 getParameter(String strTextName) 获取表单提交的信息。
    20         String strName=request.getParameter("name");
    21     1.02 getProtocol() 获取客户使用的协议。
    22         String strProtocol=request.getProtocol();
    23     1.03 getServletPath() 获取客户提交信息的页面。
    24         String strServlet=request.getServletPath();
    25     1.04 getMethod() 获取客户提交信息的方式,get|post。
    26         String strMethod = request.getMethod();
    27     1.05 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。
    28         String strHeader = request.getHeader("accept");
    29     1.06 getRermoteAddr() 获取客户的IP地址。
    30         String strIP = request.getRemoteAddr();
    31     1.07 getRemoteHost() 获取客户机的名称。
    32         String clientName = request.getRemoteHost();
    33     1.08 getServerName() 获取服务器名称。
    34         String serverName = request.getServerName();
    35     1.09 getServerPort() 获取服务器的端口号。
    36         int serverPort = request.getServerPort();
    37     1.10 getParameterNames() 获取客户端提交的所有参数的名字。
    38         Enumeration enum = request.getParameterNames();
    39           while(enum.hasMoreElements()){
    40                   String s=(String)enum.nextElement();
    41                   out.println(s);
    42          }
    43     1.11 getParameterValues()获取客户端提交的所有参数的名字对应的值。
    44         String[] inst = request.getParameterValues(paramName);
    45           for(String ss:inst){ 
    46                System.out.println(ss);
    47           }
    48 
    49 response对象:
    50     设置头信息setHeader():        
    51         response.setHeader("refresh","5; url=hello.jsp"); 5秒后自动跳转(jsp)    
    52         <meta http-equiv="refresh" content="5;url=hello.jsp" >  5秒后自动跳转(html)
    53     <jsp:forward/> 与  sendRedirect 区别:
    54         <jsp:forward page="hello.jsp"></jsp:forward> 执行到该语句立即跳转,后面的语句不执行
    55         response.sendRedirect("hello.jsp");    重定向。 执行完此页面再进行跳转
    56     cookie: 设置在客户端,安全性比较低    
    57     一个客户端上最多只能保存300个cookie。    
    58         addCookie();
    59         setHeader("Set-Cookie","名字=值");
           response.setHeader("refresh","1"); //每隔1秒刷新一次
          
    response.addCookie();
           Cookie [] c = request.getCookies();  
    60 session对象:每一个session代表了一个用户。
    61     获取session ID:
    62         String id = session.getId();
         
     String id = session.getId();   获取session ID  Manager 可以将session保存在本地上	   
          long start = session.getCreationTime(); //创建此会话的时间  
          long end = session.getLastAccessedTime();//客户端上一次发送与此会话关联的请求的时间,最后一次操作此会话时间
           

    1.page属性范围:

     1.设置page无跳转 属性范围,在当前jsp页面有效
    1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%> 2 <%@ page import="java.util.*" %> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <title>page属性范围</title> 7 </head> 8 <body> 9 <% 10 //设置page 属性范围,在当前jsp页面有效 11 pageContext.setAttribute("name", "liuyang"); 12 pageContext.setAttribute("age", "23"); 13 pageContext.setAttribute("birthday", new Date()); 14 %> 15 <% 16 String name=(String)pageContext.getAttribute("name"); 17 int age=Integer.parseInt((String)pageContext.getAttribute("age")); 18 Date birthday = (Date)pageContext.getAttribute("birthday"); 19 %> 20 <h1>姓名:<%=name %></h1> 21 <h1>年龄:<%=age %></h1> 22 <h1>生日:<%=birthday %></h1> 23 </body> 24 </html>

    2.设置page 属性范围-服务器跳转,服务器跳转后无效

       // page02.jsp
    1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%> 2 <%@ page import="java.util.*" %> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <title>page属性范围-服务器跳转</title> 7 </head> 8 <body> 9 <% 10 //设置page(pageContext) 属性范围,在当前jsp页面有效,只在一个页面中保存属性。 跳转之后无效。 11 pageContext.setAttribute("name", "liuyang"); 12 pageContext.setAttribute("birthday", new Date()); 13 %> 14 <jsp:forward page="page_03.jsp"></jsp:forward> 15 </body> 16 </html>
    //page03.jsp
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>page属性范围-服务器跳转</title>
     7     </head>
     8     <body>    
     9             <%
    10             String name=(String)pageContext.getAttribute("name");
    11             Date birthday = (Date)pageContext.getAttribute("birthday");
    12             %>
    13             <h1>姓名:<%=name %></h1>
    14             <h1>生日:<%=birthday %></h1>
    15     </body>
    16 </html>



     3.设置page 属性范围-客户端跳转,客户端跳转后无效 

     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>page属性范围-客户端跳转</title>
     7     </head>
     8     <body>    
     9         <%
    10             //设置page(pageContext) 属性范围,在当前jsp页面有效,只在一个页面中保存属性。 跳转之后无效。
    11             pageContext.setAttribute("name", "liuyang");
    12             pageContext.setAttribute("birthday", new Date());
    13         %>
    14         <a href="page_03.jsp">跳转</a>
    15         
    16     </body>
    17 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>page属性范围-客户端跳转</title>
     7     </head>
     8     <body>    
     9             <%
    10             String name=(String)pageContext.getAttribute("name");
    11             Date birthday = (Date)pageContext.getAttribute("birthday");
    12             %>
    13             <h1>姓名:<%=name %></h1>
    14             <h1>生日:<%=birthday %></h1>
    15     </body>
    16 </html>

    2.request属性范围:

      1.设置request 属性范围 - 服务器跳转,服务器跳转后有效,  客户端跳转后无效

     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>request属性范围—服务器跳转</title>
     7     </head>
     8     <body>
     9         <%
    10             //request:只在一次请求中有效,服务器跳转之后有效。 
    11             request.setAttribute("name", "liuyang");
    12             request.setAttribute("birthday", new Date());
    13         %>
    14         <jsp:forward page="request_02.jsp"></jsp:forward>
    15         
    16     </body>
    17 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>request属性范围—服务器跳转</title>
     7     </head>
     8     <body>
     9             <%
    10             //request:只在一次请求中有效,服务器跳转之后有效。  客户端跳转后无效
    11             String name=(String)request.getAttribute("name");
    12             Date birthday = (Date)request.getAttribute("birthday");
    13             %>
    14             <h1>姓名:<%=name %></h1>
    15             <h1>生日:<%=birthday %></h1>
    16     </body>
    17 </html>


    2.设置request 属性范围 客户端跳转,客户端跳转后无效

    
    
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>request属性范围—客户端跳转</title>
     7     </head>
     8     <body>
     9         <%
    10             //request:只在一次请求中有效,服务器跳转之后有效。  客户端跳无效
    11             request.setAttribute("name", "liuyang");
    12             request.setAttribute("birthday", new Date());
    13         %>    
    14         <a href="request_02.jsp">跳转</a>
    15     </body>
    16 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>request属性范围—客户端跳转</title>
     7     </head>
     8     <body>
     9             <%
    10             //request:只在一次请求中有效,服务器跳转之后有效。  客户端跳转后无效
    11             String name=(String)request.getAttribute("name");
    12             Date birthday = (Date)request.getAttribute("birthday");
    13             %>
    14             <h1>姓名:<%=name %></h1>
    15             <h1>生日:<%=birthday %></h1>
    16     </body>
    17 </html>

    3.session属性范围:

     1.session:服务器跳转。 再一次会话中有效。服务器跳转、客户端跳转都有效。  浏览器关闭重新打开无效

     
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>session 服务器跳转</title>
     7     </head>
     8     <body>
     9         <%
    10             //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
    11             session.setAttribute("name", "liuyang");
    12             session.setAttribute("birthday", new Date());
    13         %>
    14         <jsp:forward page="session_02.jsp"></jsp:forward>        
    15     </body>
    16 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>session 服务器跳转</title>
     7     </head>
     8     <body>
     9             <%
    10             //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
    11             String name=(String)session.getAttribute("name");
    12             Date birthday = (Date)session.getAttribute("birthday");
    13             %>
    14             <h1>姓名:<%=name %></h1>
    15             <h1>生日:<%=birthday %></h1>
    16     </body>
    17 </html>


    2.session 客户端跳转
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>session 客户端跳转</title>
     7     </head>
     8     <body>
     9         <%
    10             //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
    11             session.setAttribute("name", "liuyang");
    12             session.setAttribute("birthday", new Date());
    13         %>
    14         <a href="session_02.jsp">跳转</a>    
    15     </body>
    16 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>session 客户端跳转</title>
     7     </head>
     8     <body>
     9             <%
    10             //session:再一次会话中有效。服务器跳转、客户端跳转都有效。    网页关闭重新打开无效
    11             String name=(String)session.getAttribute("name");
    12             Date birthday = (Date)session.getAttribute("birthday");
    13             %>
    14             <h1>姓名:<%=name %></h1>
    15             <h1>生日:<%=birthday %></h1>
    16     </body>
    17 </html>

    3.关闭浏览器重新打开进入session_02.jsp无效

     

    4.application属性范围:

    1.application:服务器跳转     在整个服务器上保存,所有用户都可使用。   重启服务器后无效

     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>application 服务器跳转</title>
     7     </head>
     8     <body>
     9         <%
    10             //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
    11             //application.setAttribute("name", "liuyang");
    12             pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
    13             application.setAttribute("birthday", new Date());            
    14         %>
    15         <jsp:forward page="application_02.jsp"></jsp:forward>        
    16     </body>
    17 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>application 服务器跳转</title>
     7     </head>
     8     <body>
     9     
    10             <%
    11             //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
    12             String name=(String)application.getAttribute("name");
    13             Date birthday = (Date)application.getAttribute("birthday");
    14             %>
    15             <h1>姓名:<%=name %></h1>
    16             <h1>生日:<%=birthday %></h1>
    17     </body>
    18 </html>

    2.application:客户端跳转     在整个服务器上保存,所有用户都可使用。   重启服务器后无效

    
    
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>application 客户端跳转</title>
     7     </head>
     8     <body>
     9         <%
    10             //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
    11             //application.setAttribute("name", "liuyang");
    12             pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);
    13             application.setAttribute("birthday", new Date());            
    14         %>
    15         <a href="application_02.jsp">跳转</a>        
    16     </body>
    17 </html>
     1 <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
     2 <%@ page  import="java.util.*" %>
     3 <!DOCTYPE html>
     4 <html>
     5     <head>
     6         <title>application 客户端跳转</title>
     7     </head>
     8     <body>
     9     
    10             <%
    11             //application:在整个服务器上保存,所有用户都可使用。            重启服务器后无效
    12             String name=(String)application.getAttribute("name");
    13             Date birthday = (Date)application.getAttribute("birthday");
    14             %>
    15             <h1>姓名:<%=name %></h1>
    16             <h1>生日:<%=birthday %></h1>
    17     </body>
    18 </html>
    3.application:关闭浏览器重新进入application_02.jsp     在整个服务器上保存,所有用户都可使用。   重启服务器后无效

     

    4.application:重启服务器后 重新进入application_02.jsp     在整个服务器上保存,所有用户都可使用。   重启服务器后无效
     

    四种属性范围:page(pageContext):只在一个页面中保存属性。     跳转之后无效。

    request:只在一次请求中有效,服务器跳转之后有效。  客户端跳无效

    session:再一次会话中有效。服务器跳转、客户端跳转都有效。网页关闭重新打开无效

    application:在整个服务器上保存,所有用户都可使用。重启服务器后无效

    注意:如果设置过多的application属性范围会影响服务器性能
    page(pageContext): 对象                      

    pageContext.REQUEST_SCOPE

    pageContext.SESSION_SCOPE

    pageContext.APPLICATION_SCOPE

    pageContext.setAttribute("name", "liuyang", pageContext.APPLICATION_SCOPE);

    request对象:

    通过地址重写的方式进行传值:要访问的网页地址?参数1=值1&参数2=值2&...

    Request常用的方法:

    1.01 getParameter(String strTextName) 获取表单提交的信息。    

    String strName=request.getParameter("name");

    1.02 getProtocol() 获取客户使用的协议。    

    String strProtocol=request.getProtocol()

    ;1.03 getServletPath() 获取客户提交信息的页面。    

    String strServlet=request.getServletPath();

    1.04 getMethod() 获取客户提交信息的方式,get|post。    

    String strMethod = request.getMethod();

    1.05 getHeade() 获取HTTP头文件中的accept、accept-encoding和Host的值。    

    String strHeader = request.getHeader("accept");

    1.06 getRermoteAddr() 获取客户的IP地址。    

    String strIP = request.getRemoteAddr();1.07 getRemoteHost() 获取客户机的名称。    

    String clientName = request.getRemoteHost();1.08 getServerName() 获取服务器名称。    

    String serverName = request.getServerName();1.09 getServerPort() 获取服务器的端口号。    

    int serverPort = request.getServerPort();1.10 getParameterNames() 获取客户端提交的所有参数的名字。    

    Enumeration enum = request.getParameterNames();  

    while(enum.hasMoreElements()){      

    String s=(String)enum.nextElement();     

    out.println(s); }

    1.11 getParameterValues()获取客户端提交的所有参数的名字对应的值。    

    String[] inst = request.getParameterValues(paramName);  

    for(String ss:inst){    

    System.out.println(ss);  

    }

    response对象:

    设置头信息setHeader():

    response.setHeader("refresh","5; url=hello.jsp");5秒后自动跳转(jsp)

    <meta http-equiv="refresh" content="5;url=hello.jsp" > 5秒后自动跳转(html)

    <jsp:forward/> 与  sendRedirect 区别:

    <jsp:forward page="hello.jsp"></jsp:forward> 执行到该语句立即跳转,后面的语句不执行

    response.sendRedirect("hello.jsp");重定向。 执行完此页面再进行跳转

    cookie: 设置在客户端,安全性比较低一个客户端上最多只能保存300个cookie。

    addCookie();

    setHeader("Set-Cookie","名字=值");

    session对象:每一个session代表了一个用户。

    获取session ID:String id = session.getId();

  • 相关阅读:
    java.lang.NoSuchMethodError: org.springframework.web.context.request.ServletRequestAttributes.<init>
    eclipse web项目实际工程路径对应
    java中专业术语详解
    Maven详解
    工作常用
    html页面布局
    jQuery易混淆概念的区别
    Jquery Datagrid
    Jquery EasyUI 动态添加标签页(Tabs)
    sql语句的写法
  • 原文地址:https://www.cnblogs.com/liuyangv/p/8060222.html
Copyright © 2020-2023  润新知