Servlet 教程 之 Servlet Cookie 处理 2

简介: Servlet教程探讨了Cookie处理,用于识别返回用户。服务器发送Cookie到浏览器,浏览器存储并随后续请求发送。处理中文Cookie需用URLEncoder/URLDecoder进行编码解码。设置Cookie通过HTTP头的Set-Cookie字段,包含名值对、过期时间、路径和域。浏览器在到期前保存并自动发送匹配的Cookie。Servlet利用request.getCookies()获取Cookie数组。

Servlet 教程 之 Servlet Cookie 处理 2

Servlet Cookie 处理

Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。Java Servlet 显然支持 HTTP Cookie。

识别返回用户包括三个步骤:

服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。
浏览器将这些信息存储在本地计算机上,以备将来使用。
当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。
本章将向您讲解如何设置或重置 Cookie,如何访问它们,以及如何将它们删除。

Servlet Cookie 处理需要对中文进行编码与解码,方法如下:

String str = java.net.URLEncoder.encode("中文","UTF-8"); //编码
String str = java.net.URLDecoder.decode("编码后的字符串","UTF-8"); // 解码

Cookie 剖析
Cookie 通常设置在 HTTP 头信息中(虽然 JavaScript 也可以直接在浏览器上设置一个 Cookie)。设置 Cookie 的 Servlet 会发送如下的头信息:

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=runoob.com
Connection: close
Content-Type: text/html
正如您所看到的,Set-Cookie 头包含了一个名称值对、一个 GMT 日期、一个路径和一个域。名称和值会被 URL 编码。expires 字段是一个指令,告诉浏览器在给定的时间和日期之后"忘记"该 Cookie。

如果浏览器被配置为存储 Cookie,它将会保留此信息直到到期日期。如果用户的浏览器指向任何匹配该 Cookie 的路径和域的页面,它会重新发送 Cookie 到服务器。浏览器的头信息可能如下所示:

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, /
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
Servlet 就能够通过请求方法 request.getCookies() 访问 Cookie,该方法将返回一个 Cookie 对象的数组。

目录
相关文章
|
7天前
|
XML 数据格式
Servlet 教程 之 Servlet 文件上传 3
该教程介绍了如何使用Servlet进行文件上传。在web.xml中配置了Servlet `UploadServlet`,类为`com.baidu.test.UploadServlet`,映射路径为`/TomcatTest/UploadServlet`。用户需通过创建的HTML表单提交文件,访问URL为:http://localhost:8080/TomcatTest/upload.jsp。
13 0
|
8天前
|
Java 开发者
Servlet 教程 之 Servlet 文件上传 1
Servlet 文件上传教程展示了如何利用 HTML 表单和 Servlet 处理文件上传。关键点包括:POST 方法的 form,enctype 设为 "multipart/form-data",以及 action 指向如 UploadServlet 的处理程序。所需的 jar 包有 commons-fileupload-1.3.2 和 commons-io-2.5.jar。Servlet 3.0 已内置文件上传支持,无需额外组件。示例的 upload.jsp 文件包含一个单文件上传表单,使用 input[type="file"] 元素。
21 5
|
1天前
|
小程序
Servlet 教程 之 Servlet 调试 3
Servlet调试是开发中的挑战,涉及复杂交互且错误难复现。使用JDB调试器,将HttpServer视为Servlet响应HTTP请求的调试目标。调试时,需配置调试器的classpath以包含HttpServer、Servlet及其相关类。为启用Servlet重载,通常将`server_root/servlets`加入classpath,但在调试时此规则有助于在加载Servlet前设置断点。在正确配置后,可在Servlet代码中设定断点,通过浏览器请求该Servlet以启动调试,程序会在断点处暂停。
11 6
|
1天前
|
Java
Servlet 教程 之 Servlet 调试 1
Servlet调试常面临挑战,尤其是复杂的客户端/服务器交互导致的错误。`System.out.println()`是常用的调试工具,用于验证代码执行和显示变量值,尤其在无需额外类的环境中,如Servlet、JSP等。它不会中断程序执行,适合时序关键的场景。调试信息会出现在Web服务器日志中,例如:`System.out.println("Debugging message")`。
10 2
|
2天前
|
Unix 应用服务中间件 Linux
Servlet 教程 之 Servlet 包 1
Servlet教程介绍了Servlet应用程序的打包部署。默认存放于<Tomcat-installation-directory>/webapps/ROOT,类文件在WEB-INF/classes。例如,Servlet类com.myorg.MyServlet应置于WEB-INF/classes/com/myorg/MyServlet.class。
9 0
|
2天前
|
Java 编译器 API
Servlet 教程 之 Servlet 发送电子邮件 7
在Servlet中发送邮件需要JavaMail API和JAF。将java文件放在类路径下,如`com.myorg`,然后在`<Tomcat-installation-directory>/webapps/ROOT/WEB-INF/classes`目录下,使用`javac`编译`MyServlet.java`。如果依赖其他库,如servlet-api.jar,需将其加入CLASSPATH。确保JDK在PATH环境变量中,以便使用`javac`。
6 0
|
2天前
|
Java API
Servlet 教程 之 Servlet 发送电子邮件 6
Servlet教程展示了如何使用JavaMail API和JAF从Servlet发送邮件。Servlet类位于`com.myorg`包中,名为`MyServlet`,继承自`HttpServlet`。初始化时设置消息,`doGet`方法处理请求,返回HTML响应。要发送邮件,需确保Java库已安装。
8 0
|
3天前
|
Java API 数据安全/隐私保护
Servlet 教程 之 Servlet 发送电子邮件 5
该教程介绍了如何使用Servlet发送带附件的电子邮件。首先,需要安装JavaMail API和JAF。在Servlet中,通过设置邮件服务器属性,创建MimeMessage对象,添加收件人、主题和正文。然后,利用Multipart添加附件,最后通过Transport.send()发送邮件。如果需要身份验证,可添加邮件用户名和密码属性。示例代码展示了完整的发送过程。此外,提到了Web应用的标准目录结构,其中WEB-INF包含classes和lib目录,用于存放类和库文件。
12 1
|
3天前
|
Java API 数据安全/隐私保护
Servlet 教程 之 Servlet 发送电子邮件 4
该教程展示了如何使用Servlet通过JavaMail API发送带附件的电子邮件。首先,确保安装了JavaMail API和JAF。在示例代码`SendEmail.java`中,创建MimeMessage对象,设置发件人、收件人、主题和正文。然后添加MimeBodyPart用于文本和附件,使用Multipart组合它们。最后,通过Transport.send()发送邮件。如果需要认证,可添加"mail.user"和"mail.password"属性。编译并运行Servlet即可发送邮件。
14 2
|
3天前
|
Java API
Servlet 教程 之 Servlet 发送电子邮件 2
使用Servlet发送HTML邮件需要JavaMail API和JAF。在示例中,Servlet创建MimeMessage对象,设置发件人、收件人、主题及HTML内容,然后通过Transport.send()发送。确保相关jar在CLASSPATH中。当Servlet被调用时,它会向指定邮箱发送带有HTML标题的邮件。
25 11