当前位置:网站首页>Cookie learning diary 1
Cookie learning diary 1
2022-07-05 04:24:00 【herb. dr】
Catalog
1.3 State management classification
2.5 Cookie Encoding and decoding
One 、 State management
1.1 Existing problems
HTTP Protocol is stateless , Can't save information submitted every time
If the user sends a new request , The server cannot know if it is connected to the last request .
For those that need to submit data multiple times to complete Web operation , For example, login , It's a problem .
1.2 Concept
Will browser and web Multiple interactions between servers are handled as a whole , And the data involved in multiple interactions ( I.e. status ) preserved .
1.3 State management classification
Client state management technology : Save state on client . The representative is Cookie technology .
Server state management technology : Save the state on the server side . The representative is session technology ( Server delivery sessionID When needed Cookie The way ) and application
Two 、Cookie Use
2.1 What is? Cookie
Cookie It's in the browser Web When a resource of the server , from Web The server HTTP The response header is accompanied by a small piece of data transmitted to the browser .
once Web The browser saved some Cookie, Then every time it visits the Web Server time , Should be in HTTP This is in the request header Cookie Send it back to Web The server .
One Cookie Mainly by the name that identifies the information (name) And the value (value) form .

2.2 establish Cookie
1、 establish

package com.ha.cookie;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CookieServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 1、 Server creation Cookie object
Cookie cookie = new Cookie("username", "HuAn");
// 2、 take Cookie Respond to clients
resp.addCookie(cookie);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>ck</servlet-name>
<servlet-class>com.ha.servlet.CookieServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ck</servlet-name>
<url-pattern>/ck</url-pattern>
</servlet-mapping>
</web-app>
2、 see
Run and visit this page
(1) Check mode 1 :
There is a response in the response header cookie

(2) View mode 2


3、 Add
(1) Set the access path

(2) Set up the client cookie Valid time

(3) Set up multiple cookie
2.3 obtain Cookie
package com.ha.cookie;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.net.URLDecoder;
public class GetServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. adopt request Object to get all cookie
Cookie[] cookies = req.getCookies();
//2. Through the loop traversal Cookie
if(cookies!=null){
for(Cookie cookie : cookies){
System.out.println(URLDecoder.decode(cookie.getName(),"UTF-8") +":"+URLDecoder.decode(cookie.getValue(),"UTF-8"));
}
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}

2.4 modify Cookie
Just make sure that Cookie If the name and path of the are consistent, you can modify
Cookie cookie = new Cookie("username", "Tom");
cookie.setPath("/myweb");
cookie.setMaxAge(60*60);
resp.addCookie(cookie);
Be careful : If you change cookie Of name And valid paths will be created cookie, And change cookie value 、 The validity period will cover the original cookie
2.5 Cookie Encoding and decoding
Cookie Chinese is not supported by default , Can only contain ASCI character , therefore Cookie Need to be right Unicode The characters are encoded , Otherwise, there will be confusion .
Coding can use java.net.URLEncoder Class encode(String str, String encoding) Method
Decode using java.net.URLDecoder Class decode(String str, String encoding) Method


2.6 Cookie pros and cons
1、 advantage :
Configurable expiration rules .
simplicity : Cookie Is a text-based lightweight structure , Contains simple key value pairs .
Data persistence : Cookie By default, it can be one before expiration - It has been stored on the client browser
2、 shortcoming :
Size Limited : Most browsers are right Cookie The size of 4K、8K word Section restrictions .
The user is configured to disable : Some users disable browser or client device reception Cookie The ability of , So it limits this function .
Potential security risks : Cookie May be tampered with . May pose a potential risk to security or lead to reliance on Cookie The application for failed .
边栏推荐
- 快手、抖音、视频号交战内容付费
- Is "golden nine and silver ten" the best time to find a job? Not necessarily
- [popular science] basic knowledge of thermal design: heat dissipation analysis of 5g optical devices
- 【thingsboard】替换首页logo的方法
- NetSetMan pro (IP fast switching tool) official Chinese version v5.1.0 | computer IP switching software download
- [phantom engine UE] only six steps are needed to realize the deployment of ue5 pixel stream and avoid detours! (the principles of 4.26 and 4.27 are similar)
- 陇原战“疫“2021网络安全大赛 Web EasyJaba
- Technical tutorial: how to use easydss to push live streaming to qiniu cloud?
- 电源管理总线 (PMBus)
- Sword finger offer 04 Search in two-dimensional array
猜你喜欢

概率论与数理统计考试重点复习路线

MacBook安装postgreSQL+postgis

How to realize real-time audio and video chat function

Laravel8 export excel file

mysql的七种join连接查询

程序员应该怎么学数学

Network layer - forwarding (IP, ARP, DCHP, ICMP, network layer addressing, network address translation)

A solution to the problem that variables cannot change dynamically when debugging in keil5

北京程序员的真实一天!!!!!

What is the reason why the webrtc protocol video cannot be played on the easycvr platform?
随机推荐
函数(基本:参数,返回值)
Network layer - forwarding (IP, ARP, DCHP, ICMP, network layer addressing, network address translation)
After the deployment of web resources, the navigator cannot obtain the solution of mediadevices instance (navigator.mediadevices is undefined)
Convert Boolean to integer value PHP - Convert Boolean to integer value PHP
Laravel8 export excel file
美国5G Open RAN再遭重大挫败,抗衡中国5G技术的图谋已告失败
A应用唤醒B应该快速方法
防护电路中的元器件
All in one 1413: determine base
open graph协议
Components in protective circuit
Judge whether the stack order is reasonable according to the stack order
Is there a sudden failure on the line? How to make emergency diagnosis, troubleshooting and recovery
Interview related high-frequency algorithm test site 3
根据入栈顺序判断出栈顺序是否合理
概率论与数理统计考试重点复习路线
Longyuan war "epidemic" 2021 network security competition web easyjaba
如何优雅的获取每个分组的前几条数据
网络安全-记录web漏洞修复
【虛幻引擎UE】實現UE5像素流部署僅需六步操作少走彎路!(4.26和4.27原理類似)