세션에 저장하기

수돌임깅·2023년 8월 10일
0
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session=request.getSession();
		RequestDispatcher dis=request.getRequestDispatcher("/home.jsp");
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out=response.getWriter();
		switch(request.getServletPath()){
		case "/user/login":
			String target=request.getParameter("target")==null?
					"":request.getParameter("target");
			session.setAttribute("target", target);
			request.setAttribute("pageName", "/user/login.jsp");
			dis.forward(request, response);
			break;

서버에 정보를 임시로 저장하려면 session을 이용하면 되는데, 이 세션은 브라우져가 켜져 있을때만 유지가 된다. java 컨트롤러에서 session을 가져오려면,
HttpSession session=request.getSession();
을 선언해 주고, 세션에 원하는 정보를 저장해 주면 된다.

String target=request.getParameter("target")==null?
					"":request.getParameter("target");
			session.setAttribute("target", target);

이 부분이 있는데, 이것은 target을 삼항연산자로 파라미터로 attribute값을 target으로 가져왔을 때 그 값이 null이면 아무것도 가져오지 않고, 있으면 target값을 가져온다는 뜻이며,
세션에 그 target값을 저장하는 것인데, 그렇다면 target값은 누가 보내주는것인고 하니,

$("#div_cart").on("click","#btn-order", function() {
		if (uid == "") {//로그인이 안된경우
			location.href = "/user/login?target=/cart/list";

장바구니 jsp중 로그인이 안된 상태에서 주문하기 버튼을 눌렀을 경우 로그인을 하면서 cart/list로 가라고 타겟값을 주는 것이다. 그럼 위처럼 타겟값을 갖고 로그인이 되면,

const target = "${target}";
	$(frm).on("submit", function(e){
		e.preventDefault();
		const uid=$(frm.uid).val();
		const upass=$(frm.upass).val();
		if(uid=="" || upass==""){
			alert("아이디와 비밀번호를 입력하세요!");
		}else{
			$.ajax({
				type:"post",
				url:"/user/login",
				data:{uid:uid, upass:upass},
				success:function(data){
					if(data==0) {
						alert("아이디가 존재하지 않습니다!");
					}else if(data==2){
						alert("비밀번호가 일치하지 않습니다!");
					}else{
						alert("로그인 성공!")
						if(target==""){
							location.href="/";
						}else{
							location.href=target;
						}
						
					}
				}
			});	
		}	
	});

이렇게 타겟값이 있는 경우 타겟값을 갖고 ("/cart/list/")로 이동한다는 것이다.

아주 잘 만들어진 로직이다.

profile
초보 개발자

0개의 댓글