JSP session部分

session意为会话,用户打开浏览器访问一个网站无论点击多少页面,点击多少链接直到关闭浏览器 都属于一个会话。

session和Cookie是两兄弟 理解了Cookie 那么session也不难理解

同样验证可以创建 SetSession.jsp 和GetSession.jsp

SetSession.jsp:

<%@ page language="java" contentType="text/html;charset=UTF-8"
    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>
    
 <% 
 session.setAttribute("name","yyp");
 %>
<a href="getSession.jsp">跳转到获取Session的页面</a>

setAttribute的设值方式 和map类似也是键值对 这样建立在之前的JavaSE的集合框架的基础 理解不难

GetSession.jsp :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="javax.servlet.http.Cookie"%>
 
<%
    String name = (String)session.getAttribute("name");
%>
 
session中的name: <%=name%>

getAttribute通过name获取值 其值的数据类型需要进行强转赋值

Session和Cookie的关系:
第一次访问服务器的时候,会在响应头里面看到Set-Cookie信息,
没有带上 Jsessionid 服务端没有Jsessionid会创建一个session对象 把name的值放入 带上Jsessionid 浏览器把该Jsessionid保存于cookie中发送给服务端 把所有的session进行比对 找出相应的session 把name的值取出

那么jsessionid是什么
事实上当用户访问服务器的时候会为每一个用户开启一个session,浏览器是怎么判断这个session到底是属于哪个用户呢?
jsessionid的作用就体现出来了:jsessionid就是用来判断当前用户对应于哪个session。换句话说服务器识别session的方法是通过jsessionid来告诉服务器该客户端的session在内存的什么地方。

事实上jsessionid ==request.getSession().getId()

以上提到的中间运作 主要是cookie保存得有Jsessionid 那如果浏览器关闭了cookie功能 如何来运行session

为了解决这个问题,可以使用

response.encodeURL(“getSession.jsp”)

<a href="<%=response.encodeURL("getSession.jsp")%>">跳转到获取session的页面</a>

response.encodeURL这个方法会将getSession.jsp这个url转换为

getSession.jsp;jsessionid=22424AEA86ADBE89F335EEB649D997A8
也即直接将jsessionid提交到服务端 进行session的选取

既然cookie有有效期自然session也有有效期

就像登校园网一样 长时间之后再次进入会重新登录
这个时间,在Tomcat默认配置下,是30分钟。
可以通过 d:/tomcat/conf/web.xml 中的session-config 配置进行调整

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值