session学习-实现访问计数
来源:互联网 发布:mac系统忘记密码 编辑:程序博客网 时间:2024/05/22 06:55
浏览器访问Web服务器时,服务器会为每一个浏览器在服务端的内存中分配空间,单独创建一个Session对象,该对象有一个ID属性,其值唯一,一般称为sessionID,并且服务器会将这个sessionID(使用Cookie的方式)发送给浏览器;浏览器再次访问服务器时,会将sessionID发送给服务器,服务器可以依据sessionID找到对应的session对象.
以下是本文的目录大纲:
1、session 工作原理
2、如何获得session
3、如何使用session绑定对象
4、实例:使用session实现访问技术
若有不正之处,请批评指正,不胜感激。
若转载请标明原文链接:
session学习-实现访问计数
1、session 工作原理
2、如何获得session
HttpSession session = request.getSession(boolean flag);
注:
- HttpSession是个借口,后面返回的是符合接口规范的对象
- 当flag为true时:先查看请求中有没有sesssionID,如果没有sessionID,服务器创建一个session对象;如果有sessionID,依据sessionID查找对应session对象,找到则返回,找不到则创建一个新的session对象,所以flag为true时,一定能得到一个session对象
- 当flag为false时,没有sessionID及有sessionID但没有找到session对象,均返回null;找到则返回。
HttpSession session = request.getSession();
等价于request.getSession(true);
3、如何使用session绑定对象
绑定对象:
void session.setAttribute(String name,Object obj);
获取绑定对象:
Object session.getAttribute(String name);
移除绑定对象:
void session.removeAttribute(String name);
注:getAttribute方法的返回值是Object类型,在去除数据时要对其进行数据类型转换,且必须与我们存入的数据类型一致
4、实例:使用session实现访问技术
- 问题
记录不同客户端访问服务器的次数
- 方案
由于对不同的客户端需要区分,所以使用session记录不同客户端的数据。由于访问次数需要保留,所以使用setAttribute方法进行记录。第一次访问时存储为1,后续访问在此基础上自增。
- 步骤
step1 :新建CountServlet
package web;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class CountServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); //获取session对象 HttpSession session = request.getSession(); //输出sessionID System.out.println(session.getId()); //获取绑定的计数器 Integer count=(Integer) session.getAttribute("count"); if(count==null){ count=1; }else{ count++; } //在session中绑定计数器 session.setAttribute("count", count); //输出提示信息 out.println("这是第"+count+"次访问"); out.close(); }}
step2:配置web.xml
<servlet> <servlet-name>CountServlet</servlet-name> <servlet-class>web.CountServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CountServlet</servlet-name> <url-pattern>/count</url-pattern> </servlet-mapping>
step3:部署,访问
查看控制台输出窗口:
*结论:
sessionID跟随一次会话,存储在客户端浏览器的内存中的Cookie里面。第一次创建后,只要不关闭浏览器,那么每一次的请求sessionID都会被自动发送到服务器端。重启浏览器后,sessionID会被销毁,重新创建新的数值。另外,及时打开多个同一个浏览器,sessionID不改变,计数会累加。*
如果有哪位朋友有补充的内容,欢迎下方留言,不胜感激。
- session学习-实现访问计数
- 使用Session实现访问计数
- (ASP.NET)通过Cookie对象实现页面访问计数功能。
- HTML5 实现对用户访问某一页面进行计数
- SAE云应用Counter工具实现访问计数
- Session实现购物,访问计数器,cookie使用!
- 【JavaWeb Structs2学习】 访问request,session,application
- 学习Spring-Session+Redis实现session共享
- 学习Spring-Session+Redis实现session共享
- 学习Spring-Session+Redis实现session共享
- 学习Spring-Session+Redis实现session共享
- 页面访问计数代码
- 用session实现頁麵访问权限控制
- Android客户端访问服务器保持SESSION会话的实现
- Android客户端访问服务器保持SESSION会话的实现
- 关于智能指针,引用计数的学习与实现
- Struts2学习(六):访问隐藏的request和session
- 在浏览器禁用cookies的情况下,实现访问次数的计数
- Hibernate @Temporal的使用
- Ext图表上显示数据
- srm 543
- 老王说ros的tf库
- SiteMesh:装饰页面框架
- session学习-实现访问计数
- Halcon学习之仿射变换4
- nullptr和NULL
- 每日一“结”(7)
- 解决mysql不用用户名和密码可以直接登陆的问题
- Matlab拟合曲线小例子
- newlisp web site benchmark
- js选择checkbox
- CSS-页面布局