javaweb(Session Cookie服务器与客户端存储)
本期内容
文章目录
Session的概念
Session在网络中被称为会话(服务端存储 session中的数据占运行内存)。
由于HTTP协议(超文本传输协议)是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。
为了弥补这一缺点,HTTP协议提供了Session。通过Session可以在应用程序的WEB页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。
如图:
Session对象的常用方法
类型 | 方法名称 | 说 明 |
---|---|---|
void | setAttribute(String key,Object value) | 以key/value的形式保存对象值 |
Object | getAttribute(String key) | 通过key获取对象值 |
int | getMaxInactiveInterval**()** | 获取session的有效非活动时间,以秒为单位 |
String | getId**()** | 获取session对象的编号 |
void | invalidate() | 设置session对象失效 |
使用session实现访问控制
在控制页面获取用户请求的登录信息进行验证
//登录处理页面的代码片断
<%
if (rs.next()) { //如果是已注册用户
session.setAttribute("LOGINED_USER", loginedUser);
response.sendRedirect("index.jsp");
} else {
response.sendRedirect("login.html");
}
%>
//在session中存放用户登录信息
如何在登入界面增加登入验证
<%
User user = (User) session.getAttribute("LOGINED_USER");
if (user == null) {
response.sendRedirect("login.jsp");
}
%>
//如果session中不存在该用户的登录信息,转入登录页面
Cookie
什么是Cookie
Cookie是Web服务器保存在客户端的一系列文本信息
Cookie的作用
Cookie的语法
导入包
import="javax.servlet.http.Cookie"
创建Cookie
Cookie newCookie=new Cookie("parameter", "value");
- parameter:用于代表cookie的名称(key)
- value:用于表示当前key名称所对应的值
写入Cookie
response.addCookie(newCookie)
设置Cookie属性的常用方法
类型 | 方法名称 | 说 明 |
---|---|---|
void | setMaxAge(int expiry) | 设置Cookie的有效期,以秒为单位 |
void | setValue(String value) | 在Cookie创建后,对Cookie进行赋值 |
String | getName**()** | 获取Cookie的名称 |
String | getValue**()** | 获取Cookie的值 |
String | getMaxAge**()** | 获取Cookie的有效时间,以秒为单位 |
用户登录成功后,将用户信息保存到Cookie中,在页面读取Cookie并显示
-----从登录验证页面表单中获取用户名------
<%
String username=reqeust.getParameter("username");
//以key/value的形式创建Cookie
Cookie uname=new Cookie("uname", username); //创建Cookie,使用response的addCookie方法保存Cookie
response.addCookie(uname);
%>
-----在显示页面显示用户名---------------
<%//获取请求中的Cookie,以数组方式保存
Cookie cookies[ ]=request.getCookies();//使用reqeust获取Cookie数组,通过cookie的名称获取对应的内容
//循环遍历数组,得到key=uname的Cookie
for(int i=0;i<cookies.length;i++){
Cookie ucookie=cookies[i];
if(ucookie.getName().equals("uname”));//判断Cookie的名称
%>
欢迎你:<%=ucookie.getValue() %>//获取key对应的value,输出显示
<% } %>
Cookie与session的比较
session是在服务器端保存用户信息,Cookie是在客户端保存用户信息
session中保存的是对象,Cookie保存的是字符串
session随会话结束而关闭,Cookie可以长期保存在客户端
Cookie通常用于保存不重要的用户信息,重要的信息使用session保存
谢谢浏览 点个关注再走吧!!