2015년 8월 25일 화요일

신입SW인력을 위한 실전 JSP 동영상과정 - 제13~15강강 쿠키 및 세션, 예외처리

이 게시물은
http://www.wiz.center/200
http://www.wiz.center/201
http://www.wiz.center/202

의 동영상 강의를 시청하고 작성한 글입니다.
새로 시작하는 경우라면 위 링크의 동영상 강의를
들어보세요


1. 쿠키(Cookie)
  1) 관련 설명은 하단 위키미디어 링크 참고 위키는 HttpCookie여서
      내부적으로는 틀린점이 있을 수 있으나 생성자나 사용하는
      메서드는 같았음.
https://ko.wikipedia.org/wiki/HTTP_%EC%BF%A0%ED%82%A4

  2) 쿠키 작성시 Javax.servlet 밑의 Cookie 클래스
     Object를 상속받음 클래스 생성시 생성자에
       네임, 밸류를 넣게끔 강제함.
https://docs.oracle.com/javaee/6/api/javax/servlet/http/Cookie.html


2. JSP 에서 쿠키 사용 방법
  1) 사용방법
     (1) Cookie 생성자로 name, value 셋팅하고
          필요시 set 함수로 옵션 설정
     Cookie cookie = new Cookie("cookieN", "cookieV");

     (2) HttpResponse 객체인 response.addCookie(객체명)
           하면 response에 cookie가 리스트로 저장된다.

     (3) 확인하고자 하는 페이지에서는 request.getCookie()를
           Cookie[] 쿠키 리스트로 받아서
           for문으로 걸러서 처리한다.
 
...
Cookie[] cookies = request.getCookies();
for(int i=0; i");
 out.println("cookies[" + i + "] name : " + cookies[i].getName() + "
");
 out.println("cookies[" + i + "] value : " + cookies[i].getValue() + "
");
 out.println("=====================
");
}
...
 

  2) 자주 쓰이는 메서드
     위의 HttpCookie 설명 구문에는 사용할 수 있는 메서드가
       많아 보이지만 실제로는 String 으로 활용하는 메서드 몇개가
       사용되는 함수 대부분이다.
     (1) 생성할때 꼭 넣어야 되는 쿠키이름을 얻는 메서드
        이건 set이 없음
        getName() : 쿠키 이름을 얻습니다.


     (2) 스트링으로 받을 수 있는 값, 유효기간, 유효디렉터리, 버전
         값의 get, set 하는 메서드가 잘 쓰이는 함수들임
        setMaxAge() : 쿠키 유효기간을 설정 합니다.
        getMaxAge() : 쿠키 유효기간 정보를 얻습니다.
        setpath() : 쿠키사용의 유효 렉토리를 설정 합니다.
        getPath() : 쿠키사용의 유효 디렉토리 정보를 얻습니다.
        setValue() : 쿠키의 값을 설정 합니다.
        getValue() : 쿠키의 값을 얻습니다.
        setVersion() : 쿠키 버전을 설정 합니다.
        getVersion() : 쿠키 버전을 얻습니다.



  2) 사용시 유의점
     (1) 객체 생성은 request 객체로
     (2) set, get은 cookie 나 cookie[] 객체에서
     (3) set을 한 이력이 있는 cookie객체는 response에 꼭 넣어줘야
          해당 변경 내용이 이후에 유효하게 설정된다.



3. 세션
  1) 관련 설명은 하단 위키미디어 링크 참고
      세션 요청은 브라우저가 하고, 내용저장은 서버에 한다.
      세션 유효시간은 서버 설정파일에 저장한다.
      세션 id를 브라우저엔진별로 부여받는데 그걸 암호로
       session 리스트에 접근할 수 있다.
http://mohwaproject.tistory.com/176

  2) 쿠키 작성시 Object 밑에 있고, Final 클래스로 작성함.
      해당 클래스는 javax.mail. 패키지 밑에 넣어
      사용자(브라우저) 요청시 자동 생성되도록 설정함.
