远程教育网站建设,系部网站建设中期检查总结,导航网站模板免费,搜索网站的软件有哪些目录 1 什么是Cookie
2 创建Cookie
3 浏览器查看Cookie
3.1 浏览器查看Cookie的第一种方式
3.2 浏览器查看Cookie的第二种方式
4 获取Cookie
5 修改Cookie
6 Cookie编码与解码
6.1 创建带中文Cookie
6.2 读取带中文Cookie
6.3 获取中文Cookie请求效果
6.4 解决创建和…目录 1 什么是Cookie
2 创建Cookie
3 浏览器查看Cookie
3.1 浏览器查看Cookie的第一种方式
3.2 浏览器查看Cookie的第二种方式
4 获取Cookie
5 修改Cookie
6 Cookie编码与解码
6.1 创建带中文Cookie
6.2 读取带中文Cookie
6.3 获取中文Cookie请求效果
6.4 解决创建和获取中文Cookie
7 Cookie优点和缺点
7.1 Cookie优点
7.2 Cookie缺点 1 什么是Cookie Cookie是在浏览器访问Web服务器的某个资源时由Web服务器在HTTP响应消息头中附带传送给浏览器的一小段数据。
一旦Web浏览器保存了某个Cookie那么它在以后每次访问该Web服务器时都应在HTTP请求头中将这个Cookie回传给Web服务器。
一个Cookie主要有标识该信息的名称name和值value组成。 2 创建Cookie
//设置CookieCookie cookie new Cookie(username, zhangsan);/*
*设置Cookie存活时间在浏览器内存中的保存时间单位为秒
* 正数将Cookie写入浏览器所在电脑的硬盘持久化存储。到时间自动删除
* 负数默认值Cookie在当前浏览器内存中当浏览器关闭则Cookie被销毁
* 零删除对应Cookie
*/
cookie.setMaxAge(60);//设置Cookie的访问路径
cookie.setPath(/webProject05_war_exploded/GetCookieValueServlet01);//发送Cookie到客户端
response.addCookie(cookie); 3 浏览器查看Cookie
3.1 浏览器查看Cookie的第一种方式 3.2 浏览器查看Cookie的第二种方式 4 获取Cookie
//获取所有Cookie
Cookie[] cookies request.getCookies();//遍历数组,获取所有的Cookie
for (Cookie cookie : cookies) {System.out.println(cookie.getName() - cookie.getValue());
}System.out.println(----------------------------------------);//遍历数组获取指定的Cookie
for (Cookie cookie : cookies) {if (cookie.getName().equals(username)) {System.out.println(cookie.getName() - cookie.getValue());}
} 5 修改Cookie 只需要保证Cookie的名称和路径一致即可修改
注意如果改变cookie的name和有效路径会新建cookie,而改变cookie值、有效期会覆盖原有cookie //设置Cookie,如果改变cookie的name和有效路径会新建cookie,而改变cookie值、有效期会覆盖原有cookie
Cookie cookie new Cookie(username, lisi);/*
*设置Cookie存活时间在浏览器内存中的保存时间单位为秒
* 正数将Cookie写入浏览器所在电脑的硬盘持久化存储。到时间自动删除
* 负数默认值Cookie在当前浏览器内存中当浏览器关闭则Cookie被销毁
* 零删除对应Cookie
*/
cookie.setMaxAge(30);//设置Cookie的访问路径cookie.setPath(/webProject09_war_exploded/GetCookieValueServlet01);//发送Cookie到客户端
response.addCookie(cookie);
6 Cookie编码与解码
Cookie默认不支持中文只能包含ASCII字符所以Cookie需要对Unicode字符进行编码否则会出现乱码 编码可以使用java.net.URLEncoder类的encode(String str,String encoding)方法 解码可以使用java.net.URLDecoder类的decode(String str,String encoding)方法 6.1 创建带中文Cookie package com.cxyzxc.www.servlet01;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;WebServlet(name CookieServlet03, value /CookieServlet03)
public class CookieServlet03 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求参数的编码格式这种方式对get请求方式无效request.setCharacterEncoding(UTF-8);//设置响应编码格式为UTF-8response.setContentType(text/html;charsetUTF-8);//Cookie默认不支持中文只能包含ASCII字符所以Cookie需要对Unicode字符进行编码否则会出现乱码Cookie cookie new Cookie(姓名, 张三);//设置Cookie的访问路径cookie.setPath(/webProject09_war_exploded/GetCookieValueServlet03);//发送Cookie到客户端response.addCookie(cookie);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
6.2 读取带中文Cookie
package com.cxyzxc.www.servlet01;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;WebServlet(name GetCookieValueServlet03, value /GetCookieValueServlet03)
public class GetCookieValueServlet03 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求参数的编码格式这种方式对get请求方式无效request.setCharacterEncoding(UTF-8);//设置响应编码格式为UTF-8response.setContentType(text/html;charsetUTF-8);//获取所有CookieCookie[] cookies request.getCookies();//遍历数组,获取所有的Cookiefor (Cookie cookie : cookies) {System.out.println(cookie.getName() - cookie.getValue());}System.out.println(----------------------------------------);//遍历数组获取指定的Cookiefor (Cookie cookie : cookies) {if (cookie.getName().equals(姓名)) {System.out.println(cookie.getName() - cookie.getValue());}}}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
6.3 获取中文Cookie请求效果 6.4 解决创建和获取中文Cookie
6.4.1 创建中文Cookie
package com.cxyzxc.www.servlet01;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;WebServlet(name CookieServlet04, value /CookieServlet04)
public class CookieServlet04 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求参数的编码格式这种方式对get请求方式无效request.setCharacterEncoding(UTF-8);//设置响应编码格式为UTF-8response.setContentType(text/html;charsetUTF-8);//Cookie默认不支持中文只能包含ASCII字符所以Cookie需要对Unicode字符进行编码否则会出现乱码Cookie cookie new Cookie(URLEncoder.encode(姓名,UTF-8),URLEncoder.encode(张三,UTF-8));//设置Cookie的访问路径cookie.setPath(/webProject09_war_exploded/GetCookieValueServlet04);//发送Cookie到客户端response.addCookie(cookie);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
} 6.4.2 获取中文Cookie package com.cxyzxc.www.servlet01;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;WebServlet(name GetCookieValueServlet04, value /GetCookieValueServlet04)
public class GetCookieValueServlet04 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//设置请求参数的编码格式这种方式对get请求方式无效request.setCharacterEncoding(UTF-8);//设置响应编码格式为UTF-8response.setContentType(text/html;charsetUTF-8);//获取所有CookieCookie[] cookies request.getCookies();//遍历数组获取指定的Cookiefor (Cookie cookie : cookies) {if (URLDecoder.decode(cookie.getName(),UTF-8).equals(姓名)) {System.out.println(URLDecoder.decode(cookie.getName(),UTF-8) - URLDecoder.decode(cookie.getValue(),UTF-8));}}}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
6.4.3 获取中文Cookie请求效果 7 Cookie优点和缺点
7.1 Cookie优点 可配置到期规则 简单性Cookie是一种基于文本的轻量结构包含简单的键值对 数据持久性Cookie默认在过期之前是可以一直存在客户端浏览器上的
7.2 Cookie缺点 大小受到限制大多数浏览器对Cookie的大小有4K、8K字节的限制 用户配置为禁用有些用户禁用了浏览器或客户端设备接收Cookie的能力因此限制了这一功能 潜在的安全风险Cookie可能会被篡改。会对安全性造成潜在风险或者导致依赖于Cookie的应用程序失败