JSP cookie基础
来源:互联网 发布:指尖软件 编辑:程序博客网 时间:2024/05/21 21:01
HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息。
JSP Cookie处理
Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息。
利用cookie技术识别用户。通常有三个步骤:
- 服务器脚本发送一系列cookie至浏览器。比如名字,年龄,ID号码等等。
- 浏览器在本地机中存储这些信息,以备不时之需。
- 当下一次浏览器发送任何请求至服务器时,它会同时将这些cookie信息发送给服务器,然后服务器使用这些信息来识别用户或者干些其它事情。
Cookie剖析
Cookie通常在HTTP信息头中设置(虽然JavaScript能够直接在浏览器中设置cookie)。在JSP中,设置一个cookie需要发送如下的信息头给服务器:
HTTP/1.1 200 OKDate: Wed, 10 May 2017 03:33:38 GMTServer: Apache/1.3.9 (UNIX) PHP/4.0b3Set-Cookie: name=runoob; expires=Wednesday, 10-May-17 04:33:38 GMT; path=/; domain=runoob.comConnection: closeContent-Type: text/html
Set-Cookie信息头包含一个键值对,一个GMT(格林尼治标准)时间,一个路径,一个域名。键值对会被编码为URL。有效期域是个指令,告诉浏览器在什么时候之后就可以清除这个cookie。
如果浏览器被配置成可存储cookie,那么它将会保存这些信息直到过期。如果用户访问的任何页面匹配了cookie中的路径和域名,那么浏览器将会重新将这个cookie发回给服务器。浏览器端的信息头长得就像下面这样:
GET / HTTP/1.0Connection: Keep-AliveUser-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)Host: zink.demon.co.uk:1126Accept: image/gif, */*Accept-Encoding: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8Cookie: name=xyz
JSP设置Cookie
使用JSP设置cookie包含三个步骤:
/*** (1)创建一个Cookie对象: * 调用Cookie的构造函数,使用一个cookie名称和值做参数,它们都是字符串。*/Cookie cookie = new Cookie("key","value");/*** (2)设置有效期: * 调用setMaxAge()函数表明cookie在多长时间(以秒为单位)内有效。*/cookie.setMaxAge(60*60*24); /*** (3) 将cookie发送至HTTP响应头中:* 调用response.addCookie()函数来向HTTP响应头中添加cookie。*/response.addCookie(cookie);
需要注意的是:JSP Cookie 处理需要对中文进行编码与解码。
String str = java.net.URLEncoder.encode("中文","UTF-8"); //编码String str = java.net.URLDecoder.decode("编码后的字符串","UTF-8"); // 解码
实例:
cookieTest.html
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Cookie Test</title></head><body> <form action="setCookie.jsp" method=GET> 用户: <input type="text" name="name"> <br /> 密码: <input type="text" name="pwd" /> <hr> <input type="submit" value="提交" /> </form></body></html>
setCookie.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.net.*"%><% // 编码,解决中文乱码 String para_name = URLEncoder.encode(request.getParameter("name"), "utf-8"); String para_pwd = URLEncoder.encode(request.getParameter("pwd"), "utf-8"); // 设置 name 和 url cookie Cookie name = new Cookie("name", para_name); Cookie pwd = new Cookie("pwd", para_pwd); // 设置cookie过期时间为1小时。 name.setMaxAge(60 * 60 * 1); pwd.setMaxAge(60 * 60 * 1); // 在响应头部添加cookie response.addCookie(name); response.addCookie(pwd);%><html><head><meta charset="utf-8"><title>Cookie Test</title></head><body> <p>此页在jsp代码里设置了cookie。</p> <p>请在浏览器查看刚设置的cookie</p></body></html>
效果图:
运行:
查看cookie:
JSP读取Cookie
JSP读取cookie,需要调用request.getCookies()方法来获得一个javax.servlet.http.Cookie对象的数组。该数组存储了cookie的所有键值对。
接下来我们读取刚才的cookie。
cookieTest.html里的代码:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Cookie Test</title></head><body> <form action="setCookie.jsp" method=GET> 用户: <input type="text" name="name"> <br /> 密码: <input type="text" name="pwd" /> <hr> <input type="submit" value="提交" /> </form> <br> <hr> <form action="getCookie.jsp" method=GET> <input type="submit" value="getCookie" /> </form></body></html>
getCookie.jsp里的代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="java.net.*"%><html><head><meta charset="utf-8"><title>Cookie Test</title></head><body> <h1>getCookie</h1> <% Cookie[] cookies = request.getCookies(); for(int i=0; i<cookies.length; i++){ out.print("<p>"); out.print("key:"+cookies[i].getName()); out.print("<br>"); out.print("value:"+cookies[i].getValue()); out.print("</p><hr>"); } %></body></html>
运行效果:
JSP删除Cookie
- 获取一个已经存在的cookie然后存储在Cookie对象中。
- 将cookie的有效期设置为0。
- 将这个cookie重新添加进响应头中。
这个比较简单就不演示了。
0 0
- JSP cookie基础
- JSP基础 Cookie Session
- jsp基础:cookie和session
- jsp cookie
- jsp cookie
- Jsp cookie
- jsp:Cookie
- jsp cookie
- jsp cookie
- JSP cookie
- JSP Cookie
- jsp cookie
- jsp--cookie
- [JSP]Cookie
- web day11 JSP基础,Cookie,HttpSession,验证码
- Java Web day(6)之jsp&Cookie&HttpSession基础
- JSP基础(八)——使用Cookie记录信息
- Java EE开发第十三章:jsp基础、cookie、session
- android bluetooth 移植相关注意事项
- (13.1.3.8)PMBOK之三:十大知识领域之风险管理
- sql server身份证校验
- Android中keystore文件的SHA1获取方法
- 关于Android7.0相机闪退以及相册获取不到图片问题
- JSP cookie基础
- 构造函数加上void就不是构造函数了
- 汇编 C混调 异常处理
- 【DP】洛谷 P1470 最长前缀 Longest Prefix
- Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0
- redis扩展
- JDBC-创建数据库
- if语句解析
- JavaScript中的call,apply,bind