01_8_session

1. session总结

1.1服务器的一块内存(存key-value)

1.2和客户端窗口对应(子窗口)(独一无二)

1.3客户端和服务器有对应的SessionID

1.4客户端服务器端发送SessionID的时候两种方式

  1. cookie(内存cookie)
  2. rewrite URL

1.5浏览器禁掉cookie,就不能使用session(使用cookie实现session)

1.6如果想安全的使用session(不论客户端是否禁止cookie),只能使用URL重写(大大增加编程负担),很多网站要求客户端打开cookie

2.例子

2.1ShowSession.java

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

String title = "Session Tracking Example";

HttpSession session = request.getSession(true);

String heading;

Integer accessCount = (Integer) session.getAttribute("accessCount");

System.out.println(accessCount);

if (accessCount == null) {

accessCount = new Integer(0);

heading = "Welcom, Newcomer";

System.out.println(accessCount);

} else {

heading = "Welcome Back";

accessCount = new Integer(accessCount.intValue() + 1);

}

session.setAttribute("accessCount", accessCount);

/*Integer access = (Integer) session.getAttribute("accessCount");

System.out.println(access);*/

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>Session追踪</TITLE></HEAD>");

out.println("  <BODY>");

out.print("<H1 ALIGN=\"CENTER\">" + heading + "</H1>");

out.print("<H2 ALIGN=\"CENTER\">Information on Your Session:</H2>");

out.println("<TABLE BORDER=\"1\" ALIGN=\"CENTER\"><TR><TH>Info Type</TH><TH>Value</TH></TR><TR><TD>Creation Time</TD><TD>" + new Date(session.getCreationTime())+ "</TD></TR><TR><TD>Time of Last Access</TD><TD>" + new Date(session.getLastAccessedTime()) + "</TD></TR><TR><TD>Number of Previous Accesses</TD><TD>" + accessCount+ "</TD></TR></TABLE>");

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}

2.2SessionInfoServlet.java

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

HttpSession session = request.getSession(true);

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>Session Info Servlet</TITLE></HEAD>");

out.println("  <BODY>");

out.print("<H3>Session Information</H3>");

out.print("New Session:" + session.isNew());

out.println("<BR/>Session ID:" + session.getId());

out.println("<BR/>Session Creation Time:" + new Date(session.getCreationTime()));

out.println("<BR/>Session Last Accessed Time:" + new Date(session.getLastAccessedTime()));

out.println("<H3>Request Information</H3>");

out.println("Session ID from Request:" + request.getRequestedSessionId());

out.println("<BR/>Session ID Via Cookie:" + request.isRequestedSessionIdFromCookie());

out.println("<BR/>Session ID Via rewritten URL:" + request.isRequestedSessionIdFromURL());

out.println("<BR/>Valid Sesion ID:" + request.isRequestedSessionIdValid());

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}

2.3URLSession.java

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html; charset=utf-8");

PrintWriter out = response.getWriter();

HttpSession session = request.getSession(true);

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>Session 追踪</TITLE></HEAD>");

out.println("  <BODY>");

out.print("session id:" + session.getId() + "<br/>");

out.print("from url:" + request.isRequestedSessionIdFromUrl() + "<br/>");

out.print("from cookie:" + request.isRequestedSessionIdFromCookie() + "<br/>");

out.println("<a href=" + response.encodeURL(request.getRequestURL().toString()) + "> test </a><br/>");

out.println("<a href=" + request.getRequestURL().toString() + "> test </a><br/>");

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}

01_8_session的更多相关文章

随机推荐

  1. CodeForces - 820

    Mister B and Book ReadingCodeForces - 820A 题意:C,V0,V1,A,L..总共有C页书,第一天以V0速度读,每天加A,但是不能超过V1,并且要从前一天的看到 ...

  2. angular实现表格的全选、单选、部分删除以及全部删除

    昨天自己写了一小段js,在全选的时候有点儿小坑,然后,整理了一下.今天把它贴出来,希望以后还记得. 大家也可以去github上查看或下载:https://github.com/dreamITGirl/ ...

  3. 剑指Offer的学习笔记(C#篇)-- 序列化二叉树

    题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 一 . 理解题意 二叉树的序列化,是将一个结构化的东西变成扁平化的字符串,序列化二叉树或者是反序列化二叉树就是二叉树和扩展二叉树遍历序列之间的 ...

  4. 笔记-迎难而上之Java基础进阶2

    Set集合 import java.util.*; public class HashSetDemo{ public static void main(String[] args){ //Set接口的 ...

  5. atom 插件 python语法验证linter-flake8-------填坑

    python的语法相对于一般语言的语法比较严格.对于刚刚从前端入门python的我来说,有时候代码写完了,然后报错,好多语法错误.所以这个时候一个好的语法验证插件是很好的.linter-flake8这 ...

  6. 2017swpu-ctf总结

    2017swpu-ctf总结 今年是我第一次出题感受很多,就分析几道我印象最深刻的题吧 你能进入后台吗? 这道题主要是考察php_screw还有md5加密开启true过后的注入 phpscrew加密在 ...

  7. HDU-1179-Ollivanders(二分图最大匹配)

    链接:https://vjudge.net/problem/HDU-1179 题意: 有n个法师和m个魔棒,每个法师喜欢多种魔棒,但每个法师只能在喜欢的魔棒中选一个. 求最多有几个法师能选到魔棒. 思 ...

  8. 洛谷P4238【模板】多项式求逆

    洛谷P4238 多项式求逆:http://blog.miskcoo.com/2015/05/polynomial-inverse 注意:直接在点值表达下做$B(x) \equiv 2B'(x) - A ...

  9. 首次开发H5长图页总结

    首次开发H5长图页总结. 资源统一加载 资源统一加载, 分开获取 定义资源标识符 在src/resources目录下 定义各个资源模块. 在Asset.js中获取定义好的所有模块, 循环出具体的文件路 ...

  10. Linux上安装Docker,并成功部署NET Core 2.0

    概述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共 ...