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();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM