日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSP中response,session,cookie,application的作用及区别

發布時間:2025/3/19 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSP中response,session,cookie,application的作用及区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

    • 1.response :響應對象
    • 2.session(服務端)
    • 3.使用Cookie實現 記住用戶名 功能
    • 4.session :會話
    • 5.session機制:
    • 6.session:
    • 7.session方法:
    • 8.cookie和session的區別:
    • 9.appliation 全局對象
    • 10.JSP9大內置對象
    • 11.四種范圍對象(小1->大4)
      • a.pageContext
      • b.request
      • c.session
      • d.application
    • 12.源碼如何關聯

1.response :響應對象

提供的方法:
void addCookie( Cookie cookie ); 服務端向客戶端增加cookie對象
void sendRedirect(String location ) throws IOException; :頁面跳轉的一種方式(重定向)
void setContetType(String type):設置服務端響應的編碼(設置服務端的contentType類型)

示例:登陸
login.jsp -> check.jsp ->success.jsp

請求轉發重定向
地址欄是否改變不變(check.jsp)改變(success.jsp)
是否保留第一次請求時的數據保留不保留–4種范圍對象
請求的次數12
跳轉發生的位置服務端客戶端發出的第二次跳轉

?

轉發、重定向:

轉發:

張三(客戶端) -> 【 服務窗口 A (服務端 ) -> 服務窗口B 】

重定向:

張三(客戶端) -> 服務窗口 A (服務端 ) ->去找B 張三(客戶端) -> 服務窗口 B (服務端 ) ->結束

2.session(服務端)

Cookie(客戶端,不是內置對象):Cookie是由 服務端生成的 ,再發送給客戶端保存。相當于 本地緩存的作用: 客戶端(hello.mp4,zs/abc)->服務端(hello.mp4;zs/abc)

作用:提高訪問服務端的效率,但是安全性較差。

Cookie: name=value javax.servlet.http.Cookiepublic Cookie(String name,String value)String getName():獲取nameString getValue():獲取valuevoid setMaxAge(int expiry);最大有效期 (秒)

服務端準備Cookie:

? response.addCookie(Cookie cookie)

頁面跳轉(轉發,重定向)

客戶端獲取cookie: request.getCookies();

a.服務端增加cookie :response對象;客戶端獲取對象:request對象

b.不能直接獲取某一個單獨對象,只能一次性將 全部的cookie拿到

通過F12可以發現 除了自己設置的Cookie對象外,還有一個name為 JSESSIONID的cookie

建議 cookie只保存 英文數字,否則需要進行編碼、解碼

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body><% //客戶端獲取cookie Cookie[] cookies= request.getCookies(); for(Cookie cookie:cookies){out.print(cookie.getName()+"----"+cookie.getValue()+"<br/>");} %> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body><%//服務端Cookie cookie1 = new Cookie("name","zx");Cookie cookie2 = new Cookie("pwd","abc");response.addCookie(cookie1);response.addCookie(cookie2 );//頁面跳轉到客戶端(轉發,重定向)response.sendRedirect("result.jsp");%></body> </html>

3.使用Cookie實現 記住用戶名 功能

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%!//登陸 String uname;%> <% boolean falg=false;Cookie [] cookies= request.getCookies() ; for(Cookie cookie: cookies ){if(cookie.getName().equals("uname")){uname=cookie.getValue();falg=true;} } if(!falg){out.print("cookie失效"); }else{out.print("cookie"+uname); }%><form action="check.jsp" method="post"> 用戶名:<input type="text" name="uname" value="<%=(uname==null?"":uname) %>"><br/> 密碼:<input type="password" name="upwd"><br/> 提交:<input type="submit" value="登陸"><br/> </form></body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body><%request.setCharacterEncoding("utf-8");String name = request.getParameter("uname");String pwd = request.getParameter("upwd");//將用戶名放到Cookie里面Cookie cookie = new Cookie("uname", name); //建議 cookie只保存 英文數字,否則需要進行編碼、解碼cookie.setMaxAge(10) ;response.addCookie(cookie);response.sendRedirect("A.jsp");%></body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!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></body> </html>

4.session :會話

a.瀏覽網站:開始-關閉
b.購物: 瀏覽、付款、退出<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>

Insert title here <% request.setCharacterEncoding("utf-8"); String name = request.getParameter("uname"); String pwd = request.getParameter("upwd"); //將用戶名放到Cookie里面 Cookie cookie = new Cookie("uname", name); //建議 cookie只保存 英文數字,否則需要進行編碼、解碼 cookie.setMaxAge(10) ; response.addCookie(cookie); response.sendRedirect("A.jsp"); %> c.電子郵件:瀏覽、寫郵件、退出 開始-結束

5.session機制:

