1 Trace state:Cookie.
2 Trace state:Session.
3 exercise.
************************************************************
1 Trace state:Cookie.
Cookie:客户端保存状态的机制,通过cookie文件来记录信息
Cookie编程:
从request中获得cookie:Cookie[] request.getCookies()
创建一个Cookie: new Cookie(String name,String value)
获得cookie中的信息: Cookie.getValue() getName()
设置cookie的有效时间: Cookie.setMaxAge(int seconds)//单位秒
0:不支持cookie
负数:会话cookie,即不写文件
把cookie写回客户端: response.addCookie(Cookie cookie)
例子:
用户访问计数(CookieVisitorServlet):cookie版本
第100名访问者奖励一个小礼品
C:\Documents and Settings\%user%\Cookies
创建TwoCookieServlet
要求:创建两个Cookie写回客户端,并设置有效时间10s,观察cookie文件中的内容及
TCP Monitor监视到的HTTP数据报内容
Cookie cookie1=new Cookie("userName","Tommy");
Cookie cookie2=new Cookie("className","SD0702");
HTTP response的内容
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: userName=Tommy; Expires=Fri, 18-May-2007 03:01:10 GMT
Set-Cookie: classNo=SD0702; Expires=Fri, 18-May-2007 03:01:10 GMT
Content-Type: text/html;charset=gbk
Transfer-Encoding: chunked
Date: Fri, 18 May 2007 03:01:00 GMT
7a
<HTML>
<HEAD><TITLE>Two Cookie Servlet</TITLE></HEAD>
<BODY>
<h1 align=center>两个小甜饼</h1>
</BODY>
</HTML>
0
在cookie没有超时的情况下,HTTP request会带上cookie的信息
GET /cookieWeb/two HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 192.168.2.53:8082
Connection: Keep-Alive
Cookie: userName=Tommy; classNo=SD0702
例子:显示所有的Cookie
ListCookieServlet
三种类型的cookie
寿命
setMaxAge:0 不支持Cookie
负数,会话Cookie,保持在浏览器,不写文件
整数,普通Cookie,写文件
注意:Cookie需要客户端浏览器的支持,
如果浏览器禁用Cookie的话,我们的所有Cookie就无效
2 Trace state:Session.
Session:服务器端保存状态的机制,通过HttpSession对象来记录信息
Session编程:
获得Session: request.getSession() getSession(boolean b)
request.getSession()与getSession(true)等价:
没有session对象时候自动创建session对象
getSession(false):没有session对象时候返回null,不会自动创建session对象
Session存信息: HttpSession.setAttribute(String name,Object o)
Session取信息: Object HttpSession.getAttribute()
设置Session有效时间:(单位秒)
HttpSession.setMaxInactiveInterval(int interval)
设置session无效的时间,负数表示永不过时。
手工销毁Session: HttpSession.invalidate()
判断Session是否新建: boolean HttpSession.isNew()
获得SessionID: HttpSession.getId()
用户访问计数(SessionVisitorServlet):session版本
第100名访问者奖励一个小礼品
客户端维护SessionID:
1)通过Cookie来维护SessionID
Web Server生成Session对象后,每次作response时,会自动把SessionID发回到客户端,
客户端把SessionID记入会话Cookie,下次请求时自动带上
服务器第一次的相应会生成一个session id,发送到客户端
HTTP response:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=46C8177FB3EAC6F7FD868E6FA147E9CD; Path=/sessionWeb
Content-Type: text/html;charset=gbk
Transfer-Encoding: chunked
Date: Fri, 18 May 2007 03:54:31 GMT
+++++++++++++++++++++++++++++++++++++++++++++++++++++
下一次客户端的请求会带上以cookie的形式session id
HTTP request:
GET /sessionWeb/visitor HTTP/1.1
Accept: */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host: 192.168.2.53:8082
Connection: Keep-Alive
Cookie: JSESSIONID=46C8177FB3EAC6F7FD868E6FA147E9CD
2)重写URL来维护SessionID(当客户端阻止cookie时,可采用这种方式维护sessionid)
把sessionID加到请求的URL中
out.println("<a href="+response.encodeURL("visitor")+">access again</a>");
http://192.168.2.53:8082/sessionWeb/visitor;jsessionid=1CA21297D00524960931F00F69FF7A4A
销毁Session:
1)session.invalidate()
2)
a session.setMaxInactiveInterval(int interval)(a优先级高于b方法) 1800
也可通过web.xml来设最长不激活时间:
b <session-config>
<session-timeout>30</session-timeout>
</session-config>
default value: 60min
3)Web Server crash(服务器定制,webapp被停止,session都会被销毁。
3
维护状态的方式
1)Cookie
2)Session
3)隐藏表单域
<input type="hidden" name="times" value=""/>
4)URL重写
http://localhost:8080/visitorWeb/visitor?name=Alice&age=23
练习:用户登录管理
分享到:
相关推荐
### Servlet学习笔记精炼知识点 #### 一、Servlet初始化与加载机制 1. **Servlet注册与实例化**:在Web应用中,一个Servlet的生命周期始于它的注册与实例化过程。通常,这一过程是在Web服务器启动时,根据`web.xml...
2020-5-11 Servlet学习---Cookie 2020-5-11 Servlet中的路径 2020-5-11 Servlet学习---Session 2020-5-17 监听器学习 2020-5-17 IDEA中的Maven的简单使用 2020-5-18 JavaWeb学习 2020-5-19 JavaWeb学习 2020-5-21 ...
### Servlet学习笔记4 #### 一、URL Pattern详解 在Servlet配置中,URL Pattern是非常重要的一个概念,它决定了Servlet能够响应哪些请求路径。通常来说,URL Pattern可以分为三种类型: 1. **确切路径匹配**:...
由于直接学习笔记的内容没有给出具体的实例代码和详细解释,所以这里只提供了理论层面的知识点。如果需要学习具体实现,可以寻找相关的教程和项目实践来加深理解。同时需要注意的是,由于JSP/Servlet技术相对老旧,...
【描述】:“韩顺平servlet笔记 tomcat配置 cookie session 开发”描述了学习的重点,包括了如何配置和使用Tomcat服务器,这是运行Java Web应用的基础。Cookie和Session是Web开发中的关键概念,它们用于管理和跟踪...
### 良葛格JspServlet学习笔记 #### 一、引言 在现代Web开发领域,特别是Java EE平台中,JSP (JavaServer Pages) 和 Servlet 技术扮演着非常重要的角色。这两种技术共同构成了Java Web应用的基础,分别侧重于用户...
### servlet学习笔记详解 #### Tomcat介绍 **Tomcat服务器**是基于Sun公司的JSWDK(Java Servlet and Web Development Kit)发展而来的杰出Servlet/JSP容器。作为Apache-Jakarta项目的一部分,Tomcat不仅能够执行...
### Servlet核心概念与实践 ... ... ...请求参数通常出现在URL中。...- **POST请求**:如`POST /servlet/sery HTTP/1.1`...通过深入学习Servlet的工作机制,开发者可以更好地控制Web应用程序的行为,从而提高应用的安全性和性能。
#### 四、Cookie与Session管理 1. **Cookie**: - 是一种用于存储少量信息的数据结构,主要用于跟踪用户的状态。 - 创建Cookie: ```java Cookie c = new Cookie("name", "value"); response.addCookie(c); `...
**J2EE学习笔记概述** J2EE(Java 2 Platform, Enterprise Edition)是一个由Sun Microsystems(现已被Oracle收购)开发的平台,主要用于构建企业级的分布式应用系统。它提供了服务器端组件模型、服务和API,支持...
### Java Web 学习笔记:Servlet 的核心概念与应用 #### 一、Servlet 概述 Servlet 是 Java Web 开发中的重要组成部分,主要用于处理客户端发送到服务器端的 HTTP 请求,并生成响应结果返回给客户端。通过学习 ...
### Servlet学习总结 #### 第一章:Servlet基础部分 ##### 1.1 Servlet简介 - **定义**:Servlet 是一种服务器端的小程序,用于处理来自客户端的请求,并生成响应返回给客户端。它与 Applet 相对,Applet 是...
此外,了解ServletContext、Session和Cookie等概念也是必要的,这些工具可以帮助管理用户会话和共享数据。 总之,“Servlet学习文档”提供的资料将帮助你全面掌握Servlet技术,从基础到高级,从理论到实践,为你的...
J2EE学习笔记主要涵盖了Java企业级开发的关键概念和技术,特别是关于JSP、JavaBean以及Servlet的使用。首先,J2EE模式中的Value Object(值对象)是一个关键概念,它是一个不含业务逻辑的Java对象,通常用于在不同...
【JavaEE学习项目源代码及学习笔记.zip】这个压缩包包含了一系列关于JavaEE技术栈的实践项目源码和对应的学习笔记,旨在帮助开发者深入理解JavaEE的各项核心技术。下面将逐一介绍这些子文件所涵盖的JavaEE知识点。 ...
### JAVA学习笔记1:深入解析J2EE框架与关键技术 #### J2EE模式与Value Object概念 在JAVA学习之旅中,深入理解J2EE(Java 2 Platform, Enterprise Edition)框架是至关重要的一步。J2EE是专为开发企业级应用而...