在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Linux/ Servlet Cookies
Servlet web.xml welcome-file-list
Servlet從數(shù)據(jù)庫讀取記錄性能優(yōu)化
Servlet URL重寫帶參數(shù)
War文件
Web技術(shù)基礎(chǔ)
Servlet GenericServlet類
Servlet API
Servlet ServletInputStream類
使用MyEclipse創(chuàng)建Servlet
Servlet增刪改查
Servlet ServletConfig配置信息
Servlet Cookies
Servlet重定向
Servlet生命周期
Servlet HttpSession會(huì)話
Servlet HttpServlet類
Servlet注冊表單示例
Servlet表單隱藏字段
Servlet下載文件
Servlet教程
Servlet身份驗(yàn)證過濾器
Servlet ServletOutputStream類
Servlet HttpSession登錄注銷實(shí)例
Servlet啟動(dòng)時(shí)加載
Servlet事件和監(jiān)聽器
使用Eclipse創(chuàng)建Servlet
Servlet ServletContextEvent事件
Servlet HttpSessionEvent統(tǒng)計(jì)在線用戶數(shù)實(shí)例
Servlet RequestDispatcher請求轉(zhuǎn)發(fā)
Servlet使用注釋
Servlet過濾器示例
Servlet過慮器
Servlet ServletContext配置信息
Servlet登錄注銷Cookies實(shí)例
Servlet工作流程
Servlet會(huì)話跟蹤
Servlet登錄實(shí)例
Servlet ServletRequest接口
Servlet ServletRequestEvent類和接口
Servlet入門程序
Servlet查詢搜索數(shù)據(jù)示例
Servlet FilterConfig應(yīng)用示例
Servlet顯示所有頭信息
Servlet屬性設(shè)置
使用NetBeans創(chuàng)建Servlet
Servlet接口實(shí)現(xiàn)
Servlet上傳文件

Servlet Cookies

Cookie是在多個(gè)客戶端請求之間持久存儲(chǔ)的一小段信息。

Cookie具有名稱,單個(gè)值和可選屬性,例如注釋,路徑和域限定符,生存周期和版本號(hào)。

默認(rèn)情況下,每個(gè)請求都被視為新的請求。在cookie技術(shù)中,servlet響應(yīng)可以添加cookie。 所以cookie存儲(chǔ)在瀏覽器的緩存中。之后,如果用戶發(fā)出請求,默認(rèn)情況下會(huì)帶上cookie。 因此,我們就可以知道用戶舊用戶。

Servlet中有2種類型的Cookie。

  • 非持久性cookie
  • 持久性Cookie

非持久性cookie

  • 它僅適用于單個(gè)會(huì)話。當(dāng)用戶關(guān)閉瀏覽器時(shí)都會(huì)刪除它。

持久性Cookie

  • 它對多個(gè)會(huì)話有效。當(dāng)用戶關(guān)閉瀏覽器時(shí)也不會(huì)刪除它。只有在用戶注銷或注銷時(shí)才被刪除。
  • 維持狀態(tài)最簡單的技術(shù)。
  • Cookie在客戶端維護(hù)。
  • 如果從瀏覽器中禁用Cookie,則無法正常工作。
  • 只能在Cookie對象中設(shè)置文本信息。

javax.servlet.http.Cookie類提供了使用Cookie的功能。它為Cookie提供了很多有用的方法。

Cookie類的構(gòu)造方法

構(gòu)造方法 描述
Cookie() 構(gòu)建一個(gè)cookie。
Cookie(String name, String value) 構(gòu)造具有指定名稱和值的cookie。

Cookie類的方法

下面中給出了一些常用的Cookie類方法。

方法 描述
public void setMaxAge(int expiry) 設(shè)置cookie的最大生命周期(以秒為單位)。
public String getName() 返回cookie的名稱。創(chuàng)建后無法更改名稱。
public String getValue() 返回cookie的值。
public void setName(String name) 更改cookie的名稱。
public void setValue(String value) 更改cookie的值。

使用Cookies所需的其他方法

