JavaWeb之session

Session是服务器端技术

  利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

Session原理

  Session本身基于Cookie,利用Cookie回写了一个JSESSIONID(JSESSIONID就是服务器为每个session创建的一个唯一的标识)

  • 通过调用request.getSession();获取session,  session域范围:一次会话.(多次请求.)

session是基于cookie的 ,如果客户端cookie禁用了,怎样追踪session?

  可以手动在在请求参数后拼上 ?jsessionid=44A7AAEB8A1547815F6E37EFC0684C8C

  或者 使用url重写,encodeURL,encodeRedirectURL 不过这种方法不建议使用.因为要重写所有的url比较麻烦

  还可以使用隐藏表单域的方法

Session对象的创建和销毁

服务器端第一次调用getSession()的方法时候创建session对象!

Session销毁:

  服务器非正常关闭! 服务器正常关闭session会被序列化.work路径下,再启动会反序列化消失

  手动销毁session 调用session.invalidate()  

  session过期(默认有郊时间30分钟,在tomcat的web.xml中可修改)

Session案例

  Session用于验证码的校验

    需要在生成验证码的时候的,将验证码的4个字符存入到session中.

  Session实现简单购物车

    要想浏览器关闭后,购物信息还在,需要把JSESSIONID通过cookie回写浏览器

 HttpSession session = request.getSession();

         String sessionId = session.getId();

         Cookie cookie = new Cookie("JSESSIONID", sessionId);

         cookie.setMaxAge(60*60);

         response.addCookie(cookie);

实际应用可以结合redis,把session放在redis中,(redis做主从复制)

时间: 2024-11-10 13:18:47

JavaWeb之session的相关文章

JavaWeb之Session技术

session 服务器用于缓存数据会话技术 默认情况:session依赖于cookie 对象HttpSession 1.session原理: 根据上图分析如下: a.浏览器发送请求到服务器,并交给一个servlet进行处理.此时request.getSession()第一次创建session对象,将sessionId以cookie的方式发送给浏览器.同时在服务端会保存session,并且,有唯一的id. b.服务端将响应的信息发送到客户端,客户端会保存cookie信息. c.当浏览器再次请求的时

JavaWeb中session创建于销毁的问题

今天遇到一个奇怪的问题,自己添加了一个session的监听,用来监听在线的人数.但打开浏览器时一直没有走进这个监听中来.最后百度找到了原因: 我们一直存在一个误区,javaweb中的session什么时候创建?我一直认为是第一次与浏览器建立连接的时候,就自动创建一个session.其实不然! 只有在server端的代码调用request.getSession(true)这个方法时,才互创建一个session.其中true表示,如果存在一个相同的session,则直接返回,如果不存在,则创建一个新

【JavaWeb】Session(转)

以下情况,Session结束生命周期,Servlet容器将Session所占资源释放:1.客户端关闭浏览器2.Session过期3.服务器端调用了HttpSession的invalidate()方法. "一个浏览器就是一个新session,关了浏览器session就结束了"session 是在服务器端建立的,浏览器访问服务器会有一个sessionid,浏览器端通过sessionid定位服务器端的session,session的创建和销毁由服务器端控制.当浏览器关闭后,session还存

javaweb之session过期验证

session过期判断的基本思想:用户登录成功后,将用户账号信息保存在session中,然后几乎每次执行命令都要经过过滤器,过滤器检查session中是否存在账号,若不存在, 则返回登录页面,反之正常执行. 1.web.xml中添加 <filter><!-- 配置过滤器,用来检查session中是否存在用户登录账号信息 --> <filter-name>ChkSessionFilter</filter-name> <filter-class>co

JavaWeb基于session和cookie的数据共享

在了解session和cookie技术之前,我们需要先了解一下什么是会话?会话可以简单理解为用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器,整个过程称为一个会话.这样,在一次会话过程中,用户在访问web资源的过程中,各自产生了一些数据,那么用户如何来保存这些数据呢?举个简单例子,假如我们的网站是一个购物的网站,如果用户点击了购买的servlet的之后产生了一条购买的商品数据,这个数据应该存到哪里呢?那么当该用户点击付款servlet的时候,又从哪里去获取上次购买之

8.javaweb之session

session是客户端和服务端的一次会话 web的session是指用户在浏览某个网站时,从进入网站到关闭浏览器的这段时间,uyejiushi用户浏览这个网站所花费的时间. session是一个时间的概念 在服务器的内存中保存着不同用户的session session_page1.jsp <%@ page language="java" import="java.util.*,java.text.*" contentType="text/html;

JavaWeb之Session笔记

一.Session机制 session机制采用的是在服务器端保持 HTTP 状态信息的方案 . 服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId),如果已经包含一个sessionId则说明以前已经为此客户创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现

JavaWeb基础 session getId getMaxInactiveInterval 得到sessionId、最大不活动时间

礼悟:    好好学习合思考,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼强身心,诚劝且行且珍惜. javaEE:7                  javaSE:1.8          JSTL:1.2.2        server:tomcat 8.5    browser:Chrome/Firefox             os:windows7 x64            ide:MyEclipse 2017 in

JavaWeb基础 session isNew 判断session是新生成的 还是旧有的

礼悟:    好好学习合思考,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼强身心,诚劝且行且珍惜. javaEE:7                  javaSE:1.8          JSTL:1.2.2        server:tomcat 8.5    browser:Chrome/Firefox             os:windows7 x64            ide:MyEclipse 2017 项目