servlet设置cookie实验

【README】 本文旨在 通过servlet 设置cookie ,查看cookie长什么样子,来达到了解cookie的目的;

cookie作用: 因为http协议是无状态的,要想维护web访问的状态,就需要使用专门的技术解决。cookie 是一种在客户端保持 http状态信息的技术; 

浏览器第1次访问服务器时,传入个人信息,服务器把这些信息封装到cookie, 返回给客户端;(第1次访问,客户端没有传入 cookie)

浏览器第2次访问服务器时,会带着第1次服务器响应报文中的cookie 传给 服务器,然后服务器通过 客户cookie 信息来获取请求状态; 即把第1次访问和第2次访问当做同一个会话。 只不过这个会话有多个请求和响应。

 

什么是web中的会话?指的是 浏览器与web服务器之间连续发生的一系列请求和响应过程; 

web会话状态: 指web服务器与浏览器在会话过程中产生的状态信息,借助会话状态, 服务器可以把属于同一个会话的一系列请求和响应关联起来,使得他们可以相互依赖,传递和共享数据; 

 

【1】代码,servlet设置cookie (本代码转自张孝祥老师,感谢辛苦付出)

public class CookieServlet1 extends HttpServlet
{public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{response.setContentType("text/html;charset=gb2312");PrintWriter out = response.getWriter();String name = request.getParameter("name");String nickname = request.getParameter("nickname");if(name == null || nickname == null){out.println("请传递参数name和nickname后继续实验!");return;}/*下面的程序代码最好改成如下结构,以增强代码的阅读性:if(…){…return;}…因为笔者在后来校对书稿的过程中,读到下面的if从句时,脑海里面很自然地出现了“if从句执行完后,程序继续干了什么?”的疑问	,如果在if从句中增加了return语句,显然就不会产生这种疑问。*/if("".equals(name.trim()) || "".equals(nickname.trim())){out.println("name和nickname不能为空白串");}else{Cookie ckName = new Cookie("name",name);Cookie ckNickname = new Cookie("nickname",nickname);ckNickname.setMaxAge(365*24*3600);Cookie ckEmail = new Cookie("email","test1@it315.org");Cookie ckPhone = new Cookie("phone","1111111");response.addCookie(ckName);response.addCookie(ckNickname);response.addCookie(ckEmail);response.addCookie(ckPhone);/*应将下面的代码设计成一个专门用于查询某个名称的Cookie的方法,然后用这个方法来查询名称为nickname的Cookie值。*/String lastNickname = null;Cookie [] cks = request.getCookies();for(int i=0; cks!=null && i<cks.length; i++){if("nickname".equals(cks[i].getName())){lastNickname = cks[i].getValue();break;} } if(lastNickname != null){out.println("欢迎您,<b><i>" + lastNickname + "</i></b>!<br>");}else{out.println("欢迎您,新客人!<br>");}String cookieHeader = request.getHeader("Cookie");if(cookieHeader != null){out.println("请求头中的Cookie头字段如下:<br>");out.println("Cookie: " + cookieHeader + "<br>");}else{out.println("请求头中没有Cookie头字段<br>");}}}
}

【2】访问效果,这是第2次访问的效果, 即服务器显示的是第1次访问时,服务器根据请求信息设置的cookie 

访问url: http://localhost:8080/myweb2/cookie/servlet1?name=zhangsan&nickname=zhangsanhao  

【3】cookie 长什么样子呢 ?

可以参考这篇文章 https://www.cnblogs.com/Marydon20170307/p/11613226.html 

第1步: chrome://settings/cookies 

第2步:查看所有cookie 和 网站数据; 

第3步: 搜索 localhost 域名的cookie

上图,我们就看到了cookie的真面目,共计4个; 

 

补充: 本文只是简要展示了cookie是什么?作用以及它的样子。 cookie还有其他东西,比如生命周期....... 大家可以参考其他资料 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 集合类

List&#xff1a;一种有序列表的集合Set&#xff1a;一种保证没有重复元素的集合Map&#xff1a;一种通过键值&#xff08;key-value&#xff09;查找的映射表集合 Java集合的设计有几个特点&#xff1a;一是实现了接口和实现类相分离&#xff0c;例如&#xff0c;有序表的接口…

Spring MVC常用注解,你会几个?

转载自 Spring MVC常用注解&#xff0c;你会几个&#xff1f;常用注解 Controller 注解一个类表示控制器&#xff0c;Spring MVC会自动扫描标注了这个注解的类。 RequestMapping 请求路径映射&#xff0c;可以标注类&#xff0c;也可以是方法&#xff0c;可以指定请求类型&…

转:常用的几种加密算法以及java实现

转自&#xff1a; https://blog.csdn.net/wqwqwqwq403/article/details/103948952 工作中经常会接触到一些加密算法&#xff0c;比如说base64、MD5、DES、AES等等&#xff0c;那么这些算法到底有什么区别以及具体的应用场景是什么呢&#xff0c;下面就做个简要的梳理。 一、什…

JAVA 实现 JWT

引入JWT依赖,由于是基于Java&#xff0c;所以需要的是java-jwt <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</version> </dependency>自定义注解用于判断是否需要验证 用来跳…

SaaS,PaaS,IaaS都是什么鬼

转载自 SaaS,PaaS,IaaS都是什么鬼IaaS Infrastructure as a Service&#xff0c;基础设施即服务。 假如你现在要做一个网站&#xff0c;你肯定要有一台服务器或者虚拟机&#xff0c;要么自己搭建&#xff0c;要么买服务器运营商的。说白了&#xff0c;IaaS就是解决企业硬件问题…

