쿠키, 세션
대화
세션: 사용자가 브라우저를 열고 많은 하이퍼링크를 클릭하고 여러 웹 리소스를 방문하고 브라우저를 닫는 과정을 세션이라고 합니다.
상태 저장 대화: 동급생이 교실에 가봤고 다음에 교실에 올 때 그가 거기에 있었다는 것을 압니다.
세션 저장을 위한 두 가지 기술
쿠키
클라이언트 기술(응답, 요청)
세션
서버 기술은 이 기술을 사용하여 사용자의 세션 정보를 저장할 수 있으며 정보나 데이터를 세션에 저장할 수 있습니다.
쿠키
- 요청에서 쿠키 정보 가져오기
- 서버는 클라이언트 쿠키에 응답합니다.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
Cookie[] cookies = req.getCookies();
int flag=-1;
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("loginTime")){
flag=i;
break;
}
}
if (flag!=-1){
long loginTime = Long.parseLong(cookies[flag].getValue());
Date date = new Date(loginTime);
System.out.println(date.toLocaleString());
}else {
System.out.println("欢迎您首次到来!");
}
//每次登录网站都会更新时间
Cookie loginTime = new Cookie("loginTime", System.currentTimeMillis() + "");
//给cookie设置一个有效期
loginTime.setMaxAge(24*60*60);
resp.addCookie(loginTime);
}
쿠키에는 상한선이 있습니다
- 쿠키는 하나의 정보만 보유할 수 있습니다.
- 웹 사이트는 브라우저에 여러 개의 쿠키를 보낼 수 있으며 최대 20개의 쿠키를 저장할 수 있습니다.
- 쿠키 사이트의 크기 제한은 4kb입니다.
- 브라우저 제한은 쿠키 300개입니다.
쿠키 삭제
만료 날짜를 설정하지 않고 브라우저를 닫으면 자동으로 만료됩니다.
유효기간을 0으로 설정
인코딩하다 디코딩하다
URLEncoder.encode("中文","utf-8");
URLDecoder.decode(cookies[0].getValue(),"utf-8");
세션
소개하다
- 서버는 각 사용자(브라우저)에 대한 세션 객체를 생성합니다.
- 세션은 브라우저를 독점하며 브라우저가 닫히지 않는 한 세션은 존재합니다.
- 사용자 로그인 후 전체 웹사이트 접근 가능 --> 사용자 정보 저장
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决乱码问题
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//得到session
HttpSession session = req.getSession();
//得到sessionId
String id = session.getId();
//在session中存储属性
session.setAttribute("name","小黑子");
if (session.isNew()){
resp.getWriter().write(id+"创建成功!");
}else{
resp.getWriter().write(session.getAttribute("name")+"属性设置成功!");
}
//手动注销session
session.invalidate();
}
세션 유효 날짜 설정
<session-config>
<!-- 以分钟为单位-->
<session-timeout>15</session-timeout>
</session-config>
세션과 쿠키의 차이점
- 쿠키는 이용자의 데이터를 이용자의 브라우저에 기록하고, 브라우저는 이를 저장합니다(복수 저장 가능)
- 세션은 사용자의 데이터를 사용자의 전용 세션에 쓰고 서버 측에 저장하는 것입니다. (중요 자원을 저장하고 서버 자원의 낭비를 줄입니다.)