jsp之四種范圍對象
客戶端在第一次請求服務(wù)端時,如果服務(wù)端發(fā)現(xiàn) 此請求沒有 JSESSIONID,則會創(chuàng)建一個 name=JSESIONID的cookie 并返回給客戶端
Cookie:
a.不是內(nèi)對對象,要使用必須new
b.但是,服務(wù)端會 自動生成一個(服務(wù)端自動new一個cookie) name=JSESIONID的cookie 并返回給客戶端
JSP9大內(nèi)置對象
pageContext JSP頁面容器
request 請求對象
session 會話對象
appliation 全局對象
<%="當(dāng)前項(xiàng)目的虛擬路徑:" +application.getContextPath() +"
" %> <%="虛擬路徑對應(yīng)的絕對路徑:" +application.getRealPath("/MyJspProject") +"
" %>
response 響應(yīng)對象
config 配置對象(服務(wù)器配置信息)
out 輸出對象
page 當(dāng)前JSP頁面對象(相當(dāng)于java中的this)
exception 異常對象
四種范圍對象(小->大)
pageContext JSP頁面容器 (page對象); 當(dāng)前頁面有效
request 請求對象 同一次請求有效
session 會話對象 同一次會話有效
appliation 全局對象 全局有效(整個項(xiàng)目有效)
以上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 當(dāng)前頁面有效 (頁面跳轉(zhuǎn)后無效)
案例:
pageContext.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
pc1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%=pageContext.getAttribute("hello") %>
b.
request 同一次請求有效;其他請求無效 (請求轉(zhuǎn)發(fā)后有效;重定向后無效)
案例(一):request請求轉(zhuǎn)發(fā)取值
request.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
rq1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%=request.getAttribute("hello") %>
案例(二):request重定向取值
把上面案例(一)的請求轉(zhuǎn)發(fā)改為重定向
<% request.setAttribute("hello", "world"); //request.getRequestDispatcher("rq1.jsp").forward(request, response); response.sendRedirect("rq1.jsp"); %>
再次訪問:
重定向?yàn)閮纱握埱螅詒equest獲取不到值。
c.
session 同一次會話有效 (無論怎么跳轉(zhuǎn),都有效;關(guān)閉/切換瀏覽器后無效 ; 從 登陸->退出 之間 全部有效)
session案例:
session.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
ss1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%=session.getAttribute("hello") %>
切換瀏覽器后直接訪問ss1.jsp無效:
d.
application
全局變量;整個項(xiàng)目運(yùn)行期間 都有效 (切換瀏覽器 仍然有效);
關(guān)閉服務(wù)、其他項(xiàng)目 無效
案例:
application.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
ap1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%=application.getAttribute("hello") %>
切換瀏覽器訪問也有效
重啟Tomcat后無效:
->多個項(xiàng)目共享、重啟后仍然有效 :JNDI
1.以上的4個范圍對象,通過 setAttribute()賦值,通過getAttribute()取值;
2.以上范圍對象,盡量使用最小的范圍。因?yàn)?對象的范圍越大,造成的性能損耗越大。
JSP
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。