Servlet & JSP - Cookies

关于 Cookie 的内容,参考 HTTP - Cookie 机制

获取来自客户端的 cookie

request.getCookies 方法可以获取来自 HTTP 请求的 cookie,返回的是 javax.servlet.http.Cookie 数组。

Cookie[] cookies = req.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        resp.getWriter().print("name: " + cookie.getName());
        resp.getWriter().print(", value: " + cookie.getValue());
        resp.getWriter().print(", domain: " + cookie.getDomain());
        resp.getWriter().print(", path: " + cookie.getPath());
        resp.getWriter().print(", maxAge: " + cookie.getMaxAge());
        resp.getWriter().print(", sercure: " + cookie.getSecure());
        resp.getWriter().print(", version: " + cookie.getVersion());
        resp.getWriter().print(", comment: " + cookie.getComment());
        resp.getWriter().println(", httpOnly: " + cookie.isHttpOnly());
    }
}

很遗憾,没有诸如 getCookieByName 的方法来通过 cookie 的名称获取 cookie,只能遍历 cookie 数组去匹配想要的 cookie。

送 cookie 至客户端

response.addCookie 方法可以将 cookie 送至客户端。

Cookie cookie = new Cookie("userid", userid);
resp.addCookie(cookie);

一旦 cookie 从服务器端发送至客户端,服务器端就不存在可以显示删除 cookie 的方法。但可通过覆盖已过期的 cookie,实现对客户端 cookie 的实质性删除操作。

Cookie cookie = new Cookie("userid", userid);
cookie.setMaxAge(0);
resp.addCookie(cookie);

中文字符

如果 cookie 的内容是中文字符,则需要对其编码:

String username = java.net.URLEncoder.encode("中文字符", "UTF-8");
Cookie cookie = new Cookie("username", username);
resp.addCookie(cookie);

在获取 cookie 时则再对其解码:

java.net.URLDecoder.decode(cookie.getValue(), "UTF-8");

httpOnly 字段

在 servlet3.0 之前,javax.servlet.http.Cookie 没有提供设置 httpOnly 字段的方法。可以通过 Set-Cookie 首部来设置 httpOnly 字段。

resp.addHeader("Set-Cookie", "testcookie=test; Path=/; HttpOnly");
时间: 2024-08-04 02:23:22

Servlet & JSP - Cookies的相关文章

servlet&jsp入门.....韩顺平笔记

u 背景知识介绍 J2EE的13种技术 java->servlet->jsp [技术总是有一个演变过程] zip粘贴到word设置 u 回顾一下我们现有的技术 java 基础(面向对象,集合,界面,线程,文件,网络) jdbc (java 的数据库编程) oracle / mysql / sqlserver html css javascript (web  开发)  ->网页设计 xml serlvet+jsp ->java web开发[使用java技术做 web开发] u ja

构建Apache Tomcat 6.0 Servlet/JSP 容器

构建Apache Tomcat 6.0 Servlet/JSP 容器 这个子项目包含了Tomcat 6.0的源代码,一个实现了Java Community Process http://www.jcp.org/ 的Servlet2.5和JSP2.1标准的容器. 注意:如果你只需要运行Tomcat,没有必要去构建它,你可以非常方便的下载一个二进制发布包.它是跨平台的.阅读RUNNING.txt文件,它介绍了怎样去运行它. 请按以下步骤来从源代码构建一个Tomcat的二进制发布版本: 下载并安装JD

Servlet.service() for Servlet jsp threw exception javax.servlet.ServletException:File "/pageFoo

1.错误描述 Servlet.service() for Servlet jsp threw exception javax.servlet.ServletException:File "/pageFoot.jsp "not found 2.错误原因 <jsp:include page="../../pageFoot.jsp"></jsp:include> 3.解决办法 利用<jsp:include></jsp:includ

Struts2、SpringMVC、Servlet(Jsp)性能对比 测试

Struts2.SpringMVC.Servlet(Jsp)性能对比 测试 . Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照它. 做为一个程序员,对于各个框架的性能要有一个基本的认知,便于选型时做出正确的决策. 在测试中发现了什么也不要大喊大叫,因为这些都是Java程序员的基础知识. 人人都要了解. ----------------------------------------------------------------------------------

javaweb学习总结(二十二)——基于Servlet+JSP+JavaBean开发模式的用户登录注册

一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML.Xpat

javax.servlet.jsp.JspException cannot be resolved

加入以下,解决 <properties> <jdk.version>1.6</jdk.version> <spring.version>3.2.8.RELEASE</spring.version> <spring.security.version>3.2.3.RELEASE</spring.security.version> <!-- Web --> <jsp.version>2.1</jsp

javax.servlet.jsp cannot be resolved to a type

把MyEclipse里的项目导入到Eclipse Luna版中后出现了个莫名其妙的错误,注:Eclipse Luna是新装的. 错误描述:jsp页面中引用的js报错,鼠标放上去以后提示:javax.servlet.jsp cannot be resolved to a type.图片为证: 类似以上底下有红色波浪线的错误,好多jsp页面都有,还各不相同. 解决办法: 点击菜单栏:Window→Preferences→Validation,在右侧找"JSP Syntax Validator&quo

javaweb学习总结——基于Servlet+JSP+JavaBean开发模式的用户登录注册

一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据. Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式. 这里以一个最常用的用户登录注册程序来讲解Servlet+JSP+JavaBean开发模式,通过这个用户登录注册程序综合案例,把之前的学过的XML.Xpat

javax.servlet.jsp cannot be resolved to a type,javax.servlet

可能是jdk 里不包括servlet-api.jar这个包,到tomcat里找到这个包复制到java项目里. 项目名-->右键 Property-->选择 Java Build Path-->选择 Add External JARs-->选择 把servlet-api.jar的路径输入即可 该包在tomcat里有 搜索即课找到 javaxservletjspJspException cannot be resolved to a type javaxservletjspPageCo