JavaWeb_cookie和session
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaWeb_cookie和session,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5459字,纯文字阅读大概需要8分钟。
内容图文
![JavaWeb_cookie和session](/upload/InfoBanner/zyjiaocheng/614/0d0dabd284914fa1a7cc8d0cf3f3b4d3.jpg)
1.cookie
cookies是一种服务器通过浏览器在访问者的硬盘上存储信息的手段,当用户再次访问某个站点时,服务端将要求浏览器查找并返回先前发送的Cookie信息,来识别这个用户。
(1).创建Cookie
Cookie cookie = new Cookie("history", value);
cookie.setMaxAge(5); //单位为second
//setMaxAge(0) 可以删除cookie
cookie.setPath("/");
response.addCookie(cookie);//将cookie写入response,以便保存至用户的硬盘上
(2).cookie的相关方法
getComment()返回cookie中注释,如果没有注释的话将返回空值.
getDomain() 返回cookie中Cookie适用的域名.
getMaxAge() 返回Cookie过期之前的最大时间,以秒计算。
getName()返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName。
getPath()返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。
getSecure() 如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。
getValue() 返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。
getVersion() 返回Cookie所遵从的协议版本。
setComment(String purpose) 设置cookie中注释。
setDomain(String pattern) 设置cookie中Cookie适用的域名
setMaxAge(int expiry) 以秒计算,设置Cookie过期时间。
setPath(String uri) 指定Cookie适用的路径。
setSecure(boolean flag) 指出浏览器使用的安全协议,例如HTTPS或SSL。
setValue(String newValue) cookie创建后设置一个新的值。
setVersion(int v) 设置Cookie所遵从的协议版本。
2.session
session是在服务器端建立的,浏览器首次访问服务器getSession()会有一个sessionid,其中隐含将sessionid值作为cookie写回浏览器硬盘,然后浏览器端通过cookie携带的sessionid值,来定位服务器端的session,session的创建和销毁由服务器端控制。由于sessionid值作为cookie保存时,并没有设置cookie的保存时间,当浏览器关闭后cookie也失效,但session还存在在服务器端。
session的生命周期
(1).第一次访问getSession()创建session
(2).摧毁
1).自动摧毁
摧毁默认为30分钟没有访问
<session-config>
<session-timeout>60</session-timeout> <!-- 手动设置默认值 分钟 -->
</session-config>
2).手动摧毁
request.getSession().invalidate();
3).客户端关闭浏览器
浏览器端session手动设定时间
String sessionid = session.getId();
Cookie cookie = new Cookie("JSESSIONID", sessionid);//覆盖session隐含的cookie
cookie.setMaxAge(60*5); //为该cookie设定时间
response.addCookie(cookie);
有的代码只需获取Session,request.getSession(false); 没有必要创建session,性能更好
3.关于cookie的应用
/* * cookie的应用--关于浏览历史记录 */ package cn.baidu.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class book extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8"); Map<Integer, String> books = new HashMap<Integer, String>(); books.put(1, "JavaWeb"); books.put(2, "C++"); books.put(3, "c语言"); books.put(4, "Ug"); books.put(5, "Autocad"); books.put(6, "grip"); books.put(7, "css"); PrintWriter out = response.getWriter(); for(Integer i: books.keySet()){ out.print("<font size='4' color='red'>"+i+"</font>.<a href=/Day01/servlet/bookInfo?id="+i+">"+books.get(i)+"</a><br>"); } Cookie[] cookies = request.getCookies(); if(cookies != null){ for(Cookie cookie: cookies){ if(cookie.getName().equals("bookViewHistory")){ out.print("<br><br>您已经浏览过的商品:<br>"); String[] ids = cookie.getValue().split("\\,"); for(int i=0; i<ids.length; i++){ out.print("<a href=/Day01/servlet/bookInfo?id="+ids[i]+">"+books.get(Integer.parseInt(ids[i]))+"</a><br>"); } } } } } }
package cn.baidu.cookie; import java.io.IOException; import java.util.Arrays; import java.util.LinkedList; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class bookInfo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = request.getParameter("id"); if(id==null && id.equals("")){ return; } String cookieValue = getCookieValue(request, id); Cookie cookie = new Cookie("bookViewHistory", cookieValue); cookie.setMaxAge(60); cookie.setPath("/Day01/servlet/"); response.addCookie(cookie); } private String getCookieValue(HttpServletRequest request, String id) { Cookie[] cookies = request.getCookies(); String str = null; int i = 0; for(i=0; cookies!=null && i<cookies.length; i++){ if(cookies[i].getName().equals("bookViewHistory")){ str = cookies[i].getValue(); break; } } if(cookies==null || i==cookies.length){ System.out.println("sss"); return id; } /* * 注意使用LinkedList可以大大节省代码书写 * 1).先将数组转为List集合 * 2).再将该集合作为Linkedlist的构造的参数,新建一个LinkedList集合 * * 要记住该功能,以方便使用 */ LinkedList<String> list = new LinkedList<String>(Arrays.asList(str.split("\\,"))); if(list.contains(id)){ list.remove(id); }else{ if(list.size() >= 3){ list.removeLast(); } } list.addFirst(id); StringBuilder sb = new StringBuilder(); for(String s: list){ sb.append(s+","); } return sb.toString(); } }
内容总结
以上是互联网集市为您收集整理的JavaWeb_cookie和session全部内容,希望文章能够帮你解决JavaWeb_cookie和session所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。