转:什么是 Base64编码

转&#xff1a; https://developer.aliyun.com/article/763589 一、定义 Base64编码 是一种基于 64 个可打印字符来表示二进制数据的方法。目前 Base64 已经成为网络上常见的传输 8 位二进制字节代码的编码方式之一。为什么会有 Base64 编码呢&#xff1f;&#xff08;Base…

什么是Spring Boot?

转载自 什么是Spring Boot? 什么是Spring Boot? Spring Boot是Spring开源组织下的子项目&#xff0c;是Spring组件一站式解决方案&#xff0c;主要是简化了使用Spring的难度&#xff0c;简省了繁重的配置&#xff0c;提供了各种启动器&#xff0c;开发者能快速上手。 官方网站…

JAVA并发知识

JAVA并发知识一、什么是线程和进程&#xff1f;二、线程与进程的关系&#xff0c;区别及优缺点&#xff1f;三、并发和并行有什么区别&#xff1f;四、为什么要使用多线程&#xff1f;五、使用多线程可能会带来什么问题&#xff1f;六、说说线程的生命周期和状态。七、java 中如…

servlet session持久化

1、 session持久化是什么&#xff1f; web服务器把 session中存储的属性存储到本地磁盘或数据库中&#xff1b; 2、为什么需要持久化&#xff1f; 因为 session是服务器维护会话状态的对象&#xff0c;即便客户端关闭连接或客户端长时间没有访问&#xff0c;服务器还依然存储…

高并发解决方案

扩容 垂直扩容&#xff1a;提高系统部件能力水平扩容&#xff1a;增加更多系统成员&#xff08;增加服务器数量&#xff09; 数据库扩容系统属于 读操作 频繁型&#xff0c;可采用垂直扩容 采用 memcache&#xff0c; redis&#xff0c; CDN等缓存系统属于 写操作 频繁型&#…

servlet session 跟踪用户上次访问时间

1、是什么&#xff1f; 上次访问时间&#xff1b;即用户最近一次登录时间&#xff1b; 2、为什么&#xff1f; 为了提示用户登录或访问记录&#xff0c;提高安全性&#xff0c;如qq登录提示&#xff1b; 3、怎么做&#xff1f; 通过cookie 实现&#xff1b; 用户第1次登录&…

Spring MVC表单防重复提交

转载自 Spring MVC表单防重复提交 利用Spring MVC的过滤器及token传递验证来实现表单防重复提交。 创建注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface Token {boolean create() default false;boolean remove() default f…

SpringMvc @RequestParam、 @RequestBody、@RequestPart 的区别

注解RequestParam接收的参数是来自requestHeader中&#xff0c;即请求头。 RequestParam可以接受简单类型的属性&#xff0c;也可以接受对象类型。 RequestParam有三个配置参数&#xff1a; required 表示是否必须&#xff0c;默认为 true&#xff0c;必须。defaultValue 可…

利用session防止表单重复提交

1、是什么&#xff1f;一个表单不能多次提交&#xff1b; 2、为什么&#xff1f; 在网络不好或者并发请求时会导致多次重复提交数据的问题。防止重复提交&#xff0c;可以维护数据一致性&#xff1b; 3、怎么做&#xff1f; 把 session的编号和当前时间戳经过 MD5 加密得到to…

Druid-目前最好的连接池

转载自 Druid-目前最好的连接池 Druid是什么 Druid是阿里开源的连接池&#xff0c;是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能&#xff0c;是为监控而生的数据库连接池&#xff01; GitHub&#xff1a;https://github.com/alibaba/druid/ 添加依赖 &l…

Nginx 部署 Vue 项目刷新页面出现404

问题 使用Vue.框架&#xff0c;利用vue-route编写了一个单页路由项目&#xff0c;运维协助在服务器端配置nginx。部署完成后&#xff0c;访问首页没问题&#xff0c;从首页里打开二级页面没问题&#xff0c;但是所有的二级页面打开后&#xff0c;再次刷新&#xff0c;就会出现…

repost: intro2token

repost 4 https://blog.csdn.net/Jason_Fangh/article/details/55113627 对于初学者来说&#xff0c;对Token和Session的使用难免会限于困境&#xff0c;开发过程中知道有这个东西&#xff0c;但却不知道为什么要用他&#xff1f;更不知道其原理&#xff0c;今天我就带大家一…

vue - resource 使用过程的坑

一. get 传参的坑&#xff1a;加params对象传参&#xff08;不能直接get(url, params)!!!&#xff09; this.$http.get(url, {params: { offset: this.offset, label: this.categray }})二. 使用post请求&#xff1a; 知识点 post参数的形式 form data(表单&#xff0c;通过url…

repo-关于URL编码

repost 4 http://www.ruanyifeng.com/blog/2010/02/url_encoding.html 一、问题的由来 URL就是网址&#xff0c;只要上网&#xff0c;就一定会用到。 一般来说&#xff0c;URL只能使用英文字母、阿拉伯数字和某些标点符号&#xff0c;不能使用其他文字和符号。比如&#xff0c…

Spring零配置之@Configuration注解详解

转载自 Spring零配置之Configuration注解详解 Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件&#xff0c;这也是Spring的核心文件&#xff0c;而Spring3.0之后可以不要配置文件了&#xff0c;通过注解Configuration完全搞定。 Configuration即用来代替S…