• 学习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>

    结果

    从最后一张结果我们可以看到第一次登陆之后,用户名的值就存在客户端中,再次登录时,用户名已有记录。

  • 相关阅读:
    java 泛型详解
    Vector源码解析
    栈的应用 函数调用
    java中ArrayList 遍历方式、默认容量、扩容机制
    java代码实现自定义栈 + 时间复杂度分析
    mySql分页Iimit优化
    Mybatis 动态SQL注解 in操作符的用法
    设计模式之 外观模式
    设计模式之 装饰器模式
    设计模式之 组合模式
  • 原文地址:https://www.cnblogs.com/ym77/p/11322546.html
Copyright © 2020-2023  润新知