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. CSS中rem、em的区别

    引用文档:http://www.divcss5.com/html/h529.shtml:http://blog.csdn.net/qq_35432904/article/details/5180422 ...

  2. 两数之和LeetCode

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...

  3. rand()函数的用法

    C++中rand() 函数的用法 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数, ...

  4. Nginx功能介绍

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的. 从2004年发布至今,凭借开元的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也可作 ...

  5. Oracle .NET Core

    Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle https://www.cnblogs.com/yanweidie/p/9064609.html 使用.ne ...

  6. notepad++ 插件大全

    Explorer 资源管理器 Colour Picker 拾色器 SecurePad  加密工具 HTMLTag  NppExport  导出为特殊格式 Simple script  AHKExtLe ...

  7. windows 用VMware创建linux虚拟机,安装操作系统CentOS7.2

    1.按照向导创建虚拟机 以下是安装虚拟机的步骤,没有写的直接下一步 [1]主页-创建新虚拟机 [2]选择 自定义(高级) [3]选择稍后安装操作系统 [4]给虚拟机命名并指定所在位置 [5]给处理器配 ...

  8. marquee标签(跑马灯)

  9. zblog去除底部版权信息 “请勿修改或删除主题版权及作者信息”

    场景:使用了免费模板,但底部带作者版权.删除版权信息的代码后访问前台弹窗:请勿修改或删除主题版权及作者信息... 1. 删除版权信息代码 使用notepad++搜索功能,搜索版权信息:如ABC,找到相 ...

  10. javascript简单计算器实践

    参考部分资料,编写一个简单的计算器案例,虽然完成了正常需求,但是也有不满之处,待后续实力提升后再来补充,先把不足之处列出: 1:本来打算只要打开页面,计算器的输入框会显示一个默认为0的状态,但是在输入 ...