会话只是指一段指定的时间间隔。

会话跟踪是维护用户状态(数据)的一种方式。它也被称为servlet中的会话管理。

Http协议是一个无状态的,所以我们需要使用会话跟踪技术来维护用户状态。 每次用户请求服务器时,服务器将请求视为新请求。 所以需要保持一个用户的状态来识别特定的用户。

HTTP是无状态的,这意味着每个请求被认为是新的请求。如下图所示:

为什么使用会话跟踪?

  • 因为需要用于识别特定的用户。

会话跟踪技术

会话跟踪中使用的技术有四种:

  • Cookies
  • 隐藏表格域
  • 网址重写
  • HttpSession

Cookie是在多个客户端请求之间持久存储的一小段信息。

Cookie具有名称,单个值和可选属性,例如注释,路径和域限定符,生存周期和版本号。

Cookie工作原理

默认情况下,每个请求都被视为新的请求。在cookie技术中,servlet响应可以添加cookie。 所以cookie存储在浏览器的缓存中。之后,如果用户发出请求,默认情况下会带上cookie。 因此,我们就可以知道用户旧用户。

Cookie类型

Servlet中有2种类型的Cookie。

  • 非持久性cookie
  • 持久性Cookie

非持久性cookie

  • 它仅适用于单个会话。当用户关闭浏览器时都会删除它。

持久性Cookie

  • 它对多个会话有效。当用户关闭浏览器时也不会删除它。只有在用户注销或注销时才被删除。

Cookie的优点

  • 维持状态最简单的技术。
  • Cookie在客户端维护。

Cookie的缺点

  • 如果从浏览器中禁用Cookie,则无法正常工作。
  • 只能在Cookie对象中设置文本信息。

Cookie类

javax.servlet.http.Cookie类提供了使用Cookie的功能。它为Cookie提供了很多有用的方法。

Cookie类的构造方法

构造方法 描述
Cookie() 构建一个cookie。
Cookie(String name, String value) 构造具有指定名称和值的cookie。

Cookie类的方法

下面中给出了一些常用的Cookie类方法。

方法 描述
public void setMaxAge(int expiry) 设置cookie的最大生命周期(以秒为单位)。
public String getName() 返回cookie的名称。创建后无法更改名称。
public String getValue() 返回cookie的值。
public void setName(String name) 更改cookie的名称。
public void setValue(String value) 更改cookie的值。

使用Cookies所需的其他方法

要添加cookie或从cookie获取值,需要其他接口提供的一些方法。它们分别是:

  • public void addCookie(Cookie ck)HttpServletResponse接口的方法用于在响应对象中添加cookie。
  • public Cookie[] getCookies()HttpServletRequest接口的方法用于从浏览器返回所有的cookie。

如何创建Cookie?

下面来看看创建cookie的简单代码。

Cookie ck=new Cookie("user","maxsu jaiswal");//creating cookie object
response.addCookie(ck);//adding cookie in the response
Java

如何删除Cookie?

下面来看看删除cookie的简单代码。它主要用于注销或注销用户。

Cookie ck=new Cookie("user","");//deleting value of cookie
ck.setMaxAge(0);//changing the maximum age to 0 seconds
response.addCookie(ck);//adding cookie in the response
Java

如何获取Cookie?

下面来看看简单的代码用来获取所有的cookies。

Cookie ck[]=request.getCookies();
for(int i=0;i<ck.length;i++){
out.print("<br>"+ck[i].getName()+" "+ck[i].getValue());//printing name and value of cookie
}

Cookie是存储在客户端的一种信息技术。

在上一页中,我们学到了很多关于cookie的内容 如何创建cookie,如何删除cookie,如何获取cookie等

在这里,我们将使用servlet cookie创建一个登录和注销示例。

在这个例子中,我们创建了3个链接:登录,注销和用户资料。用户在未登录之前不能进入个人资料页面。如果用户已经注销,则需要再次登录才能访问个人资料。

在这个应用程序中,创建了以下文件。

  • index.html - Web应用程序首页。
  • link.html - 链接页面。
  • login.html - 登录页面。
  • LoginServlet.java - 登录Servlet处理。
  • LogoutServlet.java - 注销Servlet处理。
  • ProfileServlet.java - 用户个人资料Servlet。
  • web.xml - Servlet配置文件。

