学习jsp篇:jsp Session介绍

学习jsp篇:jsp Session介绍

1、Session基本介绍

Session---会话,它是一个内置对象。会话打个比方说就是浏览网站:开始到结束,或者说购物从开始到结束。

2、Session机制

客户端在第一次请求服务端时,服务端会产生一个Session对象(用于存储客户端信息),每一个Session对象都有唯一的SessionID(区别于其他客户端),同时服务端会产生一个Cookie,并且该Cookie中有一对键值对name=JsessionID,value=SessionID。然后在响应客户端的请求时将JsessionID传给客户端,至此客户端就有了与服务端一一对应的值,即SessionID与JsessionID。

客户端在第二次请求时,服务端会拿客户端中的JsessionID,去服务端中的Session匹配SessionID,如果匹配成功,说明该客户端不是第一次访问。然后可以直接登录开始会话。

3、Session的服务机制

a、Session存储在服务端中

b、Session在同一个用户请求时共享

c、实现机制:第一次客户端请求时产生一个SessionId并赋值给Cookie的jSessionId,然后发送给客户端,最终通过SessionId与JsessionId一一对应

4、举个简单例子

去超市存包,第一次去超市存包时,首先申请柜子,将你的东西放进柜子中,同时超市给你一个钥匙,该钥匙和你放东西的柜子一一对应(就像SessionID和JsessionID一一对应)。等到你第二次再去取你的东西时,不需要再申请拿钥匙,而是直接拿你手上的钥匙(JsessionID)与柜子(SessionID)一一对应打开柜子,取得你的东西。

5、常用方法

a、getId()获取SessionID

b、boolean isNew() 判断是否是新用户(一般在第一次访问时使用)

c、void invalidate()使session失效(退出登录,注销)

d、void setAttribute()

e、Objetct getAttribute()

f、void setMaxInactiveInterval(时间一般为秒)最大有效(非活动时间)

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

6、Session实例

用户请求登录页面login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %> 登录页面

用户名:
密码:

登录之后页面,check.jsp(其实check.jsp在这相当于服务端)

<%@ page contentType="text/html;charset=UTF-8" language="java" 校验页面

<% //设置编码方式

request.setCharacterEncoding("utf-8"); //获得登录的用户名和密码

String name=request.getParameter("uname");

String password=request.getParameter("upwd"); //校验是否登录成功

if(name.equals("zz")&&password.equals("1111")){

//如果登录成功,开始建立session(Session一般在用户登录成功时创建)

session.setAttribute("uname",name);//建立session

session.setAttribute("upwd",password);

//获得sessionID,并将session在控制台输出

System.out.println("sessionID"+session.getId());

//设置session有效时间

//session.setMaxInactiveInterval(10); //这里不用创建Cookie,服务端内部会自己创建JSessionID

//Cookie cookie=new Cookie("uname",name);

//response.addCookie(cookie);

request.getRequestDispatcher("welcome.jsp").forward(request,response);

}else{

response.sendRedirect("login.jsp");

}

%>

如果登录成功则进入welcome.jsp,否则跳回登录页面login.jsp

welcome.jsp

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

Title

欢迎您:

<%

String name=(String)session.getAttribute("uname");

if(name==null){

response.sendRedirect("login.jsp");

}else {

out.println(name);

}

%>

注销

在welcome中加入注销功能,用注销语句

invalidate.jsp

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

Title

<%

session.invalidate();//session失效

response.sendRedirect("login.jsp");

//session.removeAttribute("uname");//部分失效

%>

再建一个客户端页面A.jsp,在登录之后,输出下客户端的JsessionId,看和之前的SessionId是否相等

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

Title

<% //同一个服务端有效

%>

<%=session.getAttribute("uname")%>

<%

Cookie cookie[]=request.getCookies();

for(Cookie cookie1:cookie){

//验证SessionID和JSESSIONID相等

if(cookie1.getName().equals("JSESSIONID"))

System.out.println("JSESSIONID"+cookie1.getValue());

}

%>

7、Session与Cookie的区别

session

cookie

保存位置

服务端

客户端

安全性

保存内容形式

Object

String

8、总结下boby中代码格式

a、<%=%>输出运算符

b、<% !%>全局变量

c、<% %>代码运算符

9、常见状态码

a、404 资源不存在

b、403 权限不足

c、200 一切正常

d、300/30 页面重定向

e、500 服务器代码有误

相关推荐

对演示文稿的播放进行排练和计时
365篮球直播吧App

对演示文稿的播放进行排练和计时

📅 06-30 👁️ 5223
深圳鞋子批发市场在哪里批发
48365大写

深圳鞋子批发市场在哪里批发

📅 06-30 👁️ 3159
快手被限流怎么处理?多久恢复?
365篮球直播吧App

快手被限流怎么处理?多久恢复?

📅 06-28 👁️ 4622
【Excel 教程系列第 15 篇】Excel 中的简单排序(升序 / 降序)、多条件排序、按颜色排序、自定义排序、以及巧用“升序“制作工资条
游击战 屡创奇迹的作战“法宝”
365bet提款多久到账

游击战 屡创奇迹的作战“法宝”

📅 06-30 👁️ 6384
篑的解释
48365大写

篑的解释

📅 06-29 👁️ 5976
姝尧名字寓意,姝尧名字的含义,姝尧名字的意思解释
空调的使用寿命是多久?用多久需要加制冷剂?什么情况是缺制冷剂
我终于知道ps5港版光盘为什么比日版,韩版贵不少的原因了