jsp之session(一)

网友投稿 667 2022-05-30

a.浏览网站:开始-关闭

b.购物: 浏览、付款、退出

c.电子邮件:浏览、写邮件、退出

开始-结束

客户端第一次请求服务端时,(jSessionid-sessionid)服务端会产生一个session对象(用于保存该客户的信息);

并且每个session对象 都会有一个唯一的 sessionId( 用于区分其他session);

服务端由会 产生一个cookie,并且 该cookie的name=JSESSIONID ,value=服务端sessionId的值;

jsp之session(一)

然后 服务端会在 响应客户端的同时 将该cookie发送给客户端,至此 客户端就有了 一个cookie(JSESSIONID);

因此,客户端的cookie就可以和服务端的session一一对应(JSESSIONID(客户端) - sessionID(服务端))

客户端第二/n次请求服务端时:服务端会先用客户端cookie种的JSESSIONID 去服务端的session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问,无需登录;

例子:

客户端: 顾客(客户端)

服务端: 存包处 - 商场(服务端)

顾客第一次存包:商场 判断此人是 之前已经存过包(通过你手里是否有钥匙)。

如果是新顾客(没钥匙) ,分配一个钥匙 给该顾客; 钥匙 会和 柜子 一一对应;

第二/n次 存包:商场 判断此人是 之前已经存过包(通过你手里是否有钥匙)

如果是老顾客(有钥匙),则不需要分配;该顾客手里的钥匙 会 和柜子 自动一一对应。

a. session存储在服务端

b. session是在 同一个用户(客户)请求时 共享

c. 实现机制:第一次客户请求时 产生一个sessionid 并复制给 cookie的jsessionid 然后发给客户端。最终 通过session的sessionid-cookie的jsessionid

String getId() :获取sessionId

boolean isNew() :判断是否是 新用户(第一次访问)

void invalidate():使session失效 (退出登录、注销会用到)

void setAttribute()

Object getAttribute();

void setMaxInactiveInterval(秒) :设置最大有效 非活动时间

int getMaxInactiveInterval():获取最大有效 非活动时间

session示例: 登录

案例:

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here

用户名:
密码:

check.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% request.setCharacterEncoding("utf-8") ; String name = request.getParameter("uname"); String pwd = request.getParameter("upwd"); if(name.equals("zs") && pwd.equals("abc")){//假设 zs abc //只有登录成功,session中才会存在uname /upwd session.setAttribute("uname", name) ; session.setAttribute("upwd", pwd) ; System.out.println("sessionId"+session.getId()); session.setMaxInactiveInterval(10) ;//10秒 request.getRequestDispatcher("welcome.jsp").forward(request, response) ; }else{ //登录失败 response.sendRedirect("login.jsp") ; } %>

welocame.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here 欢迎您: <% String name = (String)session.getAttribute("uname") ; //如果 用户没有登录,而是直接 通过地址栏 访问welcome.jsp,则必然获取到的name是null if(name!=null){ out.print(name); System.out.println(); %> <% }else{//如果没有登录,应该跳转登录页面 response.sendRedirect("login.jsp"); } %>

JSP

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:逻辑集群中的用户权限
下一篇:UCOS学习笔记——堆栈
相关文章