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的更多相关文章
随机推荐
- 小a和uim之大逃离(luogu P1373 dp)
小a和uim之大逃离(luogu P1373 dp) 给你一个n*m的矩阵,其中元素的值在1~k内.限制只能往下和往右走,问从任意点出发,到任意点结束,且经过了偶数个元素的合法路径有多少个.在此题中, ...
- 基于react+如何搭建一个完整的前端框架(1)
1.使用 create-react-app 快速构建 React 开发环境 create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. ...
- python-django框架中使用FastDFS分布式文件系统
一.安装FastDFS 1-1:执行docker命令安装 # 安装tracker docker run -dti --network=host --name tracker -v /var/fdfs/ ...
- sublime text 3 添加 javascript 代码片段 ( snippet )
例如:新建console.log();的快捷键为 co 环境:windows 7 step1: Tools -> New Snippet <snippet> <content& ...
- loj#6169. 相似序列 hash+主席树
因为他的相似是在排完序下的 那我就在排序的情况下hash啊 这怎么hash啊 主席树啊! 没了 #include <bits/stdc++.h> #define MAXNODE 50000 ...
- CSS——弹性盒模型
弹性盒子是 CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式. 这东 ...
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
- C#实现程序单例日志输出
对于一个完整的程序系统,一个日志记录是必不可少的.可以用它来记录程序在运行过程中的运行状态和报错信息.比如,那些不想通过弹框提示的错误,程序执行过程中捕获的异常等. 首先,在你的解决方案中,适当的目录 ...
- springboot集成shiro实现验证码校验
github:https://github.com/peterowang/shiro/ 这里实现验证码校验的思路是自己添加一个Filter继承FormAuthenticationFilter,Form ...
- springboot集成shiro实现权限缓存和记住我
到这节为止,我们已经实现了身份验证和权限验证.但是,如果我们登录之后多次访问http://localhost:8080/userInfo/userDel的话,会发现权限验证会每次都执行一次.这是有问题 ...