學習jsp篇:jsp Cookie介紹


這篇博客介紹下Cookie,JSP中比較重要的知識點Session,Cookie,表單數據,過濾器,文件上傳。而Session和Cookie一般放在一起講,在介紹cookie之前,要先介紹下Cookie。(廢話一堆。。。)

1、Cookie(客戶端,不是內置對象):是由服務端生成的,再發送給客戶端保存。相當於本地緩存的作用(客戶端 ——> 服務端)。

2、Cookie作用:提高訪問服務端的效率,但是安全性較差。

3、Cookie的產生:

  a、Cookie中保存的數據形式:key,value。

  b、由Javax.servlet.http.Cookie類產生。

  c、常見方法:

    public Cookie(String name,String value)Cookie構造器

    String getName()獲得key值

    String getValue()獲得value值

    void setMaxAge(int expiry)Cookie最大有效期

    response.addCookie(Cookie cookie)用於服務端產生Cookie

    request。getCookie(Cookie cookie)用於客戶端獲得Cookie

4、生成Cookie步驟:

    a、服務端准備Cookie:response.addCookie(Cookie cookie)

    b、頁面跳轉(請求轉發,重定向)

    c、客戶端獲取Cookie:request.getCookie();

注意:a、服務端增加Cookie:request對象,客戶端獲取對象:response對象

          b、不能直接獲取某一對象,只能一次將全部Cookie對象獲取到。

5、寫個簡單的生成Cookie的實例

在項目下的web目錄下新建一個Cookie文件夾,response_add.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>cookie驗證頁面</title>
</head>
<body>
<%
Cookie cookie1=new Cookie("zz","1111");
Cookie cookie2=new Cookie("aa","2222");
//服務端增加cookie
response.addCookie(cookie1);
response.addCookie(cookie2);
//轉發cookie給客戶端
response.sendRedirect("result.jsp");
%>
</body>
</html>

 

result.jsp生成cookie

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
      <%
          //客戶端獲取cookie
          Cookie[] cookies=request.getCookies();
          //輸出cookie
          for(Cookie cookie:cookies){
              out.println(cookie.getName()+"=="+cookie.getValue());
          }
      %>
</body>
</html>

 

結果

6、生成Cookie的實例二(算是進階版吧)

在web目錄下新建一個文件CookieDemo

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登錄</title>
</head>
<body>
   <%!
      String name;
   %>
   <%
       //獲得已存在客戶端中cookie
       boolean flag=false;
       Cookie cookies[]=request.getCookies();
       for(Cookie cookie:cookies){
           if(cookie.getName().equals("uname")){
               name=cookie.getValue();
               flag=true;
           }
       }
       if(!flag){
           out.println("cookie已失效");
       }else{
           out.println("cookie+"+name);
       }
   %>
    <form action="check.jsp" method="post">
        用戶名: <input type="text" name="uname" value="<%=(name==null?"":name)%>" ><br/>
        密碼: <input type="password" name="upwd" ><br/>
              <input type="submit" value="登錄"><br/>
    </form>
</body>
</html>

 

check.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
      <%
          request.setCharacterEncoding("utf-8");
          String name=request.getParameter("uname");
          Cookie cookie=new Cookie("uname",name);//沒有無參構造器
          //增加cookie
          cookie.setMaxAge(10);
          response.addCookie(cookie);
          //轉發cookie
          response.sendRedirect("A.jsp");//這里我感覺是往客戶端發,由於我們是在電腦上操作的,客戶端和服務端其實是在一個機子上的
      %>
</body>
</html>

 

A.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

 

結果

 

從最后一張結果我們可以看到第一次登陸之后,用戶名的值就存在客戶端中,再次登錄時,用戶名已有記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM