javaweb相关基础知识之会话技术

注:来自视频的学习笔记

会话技术:从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,称为一次会话,会话技术就是记录这次会话中客户端的状态与数据的。

(1)cookie:数据存储在客户端本地。

优点:减少服务器端的存储的压力

缺点:安全性不好,客户端可以清除cookie

(2)session:将数据存储到服务器端

优点:安全性好

缺点:增加服务器的压力。

(3)两者关系

session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内存空间,所以说session的实现是基于cookie,session需要借助于cookie存储客户的唯一标识JSESSIONID。

cookie学习代码:

package study.zx.cookie;

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;
import java.io.IOException;

@WebServlet(name = "CookieServlet",urlPatterns = "/cookie")
public class CookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置cookie,注意不能用中文
        Cookie cookie = new Cookie ("goods", "cellphone");
        cookie.setMaxAge (60);//设置cookie存活时间,单位是秒
        cookie.setPath ("/hello/getCookie");//设置cookie存在位置
        Cookie cookie1=new Cookie ("userName","preston");
        //cookie.setMaxAge (0);//删除cookie,把对应的cookie生命周期设置为0即可
        response.addCookie (cookie);//发送cookie到浏览器
    }
}

package study.zx.cookie;

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;
import java.io.IOException;

@WebServlet(name = "GetCookieServlet",urlPatterns = "/getCookie")
public class GetCookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取cookie信息
        Cookie[] cookies = request.getCookies ();
        for(Cookie cookie:cookies){
            String name = cookie.getName ();//获取cookie名称
            if(name.equals ("userName")){
                String cookieValue = cookie.getValue ();//获取cookie值
                response.getWriter ().write ("userName"+cookieValue);//发送到客户端浏览器
            }
        }
    }
}

package study.zx.cookie;

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;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
*cookie常用的API学习
*
*
*/

@WebServlet(name = "TimeCookieServlet",urlPatterns = "/interview")
public class TimeCookieServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //格式化时间
        Date date = new Date ();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
        String time = simpleDateFormat.format (date);

        Cookie cookie=new Cookie ("time",time);
        cookie.setMaxAge (60*60);//设置cookie的生存周期
        response.addCookie (cookie);

        //获取cookie
        Cookie[] cookies = request.getCookies ();

        String timeValue=null;
        for(Cookie cookie1:cookies){
            if(cookie1.getName ().equals ("time")){
                timeValue=cookie1.getValue ();
            }
        }
        if(timeValue==null){//第一次访问不存在时间存储
            response.getWriter ().write ("欢迎你访问我们的网站");
        }else{
            response.getWriter ().write ("您上次访问该网站的时间是:"+timeValue);
        }


    }
}

session学习代码:

package study.zx.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "SessionServlet",urlPatterns = "/session")
public class SessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession ();//获取session对象
        String sessionId = session.getId ();//获取session的id

        response.getWriter ().write ("JSESSIONID"+sessionId);
    }
}

package study.zx.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;

@WebServlet(name = "SaveSessionServlet",urlPatterns = "/saveSession")
public class SaveSessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置session信息
        HttpSession session = request.getSession ();
        //创建一个cookie覆盖之前服务器自动生成的JSESSIONID
        Cookie cookie = new Cookie ("JSESSIONID", session.getId ());
        //设置持久化时间
        cookie.setMaxAge (60*30);
        response.addCookie (cookie);
        session.setAttribute ("goods","cellphone");
    }
}

package study.zx.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "GetSessionServlet",urlPatterns = "/getSession")
public class GetSessionServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      //获取session的信息
        HttpSession session = request.getSession ();
        String goods = (String)session.getAttribute ("goods");
        response.getWriter ().write (goods);
    }
}

package study.zx.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "AddShoppingServlet",urlPatterns = "/addGoods")
public class AddShoppingServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取商品的信息
        String name = request.getParameter ("name");
        //2.需要保存商品信息到session
        HttpSession session = request.getSession ();
        List list = (List)session.getAttribute ("list");

        //第一次访问的list不存在,需要创建一个list
        if(list ==null){
            list = new ArrayList ();
        }
        list.add (name);
        session.setAttribute ("list",list);
        //对session进行持久化操作,也就是持久化JSESSIONID
        Cookie cookie = new Cookie ("JSESSIONID", session.getId ());
        cookie.setMaxAge (60*60);
        cookie.setPath ("/hello");
        response.addCookie (cookie);
    }
}

package study.zx.session;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "GetShoppingServlet",urlPatterns = "/getGoods")
public class GetShoppingServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession ();

        List<String> list=(List<String>)session.getAttribute ("list");
        response.setContentType ("text/html;charset=utf-8");//设置响应编码格式
        for (String s : list) {
            response.getWriter ().write (s+"<br/>");
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>购物车</title>
</head>
<body>
<h2>商品列表</h2>
<a href="/hello/addGoods?name=华为9pro">华为9pro</a>
<a href="/hello/addGoods?name=小米9">小米9</a>
<a href="/hello/addGoods?name=红米6">红米6</a>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/preston555/article/details/110069652
今日推荐