[Web] 8. step03_sessionTracking(2) - 쿠키 학습2

진주·2022년 2월 9일
0

Web

목록 보기
8/17
post-custom-banner

doPost() 메소드 코드 에 Cookie 생성 & 잔존시간 설정 및 쿠키저장
정상 실행인 경우, response.sendRedirect("/succ")를 통해 Welcome.java로 넘어가도록 설정

Welcome.java 생성

패키지명 : view , 클래스 명 : Welcome


패키지명 : view - Welcome.java 생성 (URL Mapping : /succ)

Postman 설치 & 사용해보기

https://www.postman.com/downloads/

설치 후 실행


New 클릭


Collection 생성

GET선택, http://localhost/step03_sessionTracking/login.html 입력후 Send 클릭
Preview 확인하면, chrome에서 나온 창과 동일하다.

Postman의 장점


Postman을 통해서 login.html의 action=""을 변경할 필요 없이,정상 실행 됐는지 확인이 가능하다.

200OK가 뜨면 정상 실행된 것!


[Query Params]
KEY = msg , VALUE = encore 입력 후 Send클릭

정상 실행되면 200OK가 뜨고, 이클립스 Console창에 "encore" 입력되어있음.

Welcome.java 코드 수정


@WebServlet("/succ")
public class Welcome extends HttpServlet {

	// service() : get방식과 post방식 모두 처리하는 특화된 메소드, doPost와 doGet과 동일하다.
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
//      출력 환경 설정
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
				
//		client로 쿠키 객체 획득하기
//		해당 사이트에서 생성된 쿠키정보만 선별해서 획득해야한다.
		Cookie[] all = request.getCookies();
		
//		하나 이상의 쿠키 객체, Cookie[] 에서 key로 선별하여 value값을 활용한다.
//		key는 getName(), value는 getValue() 메소드를 사용해서 가져온다.
		for(Cookie c: all) {
						
			if(c.getName().equals("name")) {
				out.println("안녕하세요" + c.getValue() + "님");
			}
		}
	}
    


[Query Params]
KEY = id , VALUE = tester 입력 후 Send클릭

Preview확인


chrome에서는 실행 x(방화벽 문제인듯하다), Postman에서는 실행이 된다

login.html : Run as → Run on Server 클릭

다시 실행하니까 로그인에서 넘어가는게 됐다.

Logout.java 생성전 Welcome.java 수정하기

'로그아웃' 버튼을 만들기 위해 Welcome.java에 아래 코드 추가

out.println("<button onclick='location.href=\"logout\"'>로그아웃</button>");
public class Welcome extends HttpServlet {
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
				
		Cookie[] all = request.getCookies();
		
		for(Cookie c: all) {
			if(c.getName().equals("name")) {
				out.println("안녕하세요" + c.getValue() + "님");
			}
		}
        
******************** ↓ 추가한 부분 ↓ ****************************		
//		server 관점에서는 순수 문자열이 parameter이다.
//		브라우저가 문자열을 입력받아서 'tag'임을 인식해 tag를 구성한다.
//		자바의 " 자체가 문자열 데이터인 경우, String 표현과 일치되므로 특수 기호로 데이터라고 입증하는 처리를 해야한다.
//		\" -> " 문자열로 인식
		out.println("<button onclick='location.href=\"logout\"'>로그아웃</button>");
	}
}

Logout.java 생성

view 패키지 - 클래스명 : Logout

view 패키지 우클릭 - New - Servlet 클릭


클래스명 : Logout (URL Mapping : /logout)

Logout.java 코드

package view;
// import문 삭제했음

@WebServlet("/logout")
public class Logout extends HttpServlet {
	
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();

		out.println("로그아웃 성공~");
	}

}

Logout.java 결과

로그아웃 클릭시

profile
진주의 코딩일기
post-custom-banner

0개의 댓글