장바구니, 로그인 유지 여부, 광고 띄우지않기 설정 등
서버가 변경되어도 '브라우저가 유지되고있었다면 설정이 유지되어야하는 상태'에 있는 데이터들을
"세션(session)"으로 관리!!!!
일정 시간이 흐르면 연결이 해제됨
e.g.
브라우저 단위면 엣지랑 크롬이랑 두개 같이 돌려도 세션은 공유되지 않는다
반대로 엣지 하나에서 창 두개 띄우고 같이 하면 세션 같이 도는거임
//사용자가 product라는 이름의 파라미터를 전송할 예정
//전달받은 상품을 "장바구니"에 추가
//현재 한글 데이터 전송중 -> 인코딩 필수
// 장바구니를 맨 처음 만드는 경우에는 새로 new
// 기존 장바구니가 있는 경우에는 .add()
//서버가 바뀌더라도 브라우져가 유지 되고 있었다면 장바구니도 유지가 되어야 함
//추가 완료되면 다시 test10.jsp로 이동
유지 되어야 하는 데이터는 session으로 관리 할꺼다
session의 타입은 object 있으니까 꺼내서 쓸때마다 다운캐스팅 해줘야 한다
//ArrayList<> datas는 장바구니
ArrayList<String> datas = (ArrayList<String>)session.getAttribute("datas");
형변환을 해야하는 이유는 세션(Session)에서 가져온 데이터의 타입이 Object이기 때문입니다. 세션은 일반적으로 임의의 객체를 저장할 수 있기 때문에 데이터를 가져올 때는 Object 타입으로 반환됩니다.
따라서, session.getAttribute("datas")를 호출하면 Object 타입의 데이터가 반환됩니다. 그러나 여기서 우리가 원하는 것은 ArrayList<String> 타입의 데이터입니다. 그래서 우리는 (ArrayList<String>)와 같이 형변환(casting)을 사용하여 Object를 ArrayList<String>으로 변환해야 합니다.
형변환을 사용함으로써 우리는 데이터를 가져와서 ArrayList<String> 변수에 할당할 수 있게 됩니다. 그 후에는 ArrayList의 메서드를 사용하여 데이터를 조작하거나 참조할 수 있습니다. 하지만 형변환을 할 때에는 가져온 데이터의 원래 타입이 ArrayList<String>이라고 확신할 수 있는 경우에만 사용해야 합니다. 그렇지 않을 경우 ClassCastException이 발생할 수 있으니 주의해야 합니다.
로그인도 유지 하려면 session에 넣어야함
첫 로그인에만 세팅 해야 함
<%
String member=request.getParameter("mid");
if(session.getAttribute("member")==null){ //혹시 첫 로그인이야? 그때만 세팅 해
session.setAttribute("member", member); //멤버등록 해 줘야 하니까 처음꺼에 "member"
}
%>
<%@ 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>
<h1>로그인</h1>
<form action="test10.jsp" method="post">
아이디 <input type="text" name="mid"> <br>
비밀번호 <input type="password" name="mpw"> <br>
<input type="submit" value="쇼핑시작!">
</form>
</body>
</html>