Cookieはどれぐらい知っていますか?

26712 ワード

一、クッキーとは?①:Cookie翻訳はビスケットである.②:Cookieはサーバからクライアントに対してキーパッドの保存を通知する技術である.③:各Cookieの大きさは4 kbを超えてはいけない。毎回要求する時、クライアントがCookieがある限り、サーバーに送信される。
二、どうやってCookieを作りますか?①:サーバ端new Cookie(name,value);②:レスポンス.addCookie(cookie)を呼び出します。クライアントCookieの保存(または変更)を通知します。
 /**
     *   cookie
     * @param request
     * @param response
     */
    public void createCookie(HttpServletRequest request, HttpServletResponse response) throws IOException {
     
//        1、  cookie,      
        Cookie cookie = new Cookie("key","value");
//        2、   response.addCookie( cookie );      Cookie   (     )
        response.addCookie(cookie);

        Cookie cookie1 = new Cookie("cccKey","cccValue");
        response.addCookie(cookie1);

        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("    cookie,   ");
    }
三、サーバはどうやってクライアントから送られてきたCookieを取得しますか?①:ブラウザがサーバに要求を送信する場合、ブラウザにクッキーがあります。要求があれば、クッキーに関する情報をサーバに送信します。(要求ヘッダを介して)②:サーバがブラウザから渡されたクッキーを取得します。appi-)request.get Cookie():Cookie[]を使用するだけで、すべてのCookie/cookie.co.getNameを得ることができます。Cookieのキーまたは名前の値/cookie.getValue()を取得し、現在のCookieの値を取得します。
/**
     *      cookie  
     * @param request
     * @param response
     * @throws IOException
     */
    public void getCookies(HttpServletRequest request, HttpServletResponse response) throws IOException {
     
        response.setContentType("text/html;charset=UTF-8");
//        1、         cookie
        Cookie[] cookies = request.getCookies();
        if(cookies != null && cookies.length > 0){
     
            for (Cookie cookie:cookies) {
     
//                2、     cookie          
                response.getWriter().write(cookie.getName() +":"+ cookie.getValue() + "
"
); } } // 3、 cookie Cookie cookie = CookieUtils.findCookie("key",cookies); if(cookie != null){ System.out.println(cookie.getName()); response.getWriter().write(" . Cookie
"
); } }
四、cookieは①を修正する価値があります。直接サーバ端に同名のcookieオブジェクトを作成し、作成したコンストラクタ方法に直接新しい値を割り当てて、respnse.addCookie(cookie)を呼び出します。クライアント保存の変更を通知します。②変更が必要なCookieオブジェクトを確認して、setValue()メソッド設定の新しい値を呼び出します。
 /**
     *   cookie
     * @param request
     * @param response
     */
    public void upCookie(HttpServletRequest request, HttpServletResponse response){
     
        /**
         *    :
         * 1               cookie     ===   aaa  aaaNewValue
         * 2                 
         */
        Cookie cookie = new Cookie("cccKey","cccNewKey");
        response.setContentType("text/html;charset=UTF-8");
        response.addCookie(cookie);

        /**
         *    :
         * 1          Cookie  
         * 2    setValue()        
         * 3    response.addCookie()        
         */
        Cookie cookie1 = CookieUtils.findCookie("key",request.getCookies());
//          :  Cookie    ,    BASE64      
        cookie1.setValue("newValue");
        response.addCookie(cookie1);
    }
五、cookieライフサイクルCookieも生存時間が長いものがあります。Cookieの生存時間は一つのapiによって設定されます。set MaxAge()1正数は指定された秒数の後にブラウザが削除される(または無効になる)2負の値はブラウザが閉まります。Cookieは削除されます(デフォルト値も-1)3 0はブラウザが応答した後、すぐにCookieを削除します。
 /**
     *   cookie    
     * setMaxAge()
     * 		1   		                (     )
     * 		2   		       ,Cookie     (      -1 )
     * 		3  		          ,    Cookie
     * @param request
     * @param response
     */
    public void cookieLife(HttpServletRequest request, HttpServletResponse response) throws IOException {
     
//        1、  cookie
        Cookie cookie = new Cookie("life3600","life3600");
//        2、  cookie     
        cookie.setMaxAge(60 * 60);
        response.addCookie(cookie);
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("            cookie");
    }
六、Cookie有効経路PathのCookieのパスを設定し、Cookieはどのような要求の下でサーバーに送信するかを設定できます。①:Cookie 1のパスは要求アドレスを表しています。http://ip:port/プロジェクトパス/すべての資料はサーバーに送信されます。②:cookie 2のパスは:/工程パス/abcは要求住所を表しています。http://ip:port/工程経路/abc/*は、現在Cookie Coが2つあります。okie A path=/工程経路Cookie B path/工程経路/abc要求は以下のいくつかあります。http://ip:port/工程経路/a.Cookie AはCookieBを発行しません。http://ip:port/工程経路/abc/a.CookieAはCookieBを発行します。
 /**
     *   cookie       
     * @param request
     * @param response
     * @throws IOException
     */
    public void testCookiePath(HttpServletRequest request, HttpServletResponse response) throws IOException {
     

        response.setContentType("text/html;charset=UTF-8");

        Cookie cookieA = new Cookie("cookieAKey","cookieAValue");
//        cookieA      :/atguigu8_cookieAndsession          
        cookieA.setPath(request.getContextPath());
        response.addCookie(cookieA);

        Cookie cookieB = new Cookie("cookieBKey","cookieBValue");
//       cookieB      :/atguigu8_cookieAndsession/abc
        cookieB.setPath(request.getContextPath() + "/abc");
        response.addCookie(cookieB);
        response.getWriter().write("     Cookie    ");
    }
}
七、ユーザー名の登録を免除します。cookieで完成した機能を使ってユーザー名を免除します。一つのフォームです。ユーザーが初めて訪問する時はログインが必要です。一回目のログインが成功すると、ユーザー名が記録されます。ユーザーが二回目の訪問する時は、このフォームに直接に前に登録したユーザ名の情報があります。パスワードを入力するだけでいいです。
/**
 *        
 */
@WebServlet(name = "UserServlet" ,urlPatterns = "/userServlet")
public class UserServlet extends HttpServlet{
     

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     
        resp.setContentType("text/html;charset=UTF-8");
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        if("admin".equals(username) && "admin".equals(password)){
     
            Cookie cookie = new Cookie("username",username);
//              cookie       
            cookie.setMaxAge(60 * 60 * 24 * 7);
            resp.addCookie(cookie);
            resp.getWriter().write("    ");
        }else {
     
            req.getRequestDispatcher("/login.jsp").forward(req,resp);
        }
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>    -</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/userServlet" method="post"><input type="text" id="username" name="username" value="${cookie.username.value}" /><br><input type="password" name="password" id="password" /> <br>
        <input type="submit" value="      ">
    </form>
</body>
</html>