JavaWeb(IDEA+Maven)开发3:Cookie、Session、JSP

本文详细介绍了JavaWeb开发中的Cookie、Session技术和JSP的基础知识。主要内容包括Cookie和Session的原理及应用场景,特别是Session的使用方法。此外,还探讨了JSP的特性、工作原理、基础语法、内置对象以及JSP标签的使用,帮助开发者更好地理解和应用这些技术。
摘要由CSDN通过智能技术生成

1.Cookie、Session

1.1、会话

**会话:**用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话。
**有状态会话:**一个同学来过教室,下次这个同学再来教室,我们会知道,这个同学曾经来过,称之为有状态会话。
你能怎么证明你是学生?
你 学校

  1. 学费发票 学校给你发票
  2. 学生登记 学校证明你来过了

一个网站,怎么证明宁你来过?
客户端 服务端

  • 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以了
  • 服务器登记你来过了,下次你来的时候我来匹配你
1.2、保存会话的两种技术

cookie:

  • 客户端技术(响应、请求)

session:

  • 服务器技术,利用这个技术可以保存用户的会话信息,我们可以把数据放在Session中!

常见场景:往回走那登录之后,你下次不用在登录了,第二次访问直接就上去了。

1.3、Cookie
  1. 从请求中拿到cookie信息
  2. 服务器响应给客户端cookie
    在这里插入图片描述
package com.zhang.servlet;

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.io.PrintWriter;
import java.util.Date;
//保存用户上一次访问的时间
public class CookieDemo01 extends HttpServlet {
   
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //服务器告诉你你来的时间,把这个时间封装成一个信件,你下次再来,我就知道你来了啊

        //解决中文乱码
        req.setCharacterEncoding("UTF-8");

        PrintWriter out = resp.getWriter();
        //Cookie,服务器端从客户端获取的
        Cookie[] cookies = req.getCookies();  //这里返回数组,说明Cookie可以返回多个
        //判断Cookie是否存在
        if(cookies!=null){
   
            //如果存在怎么办
            out.write("last time:");
            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());
                    Date date=new Date(lastLoginTime);
                    out.write(date.toLocaleString());
                }
            }
        }else{
   
            out.write("first come to here");
        }
        //服务器给客户端响应一个cookie
        Cookie cookie = new Cookie("lastLoginTime",System.currentTimeMillis()+"");
        //cookie有效期为一天
        cookie.setMaxAge(24*60*60);
        resp.addCookie(cookie);
        resp.setCharacterEncoding("UTF-8");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        doGet(req, resp);
    }
}

cookie:一般保存在本地的用户目录下appdata;

一个网站cookie是否存在上限!细节问题

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

删除Cookie:

  • 不设置有效期,关闭浏览器,自动失效
  • 设置有效期时间为0
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
   
        //创建一个cookie,名字必须要和要删除的名字一致
        Cookie cookie = new Cookie("lastLoginTime",System.currentTimeMillis()+"");
        //将cookie有效期设置为0
        cookie.setMaxAge(0);
        resp.addCookie(cookie);
    }

乱码:加这句

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

Cookie编码和解码:

        //编码
        Cookie cookie = new Cookie("name", URLEncoder.encode("张三","UTF-8"));
        //解码
        out.write(URLDecoder.decode(cookie.getValue(),"UTF-8"
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值