欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java之JSP教程九大內(nèi)置對象詳解(下篇)

 更新時間:2023年01月12日 17:24:01   作者:小熊coder  
這篇文章主要介紹了Java之JSP教程九大內(nèi)置對象詳解(下篇),本文章內(nèi)容詳細(xì),通過案例可以更好的理解JSP內(nèi)置對象的相關(guān)知識,本模塊分為了三部分,本次為下篇,講解了三個內(nèi)容,需要的朋友可以參考下

前言

之前我們在這篇文章Java之JSP教程九大內(nèi)置對象詳解中,已經(jīng)講解完了六個個對象,接下來我們講解最后的三個對象

JSP pageContext對象

pageContext 是 javax.servlet.jsp.PageContext 的實例對象。

pageContext 對象表示整個 JSP 頁面,可以獲取或刪除以下對象的任意屬性:

  • page
  • request
  • session
  • application

pageContext 常用的方法如下:

  • Object findAttribute (String AttributeName):按 page、request、session、application 的順序查找指定的屬性,并返回對應(yīng)的屬性值。如果沒有相應(yīng)的屬性,則返回 NULL
  • Object getAttribute (String AttributeName, int Scope):在指定范圍內(nèi)獲取屬性值。與 findAttribute 不同的是,getAttribute 需要指定查找范圍
  • void removeAttribute(String AttributeName, int Scope):在指定范圍內(nèi)刪除某屬性
  • void setAttribute(String AttributeName, Object AttributeValue, int Scope):在指定范圍內(nèi)設(shè)置屬性和屬性值
  • Exception getException():返回當(dāng)前頁的 Exception 對象
  • ServletRequest getRequest():返回當(dāng)前頁的 request 對象
  • ServletResponse getResponse():返回當(dāng)前頁的 response 對象
  • ServletConfig getServletConfig():返回當(dāng)前頁的 ServletConfig 對象
  • HttpSession getSession():返回當(dāng)前頁的 session 對象
  • Object getPage():返回當(dāng)前頁的 page 對象
  • ServletContext getServletContext():返回當(dāng)前頁的 application 對象

示例

使用 PageContext 對象取得不同范圍的屬性值。index.jsp 代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <%
        request.setAttribute("info", "request范圍的值");
        session.setAttribute("info", "session范圍的值");
        application.setAttribute("info", "application范圍的值");
    %>
    利用 pageContext 取出以下范圍內(nèi)各值(方法一):
    <br> request 設(shè)定的值:<%=pageContext.getRequest().getAttribute("info")%>
    <br> session 設(shè)定的值:<%=pageContext.getSession().getAttribute("info")%>
    <br> application 設(shè)的值:<%=pageContext.getServletContext().getAttribute("info")%>
    <hr>
    利用pageContext取出以下范圍內(nèi)各值(方法二):
    <br> 范圍1(page)內(nèi)的值:<%=pageContext.getAttribute("info", 1)%>
    <br> 范圍2(request)內(nèi)的值:<%=pageContext.getAttribute("info", 2)%>
    <br> 范圍3(session)內(nèi)的值:<%=pageContext.getAttribute("info", 3)%>
    <br> 范圍4(application)內(nèi)的值:<%=pageContext.getAttribute("info", 4)%>
    <hr>
    利用 pageContext 修改或刪除某個范圍內(nèi)的值:
    <%
        pageContext.setAttribute("info", "修改request范圍的值", 2);
    %>
    <br> 修改 request 設(shè)定的值:
    <br>
    <%=pageContext.getRequest().getAttribute("info")%>
    <br>
    <%
        pageContext.removeAttribute("info");
    %>
    刪除 session 設(shè)定的值:<%=session.getAttribute("info")%>
</body>
</html>

運行結(jié)果如下:

index.jsp運行結(jié)果

JSP page對象

JSP page 的實質(zhì)是 java.lang.Object 對象,相當(dāng)于 Java 中的 this 關(guān)鍵字。

page 對象是指當(dāng)前的 JSP 頁面本身,在實際開發(fā)中并不常用。

page 對象的常用方法如下:

class getClass():返回當(dāng)前頁面所在類

int hashCode():返回當(dāng)前頁面的 hash 代碼

String toString():將當(dāng)前頁面所在類轉(zhuǎn)換成字符串

boolean equals(Object obj):比較對象和指定的對象是否相等

void copy (Object obj):把對象復(fù)制到指定的對象中

Object clone():復(fù)制對象

示例

下面通過一個簡單的例子來演示 page 中的方法。

