프로그래밍/JSP

JSP 4일차 - 내장객체, 쿠키

윤도ri 2022. 1. 21. 22:56

>내장 객체
- 객체화 없이 사용할 수 있는 객체이며, jsp파일이 서블릿으로 변환될 때 웹 컨테이너가 자동으로 메모리에 할당해서

제공한다. (서블릿의 경우 메모리에 할당을 우리가 해야한다=객체를 직접생성)


예를들어 태그안에 out.write() 을 쓰면 따로 불러오지 않고도 바로 쓸 수 있다. 이것은 왜냐하면 서블릿으로 변활될때 

자동으로 할당해서 제공하기 때문이다. 그러나 서블릿에서는 객체를 만들지 않으면 직접 객체를 생성해야 한다.

ex) PrintWriter out = response.getWriter(); 

 
request           :웹 브라우저의 요청(사용자의 요청)에 대한 정보들을 저장
response         :웹 브라우저의 요청에 대한 응답 정보들을 저장
out                 :JSP 페이지가 응답할 HTML 의 body에 출력할 내용 정보를 저장
                      (응답용 writer로서 쓰인다.)
session           :하나의 웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장
pageContext    :JSP 페이지에 대한 정보를 저장
config JSP       :페이지에 대한 설정 정보를 저장
exception JSP  :페이지에서 예외가 발생한 경우 사용되는 객체 

>쿠키(Cookie)
- 웹 브라우저가 보관하고 있는 데이터로, 웹 서버에 요청을 보낼 때 쿠키를 헤더에 담아서 전송한다. 
- 웹 사이트에 요청을 전송할 때 서버에 의해 사용자의 컴퓨터에 저장되는 정보를 의미한다.
- 클라이언트 측의 컴퓨터(브라우저)에 데이터를 남겨 필요할 때 마다 꺼내서 사용한다.
- 문자열로만 저장할 수 있고 크기가 아주 작다(4KB)
- 서버당 1개의 저장소를 사용하고 데이터 형태는 key와 value로 구성되어 있다.

 

장점: 클라이언트의 폴더에 정보가 저장되기 때문에 서버의 부하를 줄일 수 있다. 
단점: 보안의 위협을 받을 수 있고 "쿠키차단"시 무용지물이 된다.  

 

<과정>  
1.사용자가 접속한다. 

2.쿠키허락할것인지 물어본다. 

= 너 컴퓨터 메모리 써도 되니?! 

3.사용자가 접속과 동시에 요청한다. 

 요청할때 많은 정보를 다 담고있다(접속위치 등) request 에 담고있다. 그때 전송이될때  request의 header가 같이 날라간다. 그래서 header날라갈때 cookie도 함께 전송된다. 여기에 자신의 정보를 저장해두는데 만약 그 정보가 있을경우 응용해서 자기들의 기능을 보여주게된다.

>쿠키 생성 
Cookie 객체명 = new Cookie("key","value");

>쿠키 저장
- 사용자 컴퓨터에 저장해야 하므로 응답을 통해서 생성한 쿠키를 보내주어야한다. 
response.addCookie(쿠키객체);

>쿠키 사용
- 사용자가 요청할 때 함께 보내주는 헤더에서 쿠키를 꺼내 사용한다. 
 request.getHeader("Cookie");

1) 요청에 있는 Header중에 Cookie라는 이름의 헤더가 있는지 확인, null이라면 전송된 쿠키가 없다는 뜻
2) 만약 있다면 전송된 쿠키 객체들의 배열 (=request.getCookies() ) 을 데려온다.    

쿠키객체.getName(): 쿠키의 이름(key)
쿠키객체.getValue():  쿠키의 값(value)

>쿠키 삭제
- 쿠키의 유효기간을 설정해주는 방식으로 삭제할 수 있다. 
- 쿠키객체.setMaxAge(n): n초만큼 유지하다가 쿠키 삭제하도록 설정
- 쿠키를 수정하거나 삭제시 설정된 쿠키객체를 다시 response를 통해 사용자의 컴퓨터에 추가해주어야 한다.(덮어쓰기)

 

<쿠키생성과정>

1.사용자가 요청한다.

