Servlet高级应用
会话只是指一段指定的时间间隔。
会话跟踪是维护用户状态(数据)的一种方式。它也被称为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
如何删除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
如何获取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高级应用的更多相关文章
- <<< web里面Servlet高级应用的基础介绍
Servlet中的页面跳转?两种方式,实现跳转:内部跳转(请求转发).外部跳转(重定向)内部跳转(请求转发)特点:在服务器内部完成页面之间的跳转:请求只有一次:浏览器地址不会改变.request.ge ...
- Servlet高级
1. 获取初始化参数 在web.xml中配置Servlet时,可以配置一些初始化参数.而在Servlet中可以通过ServletConfig接口提供的方法来取得这些参数. index.jsp < ...
- Servlet高级应用---Servlet与缓存
一]设置缓存文件的有效日期 重点方法: HttpServletRequest类: 1>String getRequest ...
- servlet 高级知识之Filter
Filter叫做拦截器, 对目标资源拦截,拦截HTTP请求和HTTP响应,本质是对url进行拦截. 与serlvet不同的是, Filter的初始化是随着服务器启动而启动. 在Filter接口中定义了 ...
- Servlet高级部分Listener
监听器的使用场景: ①:统计在线人数 ②:实现单一登录[一个账号只能在一台机器上登录] Servlet中的8大监听器: 1. ServletContextListener [接口方 ...
- Servlet高级部分Filter(过滤器)
一:Filter称之为"过滤器",用在Servlet外,对request和response进行修改.它是AOP(面向切面编程思想的一种体现),Filter中有一个FilterCha ...
- servlet 高级知识之Listener
Listener,顾名思义,监听器.它可以监听客户端的请求.服务端的操作等. 通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionCre ...
- JavaWeb初级进阶高级学习方向计划
阶段1 语言基础 课程一.Java负基础扫盲课 1.初识Java 本课程从java开发环境配置开始,讲解了java语法基础 .类和面向对象.面向对象编程三大特性:封装.继承.多态.建议零基础学员从本课 ...
- java web学习笔记-Servlet篇
Servlet基础 1.Servlet概述 JSP的前身就是Servlet.Servlet就是在服务器端运行的一段小程序.一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问 ...
随机推荐
- 案例解析:springboot自动配置未生效问题定位(条件断点)
Spring Boot在为开发人员提供更高层次的封装,进而提高开发效率的同时,也为出现问题时如何进行定位带来了一定复杂性与难度.但Spring Boot同时又提供了一些诊断工具来辅助开发与分析,如sp ...
- YARN分析系列之三 -- 从脚本入口分析 ResourceManager的初始化过程
1. 由脚本找到 RM 主类 这部分,我们从脚本作为入口去逐步深入ResourceManager源码. 从 Hadoop 官方文档 中可以看到 ResourceManager 的启动命令为: Usag ...
- Protobuf 小试牛刀
本文以PHP为例. 环境: CentOS 6.8 proto 3.8 PHP 7.1.12 PHP protobuf扩展 3.8.0 go1.12.5 linux/amd64 本文示例仓库地址: ht ...
- never下ioc
生命周期 当前分单例,作用域(范围),短暂.单例是整个服务中只有一个实例,短暂则是每一次得到的都是新的实例,作用域就是在该一套行动中内得到的是同一个实例,该行动中指的是什么?我们看看demo下的sta ...
- SkyWorking基础:6.2版本安装部署
就在今天,SkyWorking发布了6.2版本. 概述 什么是SkyWorking SkyWalking是观察性分析平台和应用性能管理系统. 提供分布式追踪.服务网格遥测分析.度量聚合和可视化一体化解 ...
- .NET CORE与Spring Boot编写控制台程序应有的优雅姿势
本文分别说明.NET CORE与Spring Boot 编写控制台程序应有的“正确”方法,以便.NET程序员.JAVA程序员可以相互学习与加深了解,注意本文只介绍用法,不会刻意强调哪种语言或哪种框架写 ...
- Spark学习之路(十二)—— Spark SQL JOIN操作
一. 数据准备 本文主要介绍Spark SQL的多表连接,需要预先准备测试数据.分别创建员工和部门的Datafame,并注册为临时视图,代码如下: val spark = SparkSession.b ...
- Python批量自动裁剪图片
"""用Pythonp批量裁剪图片""" from PIL import Image import matplotlib.pyplot as ...
- 设计模式-责任链模式(responsibility)
责任链模式是行为模式的一种,该模式构造一系列的分别担当不同职责的类的对象(HeaderCar.BodyCar.FooterCar)来共同完成一个任务,这些类的对象之间像链条一样紧密相连. 角色和职责: ...
- 执行某个文件夹下面的所有.py文件
# 写一个函数,接受一个参数,如果是文件,就执行这个文件,如果是文件夹,就执行这个文件夹下所有的py文件 # 工作应用场景,假设一个文件夹下面有100个py文件,同步一些时间 # 例如抢票软件 10点 ...