Spring/Model1 _2(MVC)

0818 JSP - cookieForm => cookiePro ~ session

jeoniee 2022. 8. 18. 17:45
728x90
반응형

 

cookieForm 페이지를 만들어서, 값을 cookiePro로 넘겨줌 

 

1. <cookieForm>

<h1>cookieForm.jsp</h1>
	
	
	<h3>쿠키정보 선택(언어설정)</h3>
	<form action="cookiePro.jsp" method ="post">
		<input type = "radio" name = "language" value = "kor"> 한국어
		<input type = "radio" name = "language" value = "eng"> 영어
		<br>
		<input type = "submit" value = "언어설정">
	</form>

<페이지>


2. <cookiePro>

<h1>cookiePro.jsp</h1>
		
	<%  String lang = request.getParameter("language");
	%>	
	전달 정보 : <%=lang %><br>

<페이지>

쿠키 정보를 통해서 값을 전달 받음 

lang정보를 쿠키에 담아서 다시 form 으로 전송할 것 

cookieform (클라이언트) cookiepro (서버)

 

 

 

 

<문제>

쿠키 값에 따라서 출력되는 메세지 변경
-한국어 - "안녕하세요! 쿠키연습"
-영어 - "Hello~ Cookie Test~"

 

<cookieForm>


1.쿠키가 있는지 체크
Cookie[] cookie = request.getCookies();


if(cookie != null){      => 쿠키가 null 이 아닐 떄 

 

2.쿠키들 중에서 내가 원하는 정보(언어)있는지 체크

for(int i=0;i<cookie.length;i++){
          if(cookie[i].getName().equals("lang")){

          3.쿠키가 있을 때, 쿠키 값에 따른 메시지 출력

                     cookie[i].getValue().equals("kor")){
                    쿠키 값이 한국어일 때 
                    out.println("안녕하세요! 쿠키연습!<br>");
          }else{
                    쿠키 값이 영어일 때 
                   out.println("Hello~Cookie Test~");
                    }
            }
     }
}

 

체크 되어있는 걸 보고싶다..?<input type = "radio" name = "language" value = "kor" checked> 한국어
<input type = "radio" name = "language" value = "eng" checked> 영어

 

 

한국어에 체크되어있으면 한국어영어에 체크되어있으면 영어 

 

lan 이라는 변수를 지정해줌

 

String lan = "";

 

 

 

 

 

if(cookie != null){
	//2.쿠키들 중에서 내가 원하는 정보(언어)있는지 체크
	
		for(int i=0;i<cookie.length;i++){
			if(cookie[i].getName().equals("lang")){
				//3.쿠키가 있을 때, 쿠키 값에 따른 메시지 출력
			
				System.out.println (cookie[i].getValue());
				
				lan = cookie[i].getValue();
				
				if(cookie[i].getValue().equals("kor")){
					//쿠키 값이 한국어일 때 
					out.println("안녕하세요! 쿠키연습!<br>");
				}else{
					//쿠키 값이 영어일 때 
					out.println("Hello~Cookie Test~");
				}	
			}
		}
	}
	
	%>
	
	<h3>쿠키정보 선택(언어설정)</h3>
	<form action="cookiePro.jsp" method ="post">
		<input type = "radio" name = "language" value = "kor" 
		
		<%if(lan.equals("kor")){%>
			 checked
			 <%} %>
			 > 한국어
		<input type = "radio" name = "language" value = "eng" 
		<%if(lan.equals("eng")){%>
			checked
			<%} %>
			> 영어
		<br>
		<input type = "submit" value = "언어설정">
		
					
					
	</form>

 

팝업 뜨는거 알아보기 open 메서드 

 

 

Session 설정하기 

 

<sessionTest>

		<%
		String id = (String) session.getAttribute("ID");
		%>
		
		<h3> 정보 : <%=id %></h3>
		

<!-- 버튼 클릭시 sessionSet.jsp 페이지 이동, 세션정보 생성 -->

		<input type = "button" value = "세션값 생성" onclick="location.href='sessionSet.jsp';">
		
<!--페이지 이동 시킬려면 이벤트를 걸어야함 on click -->

 

<sessionSet>

		<h1>sessionSet.jsp</h1>
		
		<h2> 서버 (세션값 생성) </h2>
		
		<%
		// 세션 값 생성(세션영역에 속성을 생성하겠다)
		session.setAttribute("ID","itwill");
		
		//session.setMaxInactiveInterval(interval);
		
		
		//세션 저장한다는 말 (영역,값)	
		%>
		
	<script type = "text/javascript">
			<alert("세션값 생성완료!");
			location.href='sessionTest.jsp';
	</script>

 

[쿠키랑 세션을 나눠서 쓰는 이유]

- 세션이 할일이 많아지면, 서버가 할일이 많아짐 -> 처리 속도가 느려짐 

- 항상 유지되어야하는 데이터들만 세션에 저장해야함 

ex) 로그인 처리 

 

쿠키 

-항상 유지되진 않지만 가끔씩 필요할 때 가져오면 됨 

 

 

session 삭제

