session的用法

编程语言及工具

99人已加入

描述

  Session直接翻译成中文比较困难,一般都译成时域。在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间。以及如果需要的话,可能还有一定的操作空间。

  具体到Web中的Session指的就是用户在浏览某个网站时,从进入网站到关闭浏览器所经过的这段时间,也就是用户浏览这个网站所花费的时间。因此从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

  需要注意的是,一个Session的概念需要包括特定的客户端,特定的服务器端以及不中断的操作时间。A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。

  session的工作原理

  (1)当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。

  (2)首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。

  (3)当执行PHP脚本时,通过使用session_register()函数注册session变量。

  (4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

  session的用法

  Session简单来说就是服务器给客户端的一个编号。当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。这个SessionID是由WWW服务器随机产生的一个由24个字符组成的字符串,我们会在下面的实验中见到它的实际样子。

  这个唯一的SessionID是有很大的实际意义的。当一个用户提交了表单时,浏览器会将用户的SessionID自动附加在HTTP头信息中,(这是浏览器的自动功能,用户不会察觉到),当服务器处理完这个表单后,将结果返回给SessionID所对应的用户。试想,如果没有SessionID,当有两个用户同时进行注册时,服务器怎样才能知道到底是哪个用户提交了哪个表单呢。除了SessionID,在每个Session中还包含很多其他信息。

  1.设置session

  java里面,可以给session添加自定义key,value(HttpServletRequest request 作为方法的输入参数)

  HttpSession session = request.getSession();

  session.setAttribute(“usrid”, userid);

  2.取得session

  jsp里面可以 这段来源自CSDN一个讨论贴,自己时间后并没有成功,报错是session is undifiened,后来又找了资料说 javascript不提供访问session的功能。session只能通过动态程序操作,可以使用ajax给javascript返回值。

  session.getAttribute(“username”);

  java里面可以 (HttpServletRequest request 作为方法的输入参数)

  HttpSession session = request.getSession();

  session.getAttribute(“usrname”);

  一个使用session进行超时访问控制的实例

  (1)LoginServlet.java 在登录时,设置session属性

  public void doPost(HttpServletRequest request, HttpServletResponse response)

  throws IOException, ServletException {

  String userid = request.getParameter(“username”);

  String pwd = request.getParameter(“password”);

  JSONObject json = new JSONObject();

  AdminDAO adminDAO = new AdminDAO();

  List《Admin》 userList = adminDAO.findByProperty(“usrid”, userid);

  if(userList.get(0).getPassword().equals(pwd)){

  json.put(“success”, true);

  HttpSession session = request.getSession();

  session.setAttribute(“usrid”, userid);

  } else {

  json.put(“success”, false);

  json.put(“meg”, “sorry”);

  }

  PrintWriter pw = response.getWriter();

  pw.print(json.toString());

  pw.close();

  }

  (2)HomePage.java 在跳转到相关页面时,获取并判断session

  public void doPost(HttpServletRequest request, HttpServletResponse response)

  throws ServletException, IOException {

  JSONObject json = new JSONObject();

  HttpSession session = request.getSession();

  if(session==null||session.getAttribute(“usrid”)==null)

  {

  json.put(“success”, false);

  json.put(“meg”, “Time out,please login again!”);

  }

  else

  {

  ...

  json.put(“jsonArray”, array);

  }

  PrintWriter pw = response.getWriter();

  pw.print(json.toString());

  pw.close();

  }

  (3)homePage.html 页面根据(2)的返回值判断是否执行跳转操作

  $(document).ready(function(){

  $.ajax({

  url: “HomePageServlet”,

  type: “post”,

  dataType: “json”,

  success: function(data) {

  if (data[“success”]) {

  ...

  }

  else

  {

  alert(data[“meg”]);

  window.location.href=“login.html”;

  }

  }

  });

  });

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分