01_8_session
01_8_session
1. session总结
1.1服务器的一块内存(存key-value)
1.2和客户端窗口对应(子窗口)(独一无二)
1.3客户端和服务器有对应的SessionID
1.4客户端服务器端发送SessionID的时候两种方式
- cookie(内存cookie)
- 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的更多相关文章
随机推荐
- CSS中rem、em的区别
引用文档:http://www.divcss5.com/html/h529.shtml:http://blog.csdn.net/qq_35432904/article/details/5180422 ...
- 两数之和LeetCode
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数组中同样的元 ...
- rand()函数的用法
C++中rand() 函数的用法 1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数, ...
- Nginx功能介绍
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的. 从2004年发布至今,凭借开元的力量,已经接近成熟与完善. Nginx功能丰富,可作为HTTP服务器,也可作 ...
- Oracle .NET Core
Oracle .NET Core Beta驱动已出,自己动手写EF Core Oracle https://www.cnblogs.com/yanweidie/p/9064609.html 使用.ne ...
- notepad++ 插件大全
Explorer 资源管理器 Colour Picker 拾色器 SecurePad 加密工具 HTMLTag NppExport 导出为特殊格式 Simple script AHKExtLe ...
- windows 用VMware创建linux虚拟机,安装操作系统CentOS7.2
1.按照向导创建虚拟机 以下是安装虚拟机的步骤,没有写的直接下一步 [1]主页-创建新虚拟机 [2]选择 自定义(高级) [3]选择稍后安装操作系统 [4]给虚拟机命名并指定所在位置 [5]给处理器配 ...
- marquee标签(跑马灯)
- zblog去除底部版权信息 “请勿修改或删除主题版权及作者信息”
场景:使用了免费模板,但底部带作者版权.删除版权信息的代码后访问前台弹窗:请勿修改或删除主题版权及作者信息... 1. 删除版权信息代码 使用notepad++搜索功能,搜索版权信息:如ABC,找到相 ...
- javascript简单计算器实践
参考部分资料,编写一个简单的计算器案例,虽然完成了正常需求,但是也有不满之处,待后续实力提升后再来补充,先把不足之处列出: 1:本来打算只要打开页面,计算器的输入框会显示一个默认为0的状态,但是在输入 ...