要添加cookie或從cookie獲取值,需要其他接口提供的一些方法。它們分別是:

  • public void addCookie(Cookie ck)HttpServletResponse接口的方法用于在響應(yīng)對象中添加cookie。
  • public Cookie[] getCookies()HttpServletRequest接口的方法用于從瀏覽器返回所有的cookie。

下面來看看創(chuàng)建cookie的簡單代碼。

Cookie ck=new Cookie("user","maxsu jaiswal");//creating cookie object  
response.addCookie(ck);//adding cookie in the response

如何刪除Cookie?

下面來看看刪除cookie的簡單代碼。它主要用于注銷或注銷用戶。

Cookie ck=new Cookie("user","");//deleting value of cookie  
ck.setMaxAge(0);//changing the maximum age to 0 seconds  
response.addCookie(ck);//adding cookie in the response

下面來看看簡單的代碼用來獲取所有的cookies。

Cookie ck[]=request.getCookies();  
for(int i=0;i<ck.length;i++){  
    out.print("<br>"+ck[i].getName()+" "+ck[i].getValue());//printing name and value of cookie  
}

在這個(gè)例子中,我們將用戶名稱(username)存儲(chǔ)在cookie對象中,并在另一個(gè)servlet中訪問它,會(huì)話對應(yīng)于特定用戶。所以如果從多個(gè)瀏覽器訪問指定cookie名稱,那么將得到不同的值。

打開Eclipse,創(chuàng)建一個(gè)動(dòng)態(tài)Web項(xiàng)目:CookieServlet,其完整的項(xiàng)目結(jié)構(gòu)如下 -

以下是幾個(gè)主要代碼文件。

文件:index.html -

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cookies In Servlet</title>
</head>
<body>
    <div style="text-align:center;">
        <form action="servlet1" method="post">
            用戶名:<input type="text" name="username" value="Maxsu"/><input
                type="submit" value="提交" />
        </form>
    </div>
</body>
</html>

文件:FirstServlet.java -

package com.yiibai;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class FirstServlet extends HttpServlet {

    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();

            String name = request.getParameter("username");
            String username = new String(name.getBytes("ISO-8859-1"),"utf-8");

            out.print("<!DOCTYPE html>\r\n" + 
                    "<html>\r\n" + 
                    "<head>\r\n" + 
                    "<meta charset=\"UTF-8\"><body>");
            out.print("歡迎您, " + username);

            Cookie ck = new Cookie("uname", username);// creating cookie object
            response.addCookie(ck);// adding cookie in the response

            // creating submit button

            out.print("<form action='servlet2' method='post'>");
            out.print("<p>Cookies已在瀏覽器中設(shè)置,現(xiàn)在跳轉(zhuǎn)到第二個(gè)Servlet中讀取Cookies的值。</p>");
            out.print("<input type='submit' value='提交到第二個(gè)Servlet'>");
            out.print("</form>");

            out.close();

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}

文件:SecondServlet.java -

package com.yiibai;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class SecondServlet
 */
public class SecondServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) {
        try {
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();
            Cookie ck[] = request.getCookies();
            out.print("Hello " + ck[0].getValue());
            out.close();
        } catch (Exception e) {
            System.out.println(e);
        }
    }

}

文件:web.xml -

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>CookieServlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>FServlet</servlet-name>
    <servlet-class>com.yiibai.FirstServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>FServlet</servlet-name>
    <url-pattern>/servlet1</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>SServlet</servlet-name>
    <servlet-class>com.yiibai.SecondServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SServlet</servlet-name>
    <url-pattern>/servlet2</url-pattern>
  </servlet-mapping>
</web-app>

在完成上面代碼編寫后,部署這個(gè)Web應(yīng)用程序,打開瀏覽器訪問URL: http://localhost:8080/CookieServlet , 如是程序沒有錯(cuò)誤,應(yīng)該會(huì)看到以下結(jié)果 -

提交后,看到以下界面 -

在第二個(gè)Servlet中讀取的Cookies值如下 -