Cookie
概述
Cookie 英文饼干,cookie 是一小段数据,用来存储客户的信息
数据特点:
以key :value 键值对形式存储
cookie 大部分是服务器产生,通过response 返回,浏览器保存
(cookie 服务器产生,浏览器保存,下次请求路径是在header中携带cookie)
cookie有大小限制 4k
cookie 有时间限制 默认 30min
cookie 不能存储敏感信息(密码等)
谷歌浏览器无痕模式(禁用cookie)
增加cookie
package com.qfedu.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.URLEncoder;
/**
* @author xue_yun_xiang
* @create 2021-04-12-16:57
*/
@WebServlet("/AddCookie")
public class AddCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//创建cookie
Cookie cookie = new Cookie("name", "chenmotong");
//设置携带cookie的路径,不写则全部携带
//设置cookie的最大存活时间
cookie.setMaxAge(60);
//添加cookie
resp.addCookie(cookie);
resp.getWriter().print("向前端返回了一个cookie");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
查询cookie
package com.qfedu.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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.URLDecoder;
/**
* @author xue_yun_xiang
* @create 2021-04-12-17:01
*/
@WebServlet("/GetCookie")
public class GetCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
//获取cookie并放入数组
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
resp.getWriter().println(cookie.getName());
resp.getWriter().println(cookie.getValue());
//后端无法获取存活时间,结果恒为-1
resp.getWriter().println(cookie.getMaxAge());
}
resp.getWriter().println("后端获取到了cookie");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
修改cookie
package com.qfedu.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author xue_yun_xiang
* @create 2021-04-12-17:05
*/
@WebServlet("/EditorCookie")
public class EditorCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("name")) {
cookie.setValue("duolaAmeng");
cookie.setMaxAge(60);
resp.addCookie(cookie);
}
}
resp.getWriter().println("修改了cookie");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
删除cookie
package com.qfedu.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author xue_yun_xiang
* @create 2021-04-12-17:09
*/
@WebServlet("/DeleteCookie")
public class DeleteCookie extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
Cookie[] cookies = req.getCookies();
for (Cookie cookie : cookies) {
if (cookie.getName().equals("name")) {
cookie.setMaxAge(0);
}
}
resp.getWriter().println("删除了cookie");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
Session
概述:
Session 就是会话,会话就是浏览器和服务器保持的链接一种形式
主要作用就是记录用户的状态,记录用户相关的信息
特点:
①存储在服务端
②也是以键值对存储,值可以是任何类型
③会话也有时间限制(如果用户长时间没有访问,则会话会自动删除)
④浏览器关闭,会话结束,如果浏览器重新打开,则是新的会话
sesssion 的安全性相对较高
增加session
package com.qfedu.cookie.session1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author xue_yun_xiang
* @create 2021-04-12-20:01
*/
@WebServlet("/CreateSession1")
public class CreateSession1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
session.setAttribute("username","chenmotong");
session.setMaxInactiveInterval(60);
resp.getWriter().println("sessionid:" + session.getId());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
查询session
package com.qfedu.cookie.session1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author xue_yun_xiang
* @create 2021-04-12-20:02
*/
@WebServlet("/GetSession1")
public class GetSession1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
String username = (String)session.getAttribute("username");
resp.getWriter().println(username);
resp.getWriter().println(session.getId());
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
删除session
package com.qfedu.cookie.session1;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @author xue_yun_xiang
* @create 2021-04-12-20:03
*/
@WebServlet("/DeleteSession1")
public class DeleteSession1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
//第一种
//session.setMaxInactiveInterval(0);
//第二种
session.invalidate();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}