session物件、cookie物件和appliaction物件
4.session物件
4.1概念
Session稱為一次會話,瀏覽器的開啟及關閉
4.2方法
方法名 | 描述 |
---|---|
setAttribute(key,val) | 設定鍵值對 |
getAttribute(key) | 通過鍵獲取值 |
getId() | 獲取session的id |
setMaxInactiveInterval(time) | 設定session的過期時間[單位:秒](tomcat中預設配置的過期時間是30分鐘) |
removeAttribute(key) | 從session中移除指定的key |
4.3案例
使用session實現頁面訪問許可權控制
<!--login.jsp-->
<%
String errMsg = "";
//登入頁面可能會被開啟多次(使用者想要切換賬戶)
Object object = session.getAttribute("errMsg");
if(object != null){//從登入失敗後跳轉過來的
errMsg = (String)object;
//移除session中的key
session.removeAttribute("errMsg");
}
%>
<p style="color:red;"><%=errMsg%></p>
<form action="control.jsp" method="post">
<input type="text" name="uname" placeholder="請輸入使用者名稱">
<input type="password" name="pwd" placeholder="請輸入密碼">
<input type="submit" value="登入">
</form>
<!--control.jsp-->
<%
//設定請求編碼格式
request.setCharacterEncoding("utf-8");
//獲取表單中的引數
String uname = request.getParameter("uname");
String pwd = request.getParameter("pwd");
//對使用者名稱及密碼進行驗證(運算元據庫)
if("admin".equals(uname) && "admin".equals(pwd)){
//將使用者的使用者名稱儲存起來作為登入成功的標識
session.setAttribute("uname",uname);
//設定session的失效事件(單位:秒)
session.setMaxInactiveInterval(5);
//登入成功直接跳轉到個人中心頁面
response.sendRedirect("person.jsp");
}else{
//通過session儲存一個錯誤資訊
session.setAttribute("errMsg","使用者名稱或密碼錯誤");
//回到登入頁面,並提示錯誤資訊
response.sendRedirect("login.jsp");
}
%>
<!--個人中心-->
<%
//首先需要先驗證使用者是否已經登入
Object object = session.getAttribute("uname");
if(object == null){//代表使用者未登入,跳轉到登入頁面
response.sendRedirect("login.jsp");
return;
}
%>
<h4>個人中心</h4>
<p>歡迎,<%=object%></p>
4.4Cookie物件
4.4.1概念
cookie是在本地進行資料儲存的物件,訪問速度快、效率高但是不安全
<%
//將name儲存到Cookie中
Cookie nameCookie = new Cookie("name",name);
//將建立的cookie儲存到響應頭中
response.addCookie(nameCookie);
%>
<%
//獲取cookie
Cookie[] cookies = request.getCookies();
for(Cookie cook : cookies){
String val = cook.getValue();
out.println(cook.getName()+":"+val+"<br/>");
}
%>
4.4.2Cookie生效時間
1.值為正數時,代表了cookie的存活時長(秒為單位)
2.值為0時,代表立即清除cookie
3.值為負數時,代表cookie的生命週期與當前會話一致
<%
Cookie nameCookie = new Cookie("name",name);
//設定cookie的生效時間setMaxAge() 秒
nameCookie.setMaxAge(10);
response.addCookie(nameCookie);
%>
<%
//獲取cookie
Cookie[] cookies = request.getCookies();
if(cookies != null){
for(Cookie cook : cookies){
String val = cook.getValue();
//設定cookie立馬失效
cook.setMaxAge(0);
//更新response中的cookie物件
response.addCookie(cook);
//對獲取到的資料進行解碼
//val = URLDecoder.decode(val,"utf-8");
out.println(cook.getName()+":"+val+"<br/>");
}
}
%>
4.4.3Session與Cookie的區別
1.session是儲存在服務端的,Cookie是儲存在客戶端
2.session資料安全,Cookie資料不安全
3.session效率較低,Cookie效率相對較高
5.application物件
5.1 概念
application是全域性作用域物件,也稱為web的上下文物件,通常用於儲存一些全域性引數
5.2 方法名
setAttribute(key,val) 設定全域性引數
getAttribute(key) 獲取全域性引數
5.3 全域性作用域案例
<%
//設定預設的閱讀量
int count = 0;
//1.先從全域性作用域中獲取儲存的已訪問的數量
Object object = application.getAttribute("count");
if(object != null){
count = (Integer)object;
}
//2.在已有的閱讀量的基礎上+1
count++;
//3.將最新的閱讀量儲存到全域性作用域中(更新)
application.setAttribute("count",count);
%>
閱讀量:<%=count%>
6.jsp的四大作用域
作用域 | 描述 |
---|---|
pageContext | 只在當前頁面生效 |
request | 在一次請求中生效 |
session | 在一次會話中生效 |
application | 在整個web中生效 |
1.示例:
//index頁面
<%
//當前頁
pageContext.setAttribute("pageContext","當前頁生效");
//請求中
request.setAttribute("request","一次請求中生效");
//一次會話
session.setAttribute("session","一次會話中生效");
//全域性作用域
application.setAttribute("application","整個web專案中");
%>
<hr>
pageContext:<%=pageContext.getAttribute("pageContext")%>
<hr>
request:<%=request.getAttribute("request")%>
<hr>
session:<%=session.getAttribute("session")%>
<hr>
application:<%=application.getAttribute("application")%>
在index頁面是可以同時生效4個作用域
2.示例
//show頁面
<hr>
pageContext:<%=pageContext.getAttribute("pageContext")%>
<hr>
request:<%=request.getAttribute("request")%>
<hr>
session:<%=session.getAttribute("session")%>
<hr>
application:<%=application.getAttribute("application")%>
show頁面只有session作用域和全域性作用域生效
3.示例:
將show頁面網址換個瀏覽器開啟就相當於是更換了一次會話
7.include指令
include指令用於引入其他的頁面
<%@ include file="permission.jsp"%>
//或
<jsp:forward page="session/login.jsp"/>
動作標籤(將jsp中的常見的一些功能以標籤的形式進行使用)
1.<jsp:include /> 將另一個頁面中的內容引入進來,include的指令會將整個jsp頁面進行編譯及翻譯的過程,可以使用變數
(動作標籤只是引入了頁面的結果,指令是將整個jsp的邏輯等都載入進來)
2. <jsp:forward /> 以標籤的形式替換了request在小指令碼中的跳轉形式
相關文章
- ASP.NET常見物件之Cookie、Session與ApplicationASP.NET物件CookieSessionAPP
- jQuery物件和DOM物件jQuery物件
- 事務物件和命令物件物件
- Django:F物件和Q物件Django物件
- JavaScript 本地物件、內建物件和宿主物件JavaScript物件
- JSP內建物件——sessionJS物件Session
- flask中的session物件方法FlaskSession物件
- JavaScript內部物件和Date物件JavaScript物件
- 區別 Jquery物件和Dom物件jQuery物件
- 內建物件、宿主物件和本地物件是什麼物件
- Django(26)HttpResponse物件和JsonResponse物件DjangoHTTP物件JSON
- 複習JAVA面相物件(類和物件)Java物件
- 建立Session物件的兩種方式Session物件
- javascript物件和php物件和json區別JavaScript物件PHPJSON
- 物件和類物件
- 類和物件物件
- Python可變物件和不可變物件Python物件
- jquery物件和DOM物件的互相轉換jQuery物件
- JavaScript物件導向—物件的建立和操作JavaScript物件
- Javascript 物件 – 字串物件JavaScript物件字串
- Rails session物件的 as_json方法AISession物件JSON
- 在session中儲存JSON物件SessionJSON物件
- 例項物件和函式物件的區別物件函式
- 【JQuery】DOM物件和JQuery物件的互相轉換jQuery物件
- JS中的Math物件,陣列,和Date物件JS物件陣列
- 實體類定義陣列物件,和物件陣列物件
- hibernate的事務管理和session物件的詳解Session物件
- jQuery物件和DOM物件和字串之間的轉化jQuery物件字串
- Scala 類和物件物件
- Java 物件和類Java物件
- 類和物件(中)物件
- Java 類和物件Java物件
- Java物件和類Java物件
- Request和Response物件物件
- 例項和物件物件
- scala類和物件物件
- 類和物件案例物件
- 函式物件、物件、原型函式物件原型