一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

JSP中response,session,cookie,application的作用及區(qū)別

 大前端之旅 2022-03-10

目錄

1.response :響應(yīng)對象

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

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

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

? image-20200604221305506

轉(zhuǎn)發(fā)、重定向:

轉(zhuǎn)發(fā):

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

重定向:

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

2.session(服務(wù)端)

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

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

Cookie:name=value   

javax.servlet.http.Cookie

public Cookie(String name,String value)

String getName():獲取name

String getValue():獲取value

void setMaxAge(int expiry);最大有效期 (秒)

服務(wù)端準備Cookie:

? response.addCookie(Cookie cookie)

頁面跳轉(zhuǎn)(轉(zhuǎn)發(fā),重定向)

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

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

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

通過F12可以發(fā)現(xiàn) 除了自己設(shè)置的Cookie對象外,還有一個name為 JSESSIONID的cookie

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

<%@ 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>

<%
//服務(wù)端
Cookie cookie1 = new Cookie("name","zx");
Cookie cookie2 = new Cookie("pwd","abc");
response.addCookie(cookie1);
response.addCookie(cookie2 );
//頁面跳轉(zhuǎn)到客戶端(轉(zhuǎn)發(fā),重定向)
response.sendRedirect("result.jsp");


%>

</body>
</html>

3.使用Cookie實現(xiàn) 記住用戶名 功能

<%@ 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只保存  英文數(shù)字,否則需要進行編碼、解碼
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./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.瀏覽網(wǎng)站:開始-關(guān)閉
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只保存 英文數(shù)字,否則需要進行編碼、解碼 cookie.setMaxAge(10) ; response.addCookie(cookie); response.sendRedirect("A.jsp"); %> c.電子郵件:瀏覽、寫郵件、退出 開始-結(jié)束

5.session機制:

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

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

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

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

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

6.session:

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

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

c. 實現(xiàn)機制:第一次客戶請求時 產(chǎn)生一個sessionid 并復(fù)制給 cookie的jsessionid 然后發(fā)給客戶端。最終 通過session的sessionid-cookie的jsessionid

7.session方法:

String getId() :獲取sessionId  

boolean isNew() :判斷是否是 新用戶(第一次訪問)

void invalidate():使session失效  (退出登錄、注銷)

void setAttribute()

Object getAttribute();

void setMaxInactiveInterval(秒) :設(shè)置最大有效 非活動時間 

int getMaxInactiveInterval():獲取最大有效 非活動時間  比如你設(shè)置的是一小時,在這期間你一直在瀏覽該頁面,不會有影響,但是如果你去吃個飯回來,會讓你重新登陸。

示例:
登錄

image-20200606103122339

客戶端在第一次請求服務(wù)端時,如果服務(wù)端發(fā)現(xiàn) 此請求沒有 JSESSIONID,則會創(chuàng)建一個 name=JSESIONID的cookie 并返回給客戶端

Cookie:

a.不是內(nèi)對對象,要使用必須new

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

8.cookie和session的區(qū)別:

sessioncookie
保存的位置服務(wù)端客戶端
安全性較安全較不安全
保存的內(nèi)容ObjectString

9.appliation 全局對象

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

10.JSP9大內(nèi)置對象

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

response 響應(yīng)對象

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

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

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

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

a.pageContext

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

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

b.request

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

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

c.session

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

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

d.application

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

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

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

12.源碼如何關(guān)聯(lián)

1.進入官網(wǎng),下載對應(yīng)版本源碼

官網(wǎng)(https://www./)

Tomcat官網(wǎng)(https://tomcat./download-90.cgi)

下載源代碼

然后導(dǎo)入即可!

image-20200606124557860

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美性猛交内射老熟妇| 91人妻人人做人碰人人九色| 91精品国产综合久久福利| 不卡视频免费一区二区三区| 亚洲国产成人久久一区二区三区 | 麻豆最新出品国产精品| 国产精品不卡免费视频| 国产一区二区三区口爆在线| 日韩中文高清在线专区| 国产日韩欧美综合视频| 婷婷激情四射在线观看视频| 国产传媒欧美日韩成人精品| 国产亚洲欧美一区二区| 精品一区二区三区人妻视频| 小黄片大全欧美一区二区| 国产精品夜色一区二区三区不卡 | 国产精品香蕉免费手机视频| 亚洲综合色在线视频香蕉视频| 日韩人妻一区中文字幕| 日韩在线免费看中文字幕| 国产成人亚洲综合色就色| 91偷拍视频久久精品| 国产又大又硬又粗又湿| 懂色一区二区三区四区| 五月婷婷综合激情啪啪| 欧美精品激情视频一区| 亚洲综合色在线视频香蕉视频| 亚洲精品偷拍视频免费观看| 人妻内射精品一区二区| 五月天丁香婷婷一区二区| 精品国产亚洲区久久露脸| 久久99青青精品免费观看| 国产成人精品国产成人亚洲| 午夜福利在线观看免费| 国产亚洲视频香蕉一区| 亚洲国产成人精品一区刚刚| 女人精品内射国产99| 久久精品亚洲精品国产欧美| 在线观看免费午夜福利| 老富婆找帅哥按摩抠逼视频| 91偷拍视频久久精品|