Servlet高级应用的更多相关文章

  1. <<< web里面Servlet高级应用的基础介绍

    Servlet中的页面跳转?两种方式,实现跳转:内部跳转(请求转发).外部跳转(重定向)内部跳转(请求转发)特点:在服务器内部完成页面之间的跳转:请求只有一次:浏览器地址不会改变.request.ge ...

  2. Servlet高级

    1. 获取初始化参数 在web.xml中配置Servlet时,可以配置一些初始化参数.而在Servlet中可以通过ServletConfig接口提供的方法来取得这些参数. index.jsp < ...

  3. Servlet高级应用---Servlet与缓存

    一]设置缓存文件的有效日期        重点方法:            HttpServletRequest类:                    1>String getRequest ...

  4. servlet 高级知识之Filter

    Filter叫做拦截器, 对目标资源拦截,拦截HTTP请求和HTTP响应,本质是对url进行拦截. 与serlvet不同的是, Filter的初始化是随着服务器启动而启动. 在Filter接口中定义了 ...

  5. Servlet高级部分Listener

    监听器的使用场景: ①:统计在线人数   ②:实现单一登录[一个账号只能在一台机器上登录] Servlet中的8大监听器: 1.         ServletContextListener [接口方 ...

  6. Servlet高级部分Filter(过滤器)

    一:Filter称之为"过滤器",用在Servlet外,对request和response进行修改.它是AOP(面向切面编程思想的一种体现),Filter中有一个FilterCha ...

  7. servlet 高级知识之Listener

    Listener,顾名思义,监听器.它可以监听客户端的请求.服务端的操作等. 通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionCre ...

  8. JavaWeb初级进阶高级学习方向计划

    阶段1 语言基础 课程一.Java负基础扫盲课 1.初识Java 本课程从java开发环境配置开始,讲解了java语法基础 .类和面向对象.面向对象编程三大特性:封装.继承.多态.建议零基础学员从本课 ...

  9. java web学习笔记-Servlet篇

    Servlet基础 1.Servlet概述 JSP的前身就是Servlet.Servlet就是在服务器端运行的一段小程序.一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问 ...

随机推荐

  1. 快速开发第一个SpringBoot应用

    通过笔者这段实践SpringBoot的学习,发现自从使用了SpringBoot后,就再也回不去SpringMVC了,因为相比于SpringMVC,SpringBoot真是太高效率了.下面我们看看它效率 ...

  2. Protobuf 小试牛刀

    本文以PHP为例. 环境: CentOS 6.8 proto 3.8 PHP 7.1.12 PHP protobuf扩展 3.8.0 go1.12.5 linux/amd64 本文示例仓库地址: ht ...

  3. Spark学习之路(五)—— Spark运行模式与作业提交

    一.作业提交 1.1 spark-submit Spark所有模式均使用spark-submit命令提交作业,其格式如下: ./bin/spark-submit \ --class <main- ...

  4. Linux就该这么学---第一课 20190705

    要认真学习,认真完成作业,最主要是坚持,我感觉自己坚持这个能力欠缺,要主动改正. 还想说一句,以前我是20期学员,后面没有时间学习了,现在到22期了,我要坚持学习完成,坚持 坚持 坚持!!! 现在分享 ...

  5. leadcode的Hot100系列--78. 子集--回溯

    上一篇说了使用位运算来进行子集输出,这里使用回溯的方法来进行排序. 回溯的思想,我的理解就是: 把解的所有情况转换为树或者图,然后用深度优先的原则来对所有的情况进行遍历解析. 当然,因为问题中会包涵这 ...

  6. C#中的委托和事件(上篇)

    每一个初学C#的程序猿,在刚刚碰到委托和事件的概念时,估计都是望而却步,茫然摸不到头脑的.百度一搜,关于概念介绍的文章大把大把的,当然也不乏深入浅出的好文章.可看完这些文章,大多数新手,估计也只是信心 ...

  7. WeUI Picker组件 源代码分析

    前言 由于最近做的一个移动端项目需要使用到类似 WeUI Picker组件 的选择效果,  所以在这里来分析下 WeUI Picker 的实现逻辑.(weui.js项目地址) 之前也做过类似的组件, ...

  8. js 为何范围内随机取整要用floor,而不是ceil或者round呢

     壹 ❀ 引 我在如何使用js取任意范围内随机整数这篇博客中,列举并分析了取[n,m)与[n,m]范围内整数的通用方法,并在文章结果留了一个疑问:为什么通用方法中取整操作,我们使用Math.floor ...

  9. 卸载 python 3.7.3 再安装 遇到 error 0x80070001

    这件事告诉我,千万不要手贱,闲的发慌蛋疼 手贱把用得好好的python 3.7.3 卸载后怎么装也装不回去, 告诉我遇到了 error 0x80070001 最终还是靠强大的谷歌找到了办法,幸好没有重 ...

  10. 20131214-EditPlus快捷键-第二十一天

    EditPlus 快捷键 文件   FileFtpUpload Ctrl+Shift+S 上传文件到 FTP 服务器 FileNew Ctrl+N 新建普通的文本文档 FileNewHtml Ctrl ...