客戶端第一次請求服務端時,(jsessionid-sessionid)服務端會產生一個session對象(用于保存該客戶的信息);
并且每個session對象 都會有一個唯一的 sessionId( 用于區分其他session);
服務端由會 產生一個cookie,并且 該cookie的name=JSESSIONID ,value=服務端sessionId的值;
然后 服務端會在 響應客戶端的同時 將該cookie發送給客戶端,至此 客戶端就有了 一個cookie(JSESSIONID);
因此,客戶端的cookie就可以和服務端的session一一對應(JSESSIONID - sessionID)

客戶端第二/n次請求服務端時:服務端會先用客戶端cookie種的JSESSIONID 去服務端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),說明此用戶 不是第一次訪問,無需登錄;

例子:
客戶端: 顧客(客戶端)
服務端: 存包處 - 商場(服務端)

顧客第一次存包:商場 判斷此人是 之前已經存過包(通過你手里是否有鑰匙)。
如果是新顧客(沒鑰匙) ,分配一個鑰匙 給該顧客; 鑰匙 會和 柜子 一一對應;

第二/n次 存包:商場 判斷此人是 之前已經存過包(通過你手里是否有鑰匙)
如果是老顧客(有鑰匙),則不需要分配;該顧客手里的鑰匙 會 和柜子 自動一一對應。

6.session:

a. session存儲在服務端(同一次會話共享,比如瀏覽同一個網頁)

b. session是在 同一個用戶(客戶)請求時 共享

c. 實現機制:第一次客戶請求時 產生一個sessionid 并復制給 cookie的jsessionid 然后發給客戶端。最終 通過session的sessionid-cookie的jsessionid

7.session方法:

String getId() :獲取sessionId boolean isNew() :判斷是否是 新用戶(第一次訪問)void invalidate():使session失效 (退出登錄、注銷)void setAttribute()Object getAttribute();void setMaxInactiveInterval(秒) :設置最大有效 非活動時間 int getMaxInactiveInterval():獲取最大有效 非活動時間 比如你設置的是一小時,在這期間你一直在瀏覽該頁面,不會有影響,但是如果你去吃個飯回來,會讓你重新登陸。

示例:
登錄

客戶端在第一次請求服務端時,如果服務端發現 此請求沒有 JSESSIONID,則會創建一個 name=JSESIONID的cookie 并返回給客戶端

Cookie:

a.不是內對對象,要使用必須new

b.但是,服務端會 自動生成一個(服務端自動new一個cookie) name=JSESIONID的cookie 并返回給客戶端

8.cookie和session的區別:

sessioncookie
保存的位置服務端客戶端
安全性較安全較不安全
保存的內容ObjectString

9.appliation 全局對象

String getContextPath() 虛擬路徑
String getRealPath(String name): 絕對路徑(虛擬路徑 相對的絕對路徑)

10.JSP9大內置對象

pageContext JSP頁面容器
request 請求對象
session 會話對象
appliation 全局對象

response 響應對象

config 配置對象(服務器配置信息)
out 輸出對象
page 當前JSP頁面對象(相當于java中的this)
exception 異常對象

11.四種范圍對象(小1->大4)

2request請求對象同一次請求有效
3session會話對象同一次會話有效
4appliation全局對象全局有效(整個項目有效)
1pageContextJSP頁面容器 (page對象)當前頁面有效

以上4個對象共有的方法:
Object getAttribute(String name):根據屬性名,或者屬性值
void setAttribute(String name,Object obj) :設置屬性值(新增,修改)
setAttribute(“a”,“b”) ;//如果a對象之前不存在,則新建一個a對象 ;
如果a之前已經存在,則將a的值改為b
void removeAttribute(String name):根據屬性名,刪除對象

a.pageContext

pageContext 當前頁面有效 (頁面跳轉后無效)

<%=pageContext.getAttribute("hello") %>

b.request

request 同一次請求有效;其他請求無效 (請求轉發后有效;重定向后無效)

response.sendRedirect("rq1.jsp"); request.getRequestDispatcher("rq1.jsp").forward(request, response);

c.session

session 同一次會話有效 (無論怎么跳轉,都有效;關閉/切換瀏覽器后無效 ; 從 登陸->退出 之間 全部有效)

session.setAttribute("hello", "word"); response.sendRedirect("ss1.jsp");

d.application

application
全局變量;整個項目運行期間 都有效 (切換瀏覽器 仍然有效);關閉服務、其他項目 無效

->多個項目共享、重啟后仍然有效 :JNDI

1.以上的4個范圍對象,通過 setAttribute()復制,通過getAttribute()取值;
2.以上范圍對象,盡量使用最小的范圍。因為 對象的范圍越大,造成的性能損耗越大。

12.源碼如何關聯

1.進入官網,下載對應版本源碼

官網(https://www.apache.org/)

Tomcat官網(https://tomcat.apache.org/download-90.cgi)

下載源代碼

然后導入即可!

總結

以上是生活随笔為你收集整理的JSP中response,session,cookie,application的作用及区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。