index.jsp 代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
    <%
        Object obj;
        obj = null;
    %>
    返回當(dāng)前頁面所在類:<%=page.getClass()%>
    <br> 返回當(dāng)前頁面的 hash 代碼:<%=page.hashCode()%>
    <br> 轉(zhuǎn)換成 String 類的對象:<%=page.toString()%>
    <br> page和obj比較:<%=page.equals(obj)%>
    <br> page和this比較:<%=page.equals(this)%>
</body>
</html>

運行結(jié)果如下:

JSP Cookie的使用

Cookie 不是 JSP 內(nèi)置對象,而是由 Netscape 公司發(fā)明,用來跟蹤用戶會話(session)的方式。

Cookie 由服務(wù)器生成并發(fā)送給瀏覽器(客戶端),瀏覽器會將其以文本文件的形式存儲在某個目錄下。

例如,IE 瀏覽器把 cookie 信息保存在類似于 C://windows//cookies 的目錄下,當(dāng)用戶再次訪問某個網(wǎng)站時,服務(wù)器就會要求瀏覽器查找并返回之前發(fā)送的 cookie 信息,來識別此用戶。

識別用戶通常有以下步驟:

  1. 服務(wù)器把 cookie 信息發(fā)送到瀏覽器,例如:用戶 ID、用戶名稱等信息。
  2. 瀏覽器在本地存儲這些信息。
  3. 瀏覽器再次向服務(wù)器發(fā)送請求時,它會同時將本地存儲的 cookie 信息一同發(fā)送給服務(wù)器,然后服務(wù)器使用這些信息來識別用戶或其它。

cookie 的作用表現(xiàn)在以下方面:

  • 對特定對象的追蹤,如用戶的訪問次數(shù)、最后訪問時間等。
  • 統(tǒng)計網(wǎng)頁的瀏覽次數(shù)。
  • 在 cookie 有效期內(nèi),記錄用戶的登錄信息,簡化下一次的登錄過程。
  • 實現(xiàn)各種個性化服務(wù),如”最近瀏覽過的商品“。

注意:由于 cookie 會將用戶的個人信息保存在客戶端,如用戶名、計算機(jī)名、以及瀏覽和登錄的網(wǎng)站等。這些信息可能會包含一些比較敏感的內(nèi)容,所以從安全角度來說,使用 cookie 存在著一定的風(fēng)險,因此不建議在 cookie 中保存比較重要或隱私的內(nèi)容。

cookie方法

cookie 常用方法如下:

  • public void setDomain(String pattern):設(shè)置 cookie 的域名,如 biancheng.net
  • public String getDomain():獲取 cookie 的域名
  • public void setMaxAge(int expiry):設(shè)置 cookie 有效期,單位:秒 默認(rèn)僅在當(dāng)前會話中存在
  • public int getMaxAge():獲取 cookie 有效期,單位:秒 默認(rèn)為 -1,表示 cookie 保存到瀏覽器關(guān)閉為止
  • public String getName():返回 cookie 的名稱,名稱創(chuàng)建后將不能被修改
  • public void setValue(String newValue):設(shè)置 cookie 的值
  • public String getValue():獲取 cookie 的值
  • public void setPath(String uri):設(shè)置 cookie 的路徑 默認(rèn)為當(dāng)前頁面目錄以及子目錄下的所有 URL
  • public String getPath():獲取 cookie 的路徑
  • public void setSecure(boolean flag):設(shè)置 cookie 是否要加密傳輸
  • public void setComment(String purpose):設(shè)置 cookie 注釋
  • public String getComment():返回 cookie 注釋,如果 cookie 沒有注釋,則返回 nullJSP使用cookie

JSP 使用 cookie 主要分為以下幾個步驟。

創(chuàng)建 cookie 對象

創(chuàng)建 cookie 對象,name 代表 cookie 的名稱,value 表示該名稱對應(yīng)的值,語法如下:

cookie cookie = new cookie(String name,String value);

注意:name 和 value 中不能包含空格和以下字符:

[ ] ( ) = , " / ? @ : ;

寫入 cookie

創(chuàng)建 cookie 對象后,調(diào)用 response.addCookie() 方法寫入 cookie,代碼如下:

response.addcookie(cookie);

設(shè)置 cookie 有效期

調(diào)用 setMaxAge() 方法設(shè)置 cookie 的有效期(單位:秒),如將 cookie 有效期設(shè)置為 24 小時,代碼如下:

cookie.setMaxAge(60*60*24); 

讀取cookie

調(diào)用 request.getCookies() 方法讀取 cookie,該方法返回 HTTP 請求中的 cookie 對象數(shù)組,需要通過遍歷進(jìn)行訪問。

示例

通過 HTML 表單將客戶端數(shù)據(jù)提交到 index.jsp 中,并設(shè)置 cookie。

login.jsp 代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
</head>
<body>
    <form action="index.jsp" method="get">
        站點名: <input type="text" name="name"> <br />
        網(wǎng)址: <input type="text" name="url" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

