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. codevs 1993草地排水

    1993 草地排水

  2. 洛谷P2169 正则表达式

    题目背景 小\(Z\)童鞋一日意外的看到小\(X\)写了一个正则表达式的高级程序,这个正则表达式程序仅仅由字符"\(0\)","\(1\)","\(. ...

  3. php输出变量加{}的作用

    之前在输出字符串中有变量如 echo “中间有”; echo $i; echo "变量"; 现在发现一个好方法,把变量用{}括起来 echo "中间有{$i}变量&quo ...

  4. 黑马Spring学习 bean

  5. Django-Rest-Framework的解析器和渲染器

    Django-Rest-Framework的解析器和渲染器  restful framework 解析器 解析器的作用就是服务端接收客户端传来的数据,把数据解析成自己想要的数据类型的过程 本质就是对请 ...

  6. Ubuntu安装Python2+Python3

    sudo apt-get install python2.7 python2.7-dev sudo apt-get install python3 命令: python 默认执行python2 pyt ...

  7. eclipse plugin

    快速查看目录 org.sf.easyexplore_1.0.4.jar mongo DB net.jumperz.app.MMonjaDB_1.0.16.jar jasper report jaspe ...

  8. surging API网关

    基于.NET CORE微服务框架 -谈谈surging API网关 1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中 ...

  9. 微软官方NET Core 2.0

    NET Core 2.0 微软官方发布的.NET Core 2.0相关的博客: Announcing .NET Standard 2.0 Announcing .NET Core 2.0 F# and ...

  10. spring基础概念AOP与动态代理理解

    一.代理模式 代理模式的英文叫做Proxy或Surrogate,中文都可译为”代理“,所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一 ...