2.서버에서 쿠키를 생성하고 응답객체에 쿠키를 넣어준다. 

1)쿠키객체생성 

 Cookie cookie1 = new Cookie("Binch","Sogood");

 Cookie cookie2 = new Cookie("Ace","werrrrr");

2)쿠키 응답객체에 넣기 

 response.addCookie(cookie1);

 response.addCookie(cookie2);

 

<저장된 쿠키가져와서 사용하기>

사용자의 요청객체에 저장된 쿠키가 있음.

1.요청객체를 통해 header안에 있는 cookie를 가져온다. 이 때 문자열로 저장된다.

 String check= request.getHeader("Cookie");

2.값이 있는지 없는지 확인 후 자바에서의 사용을 위한 cookies배열을 다시 저장한다. 

3.쿠키즈배열을 for문을 이용하여 하나씩 name과 value를 데려온다.

if( check != null ){

  Cookie[ ] cookies = request.getCookies( );

  for( Cookie c : cookies ){

     out.println( c.getName() + " : ");

     out.println( c.getValue() +"<br>")

  // 우리가 쿠키를 데려왔을때 쿠키를 삭제하거나 수정할 수 있다.

     if( c.getName().equals("Ace") ){

           1)  c.setMaxAge(초)         //초단위! 보통 0초로 맞추어 웹브라우저 열자마자 삭제되도록 한다.

           2)  c.setValue(don'teat);    //쿠키 수정하기. 

           response.addCookie(c);  -------> 삭제또는 수정시 받은쪽에만 수정되어있으므로 다시 응답객체에 넣어주기.

    }

   } 

  }

 

<실습>

1.회원가입 폼을 만들어서 사용자의 입력값을 받아서 DB에 저장해주기.

2.로그인창도 띄어주기

 

큰 틀은 아래와 같다.

1)joinview.jsp 파일을 만들어서 회원가입폼을 생성한다.

2)제출누르면 join_db.jsp 에서 처리하게 한다. 

3)처리후 로그인 창 뜨도록 loginview.jsp 파일 만든다. 

 

 보기엔 참 쉬워보이지만 DBMS 때 배웠던 내용들을 다시 복기해야 하니 조금 머리가 아픈듯 하다.. 일단 간단히 회원가입폼은 생성한다. 

여유있게 유효성 검사도 해주자 ,,

두번째로는, DB연동을 해준다.

데이터베이스를 자바식으로 프로그래밍으로 돌려야 하므로 JDBC API 가 필요하다! 미리 저장해둔 jar 파일을 build-path 를 이용하여 라이브러리에 추가해주고 또한 추가적으로 WEB-INF 파일 안의 lib 에도 추가로 저장해두어야 한다. 

 

세번째로는, join_db.jsp 파일에 db를 직접 연결해주고 입력값을 DB에 저장해준다. 

네번째로는, 회원가입한 당사자 정보를 joinid 쿠키에 넣어두었으므로 로그인창에서 아이디에 joinid 쿠키를 가져와서 띄어주면 완성이다.

3번에서 삼항연산자와 표현식을 써서 아이디를 알려주었다.

 

 따로 따로 배웠던 개념들이 계속해서 합쳐지고 있다. 처음 배우니 하나를 배우고 익숙해지기도 전에 새로운것을 배워 자꾸 까먹게 되어 응용이 되진 않지만..그래도 처음엔 왜 자바스크립트를 배우는거지 JSP는 왜 배우지..라고 생각을 했었는데 웹개발을 하기 위해선 꼭 하나하나 모두 소중하고 필수적인 재료들임을 깊이 깨닫게 되는것 같다. 더 자주 복습하고 혼자 코딩도 해보고 깃허브에 올리는 습관을 길들여야 겠다는 생각이 들었다. 

'프로그래밍 > JSP' 카테고리의 다른 글

JSP 6일차 - DBCP, JNDI,Mybatis  (0) 2022.01.27
JSP 5일차 - Session, Ajax  (0) 2022.01.24
JSP 3일차 - 액션태그  (0) 2022.01.20
JSP 2일차 - 스크립트,디렉티브 태그  (0) 2022.01.19
JSP 1일차 - JSP 란?  (0) 2022.01.17