index.jsp 代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*"%>
<%
    // 解決中文亂碼  
    String str = URLEncoder.encode(request.getParameter("name"), "utf-8");
    // 創(chuàng)建cookie對象
    cookie name = new cookie("name", str);
    cookie url = new cookie("url", request.getParameter("url"));
    // 設(shè)置cookie有效期為24小時。
    name.setMaxAge(60 * 60 * 24);
    url.setMaxAge(60 * 60 * 24);
    // 在響應(yīng)頭部添加cookie
    response.addcookie(name);
    response.addcookie(url);
%>
<html>
<head>
<title>編程幫(www.biancheng.net)</title>
</head>
<body>
    <b>網(wǎng)站名:</b>
    <%=request.getParameter("name")%><br>
    <b>網(wǎng)址:</b>
    <%=request.getParameter("url")%>
</body>
</html>

運行結(jié)果如下:

login.jsp頁面運行結(jié)果

index.jsp頁面運行結(jié)果

讀取cookie

調(diào)用 request.getcookies() 方法,在 cookie.jsp 頁面中讀取 cookie

cookie.jsp 代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*"%>
<!DOCTYPE html>
<html>
<head>
<title>編程幫(www.biancheng.net)</title>
</head>
<body>
    <%
        cookie cookie = null; //創(chuàng)建cookie對象
        cookie[] cookies = null;
        // 獲取 cookie 的數(shù)據(jù)
        cookies = request.getcookies();
        if (cookies != null) {
            out.println("<h2> 獲取cookie名稱與對應(yīng)值</h2>");
            for (int i = 0; i < cookies.length; i++) {
                cookie = cookies[i];
                out.print("參數(shù)名 : " + cookie.getName());
                out.print("<br>");
                out.print("參數(shù)值: " + URLDecoder.decode(cookie.getValue(), "utf-8") + " <br>");
                out.print("------------------------------------<br>");
            }
        } else {
            out.println("<h2>cookie為空</h2>");
        }
    %>
</body>
</html>

運行結(jié)果如下:

刪除cookie

刪除 cookie 步驟如下:

  • 獲取 cookie
  • 將要刪除的 cookie 有效期設(shè)置為 0
  • 調(diào)用 response.addCookie() 方法重新寫入 cookie

刪除參數(shù)名為“name”的 cookie

cookie.jsp 代碼如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.net.*"%>
<!DOCTYPE html>
<html>
<head>
<title>編程幫(www.biancheng.net)</title>
</head>
<body>
    <%
        cookie cookie = null; //創(chuàng)建cookie對象
        cookie[] cookies = null;
        // 獲取 cookie 的數(shù)據(jù)
        cookies = request.getcookies();
        if (cookies != null) {
            out.println("<h2> 獲取cookie名稱與對應(yīng)值</h2>");
            for (int i = 0; i < cookies.length; i++) {
                cookie = cookies[i];
                //刪除參數(shù)名為name的cookie
                if ((cookie.getName()).compareTo("name") == 0) {
                    cookie.setMaxAge(0);
                    response.addcookie(cookie);
                    out.print("刪除 cookie: " + cookie.getName() + "<br/>");
                }
                out.print("參數(shù)名 : " + cookie.getName());
                out.print("<br>");
                out.print("參數(shù)值: " + URLDecoder.decode(cookie.getValue(), "utf-8") + " <br>");
                out.print("------------------------------------<br>");
            }
        } else {
            out.println("<h2>cookie為空</h2>");
        }
    %>
</body>
</html>

刷新 cookie.jsp 頁面,運行結(jié)果如下:

注:也可以手動在瀏覽器中刪除 cookie。

session和cookie的區(qū)別

session 和 cookie 的區(qū)別如下:

session:

  • cookie將信息保存在服務(wù)器
  • 保存的值是 Object 類型
  • session 存儲的數(shù)據(jù)隨會話的結(jié)束而結(jié)束
  • 安全性高,可以保存重要的信息

cookie:

  • 將信息保存在客戶端
  • 保存的值是 String 類型
  • cookie 可以長期保存在客戶端
  • 安全性低,通常用于保存不重要的信息

實際開發(fā)中,需要根據(jù)不同的業(yè)務(wù)需求來選擇采用哪種技術(shù),例如,用戶的用戶名和密碼等敏感信息不能使用 cookie 存儲,淘寶購物的”最近瀏覽過的商品“,則可以使用 cookie 存儲在客戶端。

到此這篇關(guān)于Java之JSP教程九大內(nèi)置對象詳解的文章就介紹到這了,所有內(nèi)容也都講解完了,對其他內(nèi)容還感興趣的請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論