目录
会话技术
会话:一次会话中包含多次请求和响应。
一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开。
会话技术的功能:在一次会话的范围内的多次请求间,共享数据,例如购物车功能的实现需要使用会话技术。
方式:
1.客户端会话技术:Cookie,将数据存储到客户端
2.服务器端会话技术:Session,将数据存储到服务器端
Cookie
快速入门
使用步骤
1.服务器端创建Cookie对象,绑定数据,数据将存储进该对象。
new Cookie(String name,String value)
2.在第一次收到客户端浏览器请求后,服务器端响应时发送Cookie对象。
response.addCookie(Cookie cookie)
3.在客户浏览器端带着Cookie对象进行第二次请求时,服务器端获取Cookie,拿到数据。
Cookie[ ] request.getCookies()
因为有多个Cookie存在,所以返回Cookie数组.
设置小技巧
修改servlet代码模板:
File ----> settings
在搜索框输入code template -------->找到File and Code Templates ----------->点击到other
下拉找到web如图选项------>在右侧修改资源路径
接着修改doGet方法
代码演示:
public class ServletCookieDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.创建Cookie对象
Cookie cookie = new Cookie("msg","hello");
//发送Cookie
response.addCookie(cookie);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
public class ServletCookieDemo02 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取Cookie
Cookie[] cookies = request.getCookies();
//获取数据,遍历Cookies
if(cookies != null)
{
for (Cookie cookie:cookies) {
String name = cookie.getName();
String value = cookie.getValue();
System.out.println(name+" "+value);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
当我们在浏览器中访问ServletCookieDemo01后,会话建立,再访问ServletCookieDemo02,在服务器端回收到Cookie的数据信息(注意:在这过程中不要关闭浏览器或重启服务器,否则会话会被断开)
Cookie会话原理
Cookie相关细节
发送多个Cookie
可以创建多个Cookie对象,使用response调用多次。
public class ServletCookieDemo01 extends HttpServlet {
protected void doPost(HttpServletReq