JSP session
1) 하나의 사용자의 브라우저에 하나가 만들어짐
2) 유저의 사용을 계속 지속하기 위해서 사용함
3) 쿠키가 해킹에 취약해서 세션을 주로 사용함
예) 장바구니, 온라인 뱅킹 등 .
1.데이터 session으로 저장하기
문법)
session.setAttribute(String name, Object value)
실제 사용)
List<String>items = new ArrayList<>();
session.setAttribute("myList",itmes);
2.세션에서 데이터 불러오기
Object session.getAttribute(String name)
실제 사용)
List<String>myStuff= (List<String>);
session.getAttribute("myList");
session 예제- 장바구니 Cart
session.jsp 파일 생성
크롬에서 확인가능
getMaxInactiveInterval() 세션 만료시간 확인가능함 최대 1800초 =>30분
Session servlet 생성
Cart 클래스도 추가 생성( 객체 담을 java beans임)
package demo;
public class Cart {
//장바구니 아이템 갯수
private int totalItems =0;
//source -> getter setter 생성
public int getTotalItems() {
return totalItems;
}
public void setTotalItems(int totalItems) {
this.totalItems = totalItems;
}
}
Session 서블릿에는 doGet()메소드 작성
package demo;
import java.io.IOException;
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;
@WebServlet("/Session")
public class Session extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
// Cart 객체 생성
Cart cart = new Cart();
//settotalItmes 메소드에 7개 넣음
cart.setTotalItems(7);
//세선객체에 값 저장하기
session.setAttribute("cart", cart);
}
}
카트의 아이팀 개수 출력할
showcart.jsp 파일 생성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!--demo 아래의 모든 페이지 import -->
<%@ page import="demo.*" %>
<!-- 세션에서 값을 가져올 때 Object로 형변환이 자동으로 돼서
다시 Cart로 형변환 해줘야함
-->
<% Cart cart = (Cart)session.getAttribute("cart"); %>
<p>장바구니 아이템 개수 : <%=cart.getTotalItems() %>
</body>
</html>
크롬 출력해 줄 건데
순서가 있습니다.
1. Session 페이지를 먼저 열어서 cart에 7개를 넣어준 다음
2. showcart에서 가져와야합니다.
세션 페이지에 접속해도 아무런것도 안나오지만
cart에 7개가 추가되는 코드는 실행된 상태입니다.
그 뒤
showcart.jsp에 접속하면 장바구니 개수 확인이 가능합니다.
만약에 Session에 접속하지 않고 바로 showcart에 접속하면 오류가 뜹니다.
이렇게 완성했으면
세션에 생성되었으므로 30분은 유지가 된다.
그래서 만약 같은 브라우저에서 접속 시 그 속성이 있으면 추가하지 않는걸로
Session 수정
@WebServlet("/Session")
public class Session extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
//먼저 카트가 세션에 있는지 확인해서 없을 경우에만 카드 객체 생성
Cart cart = (Cart)session.getAttribute("cart");
if(cart == null) {
cart = new Cart();
session.setAttribute("cart", cart);
//세션 객체에 속성이름으로 값(object 타입) 저장
//이름 "cart"로 cart 객체저장
}
cart.setTotalItems(7);
}
}
'BACKEND > Jsp' 카테고리의 다른 글
북마켓 프로젝트 1 (0) | 2023.09.22 |
---|---|
브라우저에 데이터 저장하는 Cookies 예제 (0) | 2023.09.20 |
JSP Form 만들기 (0) | 2023.09.20 |
URL 파라미터로 Bean 객체의 값 입력하기 (0) | 2023.09.20 |
Scope이란? (0) | 2023.09.19 |