package com.github.houbb.simple.servlet;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.io.PrintWriter;/** * @author binbin.hou * @since 0.0.2 */@WebServlet("/cookie/get")public class CookieGetServlet extends HttpServlet { private static final long serialVersionUID = 491287664925808862L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { // 实际的逻辑是在这里 PrintWriter out = resp.getWriter(); Cookie[] cookies = req.getCookies(); if(cookies != null) { for(Cookie cookie : cookies) { out.println(cookie.getName()+"="+cookie.getValue()+""); } } }}
删除cookie 是非法直接删除的,一般都是首先获取,然后设置 maxAge 为 0 。
package com.github.houbb.simple.servlet;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.io.PrintWriter;/** * 清空 * @author binbin.hou * @since 0.0.2 */@WebServlet("/cookie/clear")public class CookieClearServlet extends HttpServlet { private static final long serialVersionUID = 491287664925808862L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { for(Cookie cookie : req.getCookies()) { // 立刻失效 cookie.setMaxAge(0); cookie.setPath("/"); resp.addCookie(cookie); } resp.setContentType("text/html;charset=utf-8"); resp.setCharacterEncoding("UTF-8"); PrintWriter out = resp.getWriter(); out.println("<a href=https://www.isolves.com/it/cxkf/bk/2021-01-07/'/cookie/add'>添加 cookie 信息"); }}
session
文章插图
session
说明session的实现原理是建立在给浏览器回写cookie,并且是以 JSESSIONID 为键,但是这个cookie是没有时间的,也就是说,当你关闭浏览器时,代表一个会话结束了,也就是说你的session会被删除,当你再次访问服务器的时候,服务器会为你重新创建一个session 。
添加添加 session 属性的方式也比较简单,直接使用 req.getSession().setAttribute("name", "session"); 即可 。
package com.github.houbb.simple.servlet;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.PrintWriter;/** * @author binbin.hou * @since 0.0.2 */@WebServlet("/session/add")public class SessionAddServlet extends HttpServlet { private static final long serialVersionUID = 491287664925808862L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { // 只有在 getSession 的时候,才会设置对应的 JSESSIONID req.getSession().setAttribute("name", "session"); resp.setContentType("text/html;charset=utf-8"); resp.setCharacterEncoding("UTF-8"); PrintWriter out = resp.getWriter(); // 后端会根据页面是否禁用 cookie,选择是否将 sessionId 放在 url 后面 String url = resp.encodeURL("/session/get"); out.println("<a href=https://www.isolves.com/it/cxkf/bk/2021-01-07/'"+url+"'>获取 session 信息
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 2020年Web Apps用户界面发展趋势:组件统治一切
- Json Web Token 2020 攻击指南
- 论淘宝搜索推荐算法排序机制及2021年搜索变化的方向
- 用webpack创建vue项目/脚手架
- 华为防火墙配置:登录Web配置界面
- 小程序websocket开发指南
- 免越狱免签名苹果ioswebAPP打包配置实用工具
- 如何阻止对Web应用程序发起的DoS攻击?
- 一文秒懂Web框架基础之WSGI协议
- Web端非常有用的一个文件上传插件——FilePond