<input type = "button" value = "세션값 삭제" onclick="location.href='sessionDel.jsp';"> 를 세션값 생성 밑에 추가,

sessionDel.jsp 를 만들어준다. 

(삭제는 특정 데이터만 삭제함.)

 

<sessionDel>

<h1>sessionDel.jsp</h1>
	
	<h2> 서버 (세션값 삭제) </h2>
	<%
		//세션 영역에 있는 값을 제거 
		session.removeAttribute("ID");
	
	%>
	<script type = "text/javascript">
		alert("세션값 삭제");
		location.href="sessionTest.jsp";
	
	</script>

 

session 초기화 

<input type = "button" value = "세션값 초기화" onclick="location.href='sessionInv.jsp';">

sessionTest에 넣어줌 

 

모든 데이터를 다 지워줌. => 은행 어플처럼, 세션 만료(초기화)시키는 것. 

<h1>sessionInv.jsp</h1>
	<h2>서버(세션값 초기화)</h2>
	
	<%
		//세션값 초기화
		session.invalidate();

	%>
	
	<script type = "text/javascript">
		alert("세션값 초기화 완료");
		location.href="sessionTest.jsp"
	</script>

session 로그인 

 

이런 비밀번호 창에 sql 쿼리 구문을 쓸 수 있다. 

 

select * from member

  where id = 'aa' and pw = '1234'

                 T                          F

T && F || T = False

 

아이디가 aa 이면서 pw 가 1234 인 사람을 조회해라 

하지만, 내가 비밀번호를 모를 때 or 1=1 (항상 참이 된다는 뜻)

                                                                        T

 

즉 비밀번호를 틀려도 로그인이 됨 , or 1=1 이기 때문에 값이 True 가 됨 

 

<sessionLoginForm>

<h1>sessionLoginForm.jsp</h1>

 sessionLoginForm.jsp 
 1. 아이디, 비밀번호 입력창
 2. 아이디, 비밀번호 입력  
(데이터 유효성 체크)

sessionLoginPro.jsp
3. 아이디, 비밀번호 일치여부 체크
     -1) 아이디가 맞는 경우  
  비밀번호가 맞는 경우 : 본인이 로그인 
  비밀번호가 틀린 경우 : 비밀번호 오류  
     -2) 아이디가 틀린 경우   : 비회원  

<form action = "sessionLoginPro.jsp" method="post">  
<!-- 여기로 전달할거다 post 방식 , get 방식은 다 보임 개인정보라서 post 방식으로  -->
아이디 : <input type = "text" name ="id"><br>
비밀번호 : <input type = "text" name = pw><br>
<input type = "submit" value = "전송">

</form>

 

 

<sessionLoginPro>

		<h1>sessionLoginPro.jsp</h1>
		
<!-- 	parameter로 전달된 데이터는 모두 String  -->
	
	
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
<!-- 	기존의 정보와 비교해야되니까 기존 정보 만들어줌 -->
	
<% 	
	String userID = "admin";
	String userPW = "1234";
	
	// == : 기본형타입의 값을 비교할 때 사용 
	// equals() : String 타입의 값을 비교할 때 사용	
			
	if(userID.equals(id)){
		// 아이디 있다 
			if(userPW.equals(pw)){
		//아이디, 비밀번호 o => 본인 
			out.println("로그인 성공!");
			}else{
				//아이디는 있으나 비번 틀림 
				out.println("비밀번호 오류!");
				
			}
	}else{ 
		//아이디가 없다 = 비회원 
		out.println(" 비회원 !! ");
	
	}

	%>

 

로그인을 성공해서, 메인페이지로 이동 

 

<sessionMain>

 

<h1>sessionMain.jsp</h1>
		<h2> 메인페이지 </h2>

	<% 
	//로그인 정보가 없을 경우 사용 불가
	//=> 로그인 페이지 이동 
	//로그인 정보가 있을 경우 사용 가능 
	//=> ㅇㅇㅇㅇ님 환영합니다! 출력(화면)
	
	//세션에 저장된 정보 가벼오기 
	
	String id = (String)session.getAttribute("id");
	
	if(id==null){
		response.sendRedirect("sessionLoginForm.jsp");
	}
	%>
	
	아이디 : <%=id %>님 환영합니다.<br>
	
<input type = "button" value = "로그아웃" onclick="location.href='sessionLogOut.jsp';">

 

세션은 (String)으로 바꿔줘야함. 

 

 

로그아웃 

클릭 했을 때(onclick),세션 초기화 못함 (onclick => 자바스크립트라 초기화 못함)

jsp 로 세션 초기화하는 페이지를 만들어서 보내야함. 

 

<sessionLogOut>

<h1>sessionLogOut.jsp </h1>

<%
	//로그아웃 -> 로그인 정보(세션)=제거
	//세션 초기화
	
	session.invalidate();

%>


<script type = "text/javascript">
	alert('회원님의 정보가 안전하게 로그아웃 되었습니다.');
	location.href="sessionMain.jsp";

</script>

 

 

로그아웃 

메인페이지로 돌아감 

728x90
반응형