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";}                            }});});

转载于:https://www.cnblogs.com/lyxcode/p/7554094.html

Session的用法相关推荐

  1. Session,ViewState用法

    Session,ViewState用法 基本理论: session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐 ...

  2. php中sisson用法,thinkPHP中session()方法用法详解

    本文实例讲述了thinkPHP中session()方法用法.分享给大家供大家参考,具体如下: 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成. 用法 s ...

  3. c中session的用法

    c中session的用法你知道吗?下面小编就跟你们详细介绍下c中session的用法,希望对你们有用. c中session的用法如下: Session的基本属性: 一.属性 1.SessionID S ...

  4. php中sisson用法,详细介绍php中session的用法

    PHP中的session默认情况下是使用客户端的Cookie.当客户端的Cookie被禁用时,会自动通过Query_String来传递. Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个 ...

  5. Flask中的session简易用法教程,以及permanent通俗解释

    总有各种高大上的用法,但是实际写起来就是那么两三行,直接上demo: from datetime import timedelta from flask import Flask,sessionapp ...

  6. CI类实现session基本用法

    首先修改配置文件(config.php) //生成一个随机不重复的字符串走位加密的key保存到config.php的encryption_key中 $config['encryption_key']= ...

  7. session 的用法

    </head><body> <?php //session_start();//开启session,必须写在PHP代码最顶端//HTTP,无状态性 //记录登陆者状态:S ...

  8. session set()用法php,PHP 使用 session_set_save_handler()

    PHP 使用 session_set_save_handler() 对 Session 进行自定义处理 /* Session open (called by session_start( )) Ses ...

  9. Flask session详细用法

    Flask session概念解释 session是基于cookie实现的,保存在服务端的键值对,形式为{随机字符串:'xxxxxx'},同时在浏览器中的cookie中也会保存相同的随机字符串,用来再 ...

最新文章

  1. 算法 求一个数组的最长递减子序列 C
  2. linux apt qt下载,Linux如何安装 apt-get 软件管理工具
  3. 一文详解SVM的Soft-Margin机制
  4. Scala可以将Java中的接口当作特质来使用
  5. jquery插件 autoComboBox 自动创建联动的下拉框 如:省市区联动
  6. linux单次任务调度,go任务调度2(linux的cron调用)
  7. leetcode 123. 买卖股票的最佳时机 III(dp)
  8. 【Kafka】Kafka Streams简介
  9. kindle书籍的后缀名_将azw3“转换”成mobi?——关于Kindle格式电子书的名称与后缀及其他的讨论...
  10. 登记表都不会填,面试还能通过?不可能!
  11. [转帖]星际和魔兽的区别
  12. html:用script实现搜索框
  13. 详解区块链,智能合约,去中心化应用
  14. 03 计算机视觉-opencv图像形态学处理
  15. 线下盛会|欢迎关注 Pulsar Summit 2022 旧金山峰会
  16. iOS 支付宝好友分享
  17. 学术角度看区块链:数字广告行业的“他山之石”
  18. 跨境电商wms系统功能分析
  19. java登陆界面中关于JDBC的一个问题
  20. [Linux] ubuntu安装输入法----小企鹅输入法(Ubuntu上最好用的输入法)

热门文章

  1. 阅读笔记《CKF滤波算法及其在航天器自主导航中的应用》
  2. 软件设计中的csc_通用集中监控中心CSC解决方案
  3. 得阅读者赢联考:MBA联考不能忽略的英语(二)阅读部分
  4. 不用机器学习不用大数据,给你讲通ChatGPT的深层原理
  5. 简单使用taglib 自定义标签
  6. Generation
  7. python群发邮件_python smtp 群发邮件
  8. 【运筹优化】结合天际线启发式的蚁群算法求解二维矩形装箱问题 + Java代码实现
  9. 1.为什么要从古典概率入门概率学《zobol的考研概率论教程》
  10. 我来告诉你代码重构有什么好处