Cookie和Session的应用。

一、Cookie的应用:

Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)

细节问题:

  • 一个网站cookie是否存在上限 一个cookie只能保存一个信息;
  • 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie
  • cookiw大小有限制4kb;
  • 300个cookie浏览器上限;

举例一些关于cookie的使用代码


创建ServletCookie.java代码如下:
package com.llp.cookie;//包的名称
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.crypto.Data;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;
public class ServletCookie extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决中文乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        PrintWriter out=resp.getWriter();
        //Cookie,服务器端从客户端获取呀
        Cookie[] cookies=req.getCookies();//这里返回数组,说明Cookie可能存在多个
        //判断Cookie是否存在
        if(cookies!=null){
            out.write("上次访问时间:");
            for(int i=0;i<cookies.length;i++){
                Cookie cookie=cookies[i];
                //获取cookie的名字
                if(cookie.getName().equals("lastLoginTime")){
                    //获取cookie中的值
                    long LastLoginTime=Long.parseLong(cookie.getValue());//转化为long型
                    Date date=new Date(LastLoginTime);//设置为时间格式
                    out.write(date.toLocaleString());
                }
            }
        }
        else{
            out.write("第一次访问网页");
        }
        Cookie cookie=new Cookie("lastLoginTime",System.currentTimeMillis()+"");
        cookie.setMaxAge(24*60*60);//设置Cookie有效时间为一天
        resp.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

销毁Cookie记录ServletCookie02.java

package com.llp.cookie;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.HttpCookie;
public class ServletCookie02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建一个Cookie,名字必须要和想要删除的cookie名字相同
        Cookie cookie=new Cookie("lastLoginTime",System.currentTimeMillis()+"");    
        //将cookie有效期设置为0
        cookie.setMaxAge(0);
        resp.addCookie(cookie);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

web.xml配置如下

 <servlet>
    <servlet-name>ServletCookie</servlet-name>
    <servlet-class>com.llp.cookie.ServletCookie</servlet-class>
  </servlet>
<servlet-mapping>
  <servlet-name>ServletCookie</servlet-name>
  <url-pattern>/cc1</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>ServletCookie02</servlet-name>
    <servlet-class>com.llp.cookie.ServletCookie02</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletCookie02</servlet-name>
    <url-pattern>/cc2</url-pattern>
  </servlet-mapping>

代码测试:
第一次调用cc1网页
在这里插入图片描述

因为第一次进去cc1页面的时候,是最新创建的cookie。

第二次调用cc1网页
在这里插入图片描述
消除cookie
在这里插入图片描述
再次调用cc1页面查看是否消除成功
在这里插入图片描述

二、Seesion的使用:

Session把用户的数据写到独占Session中,服务器端保存(保存重要的信息,减少服务器资源的浪费)

举例一些关于cookie的使用代码


首先创建一个Person类(为了更好的面向对象) person.java代码如下
package com.llp.person;
public class Person {
    private int age;
    private String name;
    Person(){}
    public Person(String name, int age){
        this.name=name;
        this.age=age;
    }
    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                '}';
    }
}

向session里存入信息,ServletSession.java代码如下:

package com.llp.session;
import com.llp.person.Person;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class ServletSession extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决中文乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        //得到session
        HttpSession session=req.getSession();
        //给session存入东西
        session.setAttribute("name",new Person("llp",23));
        //获取session的ID
        String sesssionID=session.getId();
        //判断session是否为新
        if(session.isNew()){
            resp.getWriter().write("session创建成功!"+sesssionID);
        }
        else{
            resp.getWriter().write("session已经创建过!"+sesssionID);
        }
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

创建ServletSession.java,获取Session里面的信息

package com.llp.session;

import com.llp.person.Person;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class ServletSession02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html");
        //得到session
        HttpSession session=req.getSession();
        Person person=(Person) session.getAttribute("name");
        System.out.println(person.toString());
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

ServletSession.java,手动注销session

package com.llp.session;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class ServletSession03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session=req.getSession();
        session.removeAttribute("name");
        //手动注销session
        session.invalidate();
          resp.getWriter().write("注销session!");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

web.xm配置如下

<servlet>
    <servlet-name>ServletSession</servlet-name>
    <servlet-class>com.llp.session.ServletSession</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletSession</servlet-name>
    <url-pattern>/ss1</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>ServletSession02</servlet-name>
    <servlet-class>com.llp.session.ServletSession02</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletSession02</servlet-name>
    <url-pattern>/ss2</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>ServletSession03</servlet-name>
    <servlet-class>com.llp.session.ServletSession03</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletSession03</servlet-name>
    <url-pattern>/ss3</url-pattern>
  </servlet-mapping>
  <!--设置session失效时间,以分钟为单位-->
  <session-config>
    <session-timeout>1</session-timeout>
  </session-config>

最后web.xml的配置的是自动设置session失效时间
代码测试

首先调用页面ss1,向session存入信息
在这里插入图片描述
调用页面ss2,向session读取信息,后台能后看到信息

在这里插入图片描述
在这里插入图片描述
调用页面ss3,删除session
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暴躁茹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值