Jsp和session、request.getSession()

  今天在做CAS单点登录时,发现访问客户端,在不关浏览器且只在同一个页签里访问的情况下,先访问客户端A登录成功,再访问B创建了ticket,刷新B则不会再创建ticket,再重新访问A,发现又创建了一遍ticket,不是已经创建过了session了吗?而且浏览器没有关闭,只是在同一个页签里也会导致之前的session被销毁吗?debug看代码,确实在再次访问A的时候session已经没了,不过那个地方写的是

这段是个人吐槽无需观看

以下是正文:

request.getSession(false);

这段代码代表,如果没有和当前request关联的session则不创建session并且返回空

request.getSession(true);
或者
request.getSession();

这两段代码等价,标识如果当前request关联了session则直接返回关联的session,如果没有则创建一个session

简单说一下:

1、当前request如果没有带着sessionid,那么肯定是没有关联session的

2、如果当前request带着sessionid,而服务器上没有匹配该sessionid的session,那么也是没有关联session

有的哥们看完后可能想直接写个jsp测试一下

但是在jsp中无论怎么测session都不会为空。

这是因为jsp的代码里面已经有了getSession():

上面jsp在初始化session的时候已经创建了session,所以到后边不论我怎么获取,这个session都是存在的。

解决办法就是加上session=false:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" session="false"%>
时间: 2024-11-08 20:52:11

Jsp和session、request.getSession()的相关文章

jsp中session的使用

Session的典型应用: 防止用户非法登录到某个页面. 网上商城的购物车 保存用户登录信息 注:多个请求要用的东西放在session中,多个会话之间要用的东西放在上下文中. 如何创建session? Servelt API 中有HttpSession接口,来封装session对象.用HttpServletRequest来获取会话对象. HttpSession  session=request.getSession(); 主要方法:1. getAttribute( String name )获取

jsp的session完成登陆功能

login.jsp: 1 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getSe

Java Web中的servlet、jsp、session等的用法。

1.当服务器响应客户端之后,request和response会立即销毁,在客户端去访问服务器的时候就开启Servlet,当Servlet开启之后就会产生request和response. 2.访问Servlet的6种方式:通过地址栏输入网址提交访问(直接在浏览器上写网址访问),表单访问,超链接访问,伪链接访问,函数访问,用Java代码访问(不讲). ①地址栏输入网址提交访问:http://ip:port/项目名称/user.do<后面可以追加参数,别忘了追加前加一个'?'>  ===>其

Servlet和jsp运用session

HttpSession session=request.getSession(); session.setAttribute("sessions", session); response.sendRedirect("***.jsp"); 在****.jsp中通过sessions取到session对象: <ahref="在web.xml中配置 sess?name=${一个对象 }">你好</a> ?模拟传值 web.xml配

jsp:通过Session控制登陆时间和内部页面的访问

一,通过session的关闭浏览器销毁,和使用getAttribute设置session对象值来控制页面用户是否有权限进入. 1,以下是登陆页面的代码,使用表单提交数据给一个servlet进行数据的处理 <form action="com.in.User" method="post"> <div class="loginbox"> <div class="errorbox"><i cl

【转】于request.getSession(true/false/null)的区别

http://blog.csdn.net/gaolinwu/article/details/7285783 关于request.getSession(true/false/null)的区别 一.需求原因 现实中我们经常会遇到以下3中用法: HttpSession session = request.getSession(); HttpSession session = request.getSession(true); HttpSession session = request.getSessi

转:request.getSession(true)和request.getSession(false)的区别

转自:http://www.cnblogs.com/tv151579/p/3870905.html 1.转自:http://wenda.so.com/q/1366414933061950?src=150 概括: request.getSession(true):若存在会话则返回该会话,否则新建一个会话. request.getSession(false):若存在会话则返回该会话,否则返回NULL ==================================================

jsp:session的跟踪方式

一,HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录.所以需要跟踪用户的sessionID来判断是否是同一个用户访问. 1,使用cookie保存sessionID,cookie是将服务器需要保存的信息写入到本地的文件夹里保存.可以将session保存到cookie中,对于客户端的后续请求可以使用接收到的 cookie 来识别. 浏览器不支持 cookie,所以建议不要使用这种方式来维持

(转)request.getSession()几种获取情况之间的差异

一.三种情况 HttpSession session = request.getSession(); HttpSession session = request.getSession(true); HttpSession session = request.getSession(false); 二.三种情况之间的差异 getSession(boolean create)意思是返回当前reqeust中的HttpSession ,如果当前reqeust中的HttpSession 为null,当cre

request.getSession(true)和request.getSession(false)的区别

request.getSession(true):若存在会话则返回该会话,否则新建一个会话. request.getSession(false):若存在会话则返回该会话,否则返回NULL. 三种重载方法 现实中我们经常会遇到以下3种用法: HttpSession session = request.getSession(); HttpSession session = request.getSession(true); HttpSession session = request.getSessi