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

结果

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

猜你喜欢

转载自www.cnblogs.com/ym77/p/11322546.html