学习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" %>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="check.jsp" method="post">
用户名:<input type="text" name="uname"><br/>
密码: <input type="password" name="upwd"><br/>
<input type="submit" name="提交"><br/>
</form>
</body>
</html>
登录之后页面,check.jsp(其实check.jsp在这相当于服务端)
<%@ page contentType="text/html;charset=UTF-8" language="java"<htm<head>
<title>校验页面</title>
</head>
<body>
<%
//设置编码方式
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");
}
%>
</body>
</html>
如果登录成功则进入welcome.jsp,否则跳回登录页面login.jsp
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
欢迎您:
<%
String name=(String)session.getAttribute("uname"); if(name==null){
response.sendRedirect("login.jsp"); }else {
out.println(name);
}
%>
<a href="invalidate.jsp">注销</a>
</body>
</html>
在welcome中加入注销功能,用<a href="invalidate.jsp">注销</a>语句
invalidate.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
session.invalidate();//session失效
response.sendRedirect("login.jsp");
//session.removeAttribute("uname");//部分失效
%>
</body>
</html>
再建一个客户端页面A.jsp,在登录之后,输出下客户端的JsessionId,看和之前的SessionId是否相等
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
//同一个服务端有效
%>
<%=session.getAttribute("uname")%>
<%
Cookie cookie[]=request.getCookies();
for(Cookie cookie1:cookie){
//验证SessionID和JSESSIONID相等
if(cookie1.getName().equals("JSESSIONID"))
System.out.println("JSESSIONID"+cookie1.getValue());
}
%>
</body>
</html>
7、Session与Cookie的区别
| session | cookie | |
| 保存位置 | 服务端 | 客户端 |
| 安全性 | 高 | 低 |
| 保存内容形式 | Object | String |
8、总结下boby中代码格式
a、<%=%>输出运算符
b、<% !%>全局变量
c、<% %>代码运算符
9、常见状态码
a、404 资源不存在
b、403 权限不足
c、200 一切正常
d、300/30 页面重定向
e、500 服务器代码有误
学习jsp篇:jsp Session介绍的更多相关文章
- Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】
什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服务器中.用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录 ...
- Servlet第六篇【Session介绍、API、生命周期、应用】
什么是Session Session 是另一种记录浏览器状态的机制.不同的是Cookie保存在浏览器中,Session保存在服务器中.用户使用浏览器访问服务器的时候,服务器把用户的信息以某种的形式记录 ...
- JAVA遇见HTML——JSP篇:JSP内置对象(上)
JSP九大内置对象 JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象. <% int[] value={60,70,80}; for(int i:value){ o ...
- Java队列学习第一篇之列介绍
Java并发之显式锁和隐式锁的区别 在面试的过程中有可能会问到:在Java并发编程中,锁有两种实现:使用隐式锁和使用显示锁分别是什么?两者的区别是什么?所谓的显式锁和隐式锁的区别也就是说说Synchr ...
- 学习jsp篇:jsp Cookie介绍
这篇博客介绍下Cookie,JSP中比较重要的知识点Session,Cookie,表单数据,过滤器,文件上传.而Session和Cookie一般放在一起讲,在介绍cookie之前,要先介绍下Cooki ...
- java web学习笔记-jsp篇
1.java web简介 1.1静态页面与动态页面 表现形式 所需技术 静态网页 网页内容固定,不会更新 html,css 动态网页 网页内容由程序动态显示,自动更新 html,css,DB,ja ...
- [转载]JavaEE学习篇之——Session&&Cookie
原文链接: http://blog.csdn.net/jiangwei0910410003/article/details/23337043 今天继续来看看JavaWeb的相关知识,这篇文章主要来讲一 ...
- javaweb回顾第七篇jsp
1:为什么会有JSP jsp全名(java server pages)中文叫做java服务器页面.在Servlet那一篇我们发现用Servlet可以生成动态页面,但是我们却在Servlet中却写了大量 ...
- JavaWeb学习笔记之JSP(一)
1. JSP: 1.1. 为什么需要 JSP ? 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,但是其中的静态网页内容也需要程序员使用Java语言来进行输出,这就造成了大量代码的冗余 ...
随机推荐
- N-Empress
全排列 基本思想:递归.散列 代码实现 #include<cstdio> const int maxn = 11; int n, P[maxn], hashTable[11] = {fal ...
- 一次性删除 .svn 文件夹
方法一 (Windows 7; Python 3.5.2) import os for (p,d,f) in os.walk(r"G:\qycache\test"): if p.f ...
- 利用 Maven 创建 Docker 镜像并且推送到私有注册中心
利用 Maven 命令生成项目框架 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darchetype ...
- 基于CentOS6.5-Hadoop2.7.3-hive-2.1.1安装sqoop1.4.7
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6627736198431375879/ 系统版本,Hadoop已安装完成.链接<CentOS6.5下安装Had ...
- [论文翻译] 分布式训练 Parameter sharding 之 ZeRO
[论文翻译] 分布式训练 Parameter sharding 之 ZeRO 目录 [论文翻译] 分布式训练 Parameter sharding 之 ZeRO 0x00 摘要 0x01 综述 1.1 ...
- 论文解读DEC《Unsupervised Deep Embedding for Clustering Analysis》
Junyuan Xie, Ross B. Girshick, Ali Farhadi2015, ICML1243 Citations, 45 ReferencesCode:DownloadPaper: ...
- ctfshow萌新 web1-7
ctfshow萌新 web1 1.手动注入.需要绕过函数inval,要求id不能大于999且id=1000,所以用'1000'字符代替数字1000 2.找到?id=" "处有回显 ...
- 进程池与线程池基本使用、协程理论与实操、IO模型、前端、BS架构、HTTP协议与HTML前戏
昨日内容回顾 GIL全局解释器锁 1.在python解释器中 才有GIL的存在(只与解释器有关) 2.GIL本质上其实也是一把互斥锁(并发变串行 牺牲效率保证安全) 3.GIL的存在 是由于Cpyth ...
- 【解决了一个小问题】golang protocol buffers 3中去掉json标签中的omitempty
参考了这篇帖子:golang protobuf从生成的json标记中删除omitempty标记 由于是在windows上开发,因此写了一个python脚本来解决: remove_tag.py impo ...
- virtual studio发布到gihub
问题 我们想要发布代码到github或者微软团队服务时候,往往发现没有本地库,所以难以发布. 解决方案 在解决方右击就可以新建git 文件都会出现小锁说明有了记录 文件夹会对应出现 右上角管理连接也会 ...