一,什么是会话:
一个会话就是浏览器与服务器之间的一次通话,包含浏览器与服务器之间的多次请求、响应过程
二,JSP内置对象session
session的概念:
Session在网络中被称为会话(服务端存储 session中的数据占运行内存)。
由于HTTP协议(超文本传输协议)是一种无状态协议,也就是当一个客户向服务器发出请求,服务器接收请求,并返回响应后,该连接就结束了,而服务器并不保存相关的信息。
为了弥补这一缺点,HTTP协议提供了Session。
通过Session可以在应用程序的WEB页面间进行跳转时,保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器。
session对象用来存储有关用户会话的所有信息
session对象常用方法:
session与窗口的关系
每个session对象都与浏览器一一对应 重新开启一个浏览器,相当于重新创建一个session对象重新开启一个IE窗口,直接访问系统首页面
通过超链接打开的新窗口,新窗口的session与其父窗口的session相同
三,Cookie
1.什么是cookie
Cookie是Web服务器保存在客户端的一系列文本信息
2.生活中的cookie
浏览购物网站查看不同商品时,系统会自动记录已经浏览过的商品
3.Cookie的作用
对特定对象的追踪 统计网页浏览次数 简化登录
4.cookie的缺点:
容易信息泄露
5.cookie的语法
导入包:
import="javax.servlet.http.Cookie"
创建cookie:
parameter:用于代表cookie的名称(key)
value:用于表示当前key名称所对应的值
Cookie newCookie=new Cookie("parameter", "value");
写入cookie
response.addCookie(newCookie)
6.设置Cookie属性的常用方法
四,session和cookie的比较:
1.session是在服务器端保存用户信息,Cookie是在客户端保存用户信息
2.session中保存的是对象,Cookie保存的是字符串
3.session随会话结束而关闭,Cookie可以长期保存在客户端
4.Cookie通常用于保存不重要的用户信息,重要的信息使用session保存
五,session和cookie在JSP中的应用(示例)
1.利用cookie实现7天免登录
效果:就是利用cookie做出七天内只要登陆过账号就可以在下一次登录时直接将密码和账号显示在输入框中(密码加密)
代码:
dologin.jsp界面(登陆处理界面)
<%@page import="oracle.jdbc.driver.OracleDriver" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.nio.charset.StandardCharsets" %>
<%@ page import="java.util.Arrays" %>
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
request.setCharacterEncoding("utf-8");
String yh = request.getParameter("yh");
String mm = request.getParameter("mm");
try {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//定义连接字符串
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
//获得连接
Connection con = DriverManager.getConnection(url, "scott", "tiger");
//获得执行对象
PreparedStatement ps = con.prepareStatement("select * from t_user where user_name=? and user_pwd=?");
ps.setString(1, yh);
ps.setString(2, mm);
//获得结果集
ResultSet rs = ps.executeQuery();
//判断结果
if (rs.next()) {
//讲用户名存入到服务器的session中
session.setAttribute("username",yh);//存到后台
//cookie的值每次发送请求的时候会被自动带上
//cookie默认是在你当前浏览器打开的过程中生生效
Cookie cookie01=new Cookie("yh",yh);
//设置存活时间 s
// -1 是在你当前浏览器打开的过程中生生效
cookie01.setMaxAge(60*60*24*7);
Cookie cookie02=new Cookie("mm",mm);
cookie02.setMaxAge(60*60*24*7);
//存到前台 【七天免登录】
response.addCookie(cookie01);
response.addCookie(cookie02);
// localhost:8080/当前项目/news/index.jsp
// request.getRequestDispatcher("/news/index.jsp").forward(request, response);
response.