https://docs.oracle.com/javaee/6/api/javax/mail/Session.html

4. JSP 에서 세션 사용 방법
  1) 사용방법
     (1) Session은 cookie와 달리 session 객체가 생성되어 있음.
          해당 객체의 메서드를 활용해서 add하면 저장된다.

 
...
session.setAttribute("mySessionName", "mySessionData");
session.setAttribute("myNum", 12345);
...


     (2) 가져올때는 getAttribute(name) 으로 가져오는데 결과는
          Object 로서 형변환 하여 사용한다.

 
String obj1 = (String)session.getAttribute("mySessionName");


     (3) 가져올게 확실히 있는지 모를 경우, 전체 처리가 필요한 경우
          Names 값을 한번에 가져올 수 있다.
         Enumeration 클래스는 객체 집합 Vector 의 존재 유무를 확인
          가능한 클래스다. while문과 함께 객체 순차처리를 위해
          사용한다.
http://hyeonstorage.tistory.com/210

 
//         Names 값으로 Value 까지 구해서 처리 구현 가능하다.
Enumeration enumeration = session.getAttributeNames();
while(enumeration.hasMoreElements()){
 sName = enumeration.nextElement().toString();
 sValue = session.getAttribute(sName).toString();
 out.println("sName : " + sName + "
");
 out.println("sValue : " + sValue + "
");
}


     (4) 세션 삭제시 부분 삭제

 
session.removeAttribute("mySessionName(name");


          와 세션 전체 삭제인

 
session.invalidate();

          두가지 메서드를 제공한다.


  2) 자주 쓰이는 메서드
     설명 구문에는 사용할 수 있는 메서드가 많아 보이지만
      실제로는 String 으로 활용하는 메서드 몇개가
      사용되는 함수 대부분이다
      설명은 위에 1) 항목을 참고바란다.


  3) 사용시 유의점 서버 설정에 세션 유지 시간이 길 경우
      서버 허용 용량을 초과하거나 느려지는 등의 모습이 보이기도 한다.

5. JSP 에서 예외처리 방법
  1)  jsp 파일에서 설정하는 바업ㅂ
    (1) 사용하는 jsp 페이지에서 지시자를 이용해서
        사용자가 지정한 에러 페이지를 설정한다.
        (물론 해당 페이지는 작성되어 있어야 한다.)
    <%@ page errorPage= "errorPage.jsp"%>

    (2) 진행시 에러가 발생하면 해당 에러 페이지로 넘긴다.
       int i = 40/0

    (3) errorPage.jsp 라는 에러 페이지에서는 먼저
        지시자를 이용해서 해당 페이지 속성이 에러 페이지임을
        명 (default = false 임)
    <%@ page iserrorPage= "true" %>

    (4) 해당 페이지 status를 정상범위인 200으로 설정
        response 상태코드에 대해서는 아래 글 참고
     <% response.setStatus(200); %>

위키
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C

java Response.Status 명세
http://docs.oracle.com/javaee/7/api/javax/ws/rs/core/Response.Status.html

    (5) (3) 항목과 같이 iserrorPage 속성을 true 로 설정시
         jsp 에서  exception 객체와 해당 함수를 사용 가능함.
        <%= exception.getMessage() %>

관련 클래스에서 쓸수 있는 함수는 아래 링크 참고
http://hyeonstorage.tistory.com/87

http://www.tutorialspoint.com/jsp/jsp_exception_handling.htm

  2) web.xml 설정
     jsp 나 servlet 에서 설정하는 것보다 간단하게 설정 할 수 있다.
     status 상태값에 따라 아래처럼 페이지를 지정하여 처리 가능함
    (여기서도 각각 jsp 페이지는 준비되어 있어야 함)

  
   404
   /error404.jsp
  
  
   500
   /error500.jsp
  
  


댓글 없음:

댓글 쓰기