session
session在网络应用中称为“会话控制”,是服务器为了保存用户状态而创建的一个特殊的对象。简而言之,session就是一个对象,用于存储信息。
session的存储
session类似于一个Map,里面可以存放多个键值对,是以key-value进行存放的。key必须是一个字符串,value是一个对象。
session底层原理
session是每一个游览器(客户端)所唯一的,其实,在访问一个网站时,在HTTP请求中往往会携带一个cookie,这个cookie的名字是JSESSIONID,这个JSESSIONID表示的就是session的id,这个是由服务器创建的,并且是唯一的。服务器在使用session时,会根据JSESSIONID来进行不同操作。
session常用方法
- resquest.getSession():得到请求游览器(客户端)对应的session。如果没有,那么就创建应该新的session。如果有那么就返回对应的session
- setAttribute(String s, Object o):在session存放属性
- getAttribute(String s):从session中得到s所对应的属性
- removeAttribute(String s):从session中删除s对应的属性
- getId():得到session所对应的id
- invalidate():使session立即无效
- setMaxInactiveInterval(int i):设置session最大的有效时间。
HTTP协议(无状态的通信协议)
HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。
- 浏览器和服务器之间使用的是HTTP请求来进行数据传输
- HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求
- HTTP协议设计成无状态的目的是让每次请求之间相互独立,互不影响
- 请求与请求之间独立后,就无法实现多次请求之间的数据共享
工作过程:当我们在浏览器输入一个网址,此时浏览器就会给对应的服务器发送一个 HTTP 请求,对应的服务器收到这个请求之后,经过计算处理,就会返回一个 HTTP 响应。并且当我们访问一个网站时,可能涉及不止一次的 HTTP 请求和响应的交互过程。
会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。
- 从浏览器发出请求到服务端响应数据给前端之后,一次会话(在浏览器和服务器之间)就被建立了
- 会话被建立后,如果浏览器或服务端都没有被关闭,则会话就会持续建立着
- 浏览器和服务器就可以继续使用该会话进行请求发送和响应,上述的整个过程就被称之为会话。
客户端会话跟踪技术:Cookie存储在浏览器端
服务端会话跟踪技术:Session存储在服务器端
JSTL标签
JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
在JSP文件开头使用
<!--在页面导入jstl的核心类库 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
EL表达式
Expression Language 表达式语言,常用于取值。
EL表达式是通过$ {} 从作用域对象中自动获取数据,如果是对象可以通过,访问其属性
<h2>欢迎来自${user.address}的${user.username}来到主页!</h2>
EL表达式多用于取值操作,而JSTL则可以方便我们对集合进行遍历,对数据进行判断等操作。