一、 session的简单使用
package com.servlet.sessoin;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/*
* session技术的学习和使用
* //问题:
* 一个用户的不同请求处理的数据共享怎么办?
* //解决:
* 使用session技术
* //原理:
* 用户第一次访问服务器,服务器会创建一个对象给此用户,并将该session对象的JSESSIONID
* 使用cookie技术存储到浏览器中,保证用户的其他请求能够获取同一个session对象,
* 也保证了不同请求能够获取到共享的数据。
*
* //特点:
* (1)..存储在服务器端 (2)..由服务器创建
* (3)..依赖cookie技术 (4)..时效一次回话(关闭浏览器消失)
* (5)..默认存储时间30min
*
* //作用
* ..解决了一个用户不同请求处理的数据共享问题。
* //使用
* (1)---创建session对象/获取session对象
* Httpsession hs = request.getSession();
* a、如果请求中拥有session的标识符也就是JSESSIONID则返回其对应的ID
* b、如果请求中没有session的标识符也就是JSESSIONID则创建新的session对象,
* 并将其sessionid作为cookie数据存储到浏览器内存中。
* c、如果session对象时效了,也会重新创建一个session对象,并将其JSESSIONID存储到浏览器的内存中
* (2)设置session存储时间
* hs.setMaxInactiveInterval(int seconds);
* 注意:默认30分钟。
* 在指定的之间内没有使用则销毁,如果使用了则重新计时。
* (3)设置session强制失效
* hs.invalidate();
* 比如点击退出时。会强制失效。
* //注意
* JSESSIONID存储在了Cookie的临时存储空间中,浏览器关闭失效。
*
*/
public class Session_01介绍原理特点使用 extends HttpServlet {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unused")
protected void doGet(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
//设置请求编码格式
request.setCharacterEncoding("utf-8");
//设置响应编码格式
response.setContentType("text/html;charset= utf-8");
//获取请求信息
String name = "张三";
//处理请求信息
//创建session对象(既是创建也是获取,就看请求中有没有sessionid)
HttpSession hs = request.getSession();
//设置session的存储时间
//hs.setMaxInactiveInterval(5);
System.out.println(hs.getId());
//设置session强制失效
//hs.invalidate();
//响应处理结果
//直接响应
response.getWriter().println("session学习");
//请求转发(用request)
//重定向(只能用session)
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
doGet(request, response);
// System.out.println("回话创建时间:"+hs.getCreationTime());
// System.out.println(hs.getMaxInactiveInterval());
// hs.invalidate();
// doGet(request, response);
}
}
二、cookie学习
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/cookieservlet1")
/* Cookie学习:
* 作用:解决了发送的不同请求的数据共享问题。
* 使用:
* Cookie的创建及存储:
* //创建对象Cookie
* Cookie c = new Cookie("mouse","thinkpad");
* Cookie c = new Cookie(String name,String value);
* 设置cookie(可选)
* 设置有效期
* c2.setMaxAge(10000);
* 设置有效路径
* c2.setPath("/Cookie/abc");
* 响应Cookie对象给客户端
* response.addCookie(c);
* 注意:
* 一个cookie对象存储一条数据。
* 多条数据创建多个cookie对象。
* 特点:
* 浏览器端的数据技术.
* 存储的数据说明在服务器端。
* 临时存储:不设置时间,存储在浏览器中的运行内存中,浏览器关闭即失效。
* 定时存储:设置有效期,存储在客户端的硬盘中,在有效期内符合路径要求的请求都会附带该信息。
* 默认信息存储好之后,每次请求都会附带,除非设置一条有效路径。
*/
public class CookieServlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
System.out.println("进入cookieservlet1:");
//设置请求编码格式
request.setCharacterEncoding("utf-8");
//设置响应编码格式
response.setContentType("text/html;charset=utf-8");
//获取请求信息
//处理请求信息
//响应处理结果
//使用Cookie进行浏览器端的数据存储
//创建Cookie对象
Cookie c = new Cookie("mouse","thinkpad");
Cookie c2 = new Cookie("key3","value");
//设置cookic有效期
c2.setMaxAge(100);
//设置有效路径
c2.setPath("/Cookie/cg");
//响应cookie信息
response.addCookie(c);
response.addCookie(c2);
//直接相应
response.getWriter().println("Cookie学习!");
//请求转发
//重定向
}
protected void doPost(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
doGet(request, response);
}
}