ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP]_19일차_05.21
    프로그래밍/JSP 2021. 5. 21. 22:54

    12장. 필터


    ★★★★★

    Development Declaration(DD파일) == web.xml (같다)

    필터를 사용하는 이유 : logging을 위해(기록 남김)

    • 최근에는 잘 사용하지 않음 (방화벽, 침입방지시스템, 관제실 사용으로 인해)
    • logging하는 이유
      • Client↔Server간 통신하는 것을 확인하기 위해
        • 2가지 방법 : 디버깅 툴 + 이클립스 콘솔 출력

    필터의 기능

    • Request 필터 : 요청 정보를 로그 파일로 작성 등

    Filter 인터페이스 메소드

    • init(...) : 필터 인스턴스의 초기화
    • doFilter(...) : 필터 기능 작성
      • JSP 컨테이너가 필터를 리소스에 적용할 때마다 호출되는 메소드
      • 디버깅할 때 많이 사용!
    • destory(...) : 필터 인스턴스의 종료 전에 호출되는 메소드

    13장. 세션

    세션 (서버에 데이터가 존재)

    • 서버의 메모리에 존재 → 서버가 꺼지면 데이터가 사라짐 (휘발성)
    • 클라이언트 쪽에서 꺼져도 데이터가 사라지지 않음
    • 다른 웹 페이지에 갔다가 되돌아와도 로그인 상태가 유지된다
    • 로그인 인증을 통해 사용 권한을 부여한다 (ex. 장바구니, 주문 처리)
    • 웹 서버에서만 접근 가능(웹 서버에 존재하기 때문)
    • 웹 브라우저를 닫기 전까지 웹 페이지를 이동하더라도 사용자의 정보가 웹 서버에 보관되어 있어 사용자 정보를 잃지 않는다
    • 상황에 따라서는 세션을 쓰지 않아야 할 수도 있다.

    세션의 문제점

    • 서버의 부하가 커진다
    • 보안상의 문제 발생

    session 내장 객체 (내장 객체 - import 하지 않고 바로 사용)

    세션 설정

    setAttribute(String name, Object value) 메소드

    • 세션의 속성을 설정, 계속 세션 상태를 유지할 수 있다
    • session01.jsp
    • session01 실행 결과

    단일 세션 정보 얻기

    getAttribute(String name) 메소드

    • 생성된 세션의 정보를 받아올 수 있다 (한 개)

    getAttributeNames() 메소드

    • 생성된 세션의 정보를 받아올 수 있다 (여러 개) ( 배열)

    getMaxInactiveInterval(int inverval) 메소드

    • 해당 세션을 유지하기 위해 세션 유지 시간을 반환 (기본 값은 1800초(30분))
    • session02.jsp
    • session02.jsp 실행결과

    세션 유효 시간 설정

    void setMaxInactiveInterval(int interval) 메소드

    • 세션 유효 시간을 0이나 음수로 설정하면 계속 세션을 유지한다 → 계속 메모리에 남아 있고, 시간이 흐르면 이 세션 때문에 메모리 부족 현상이 발생한다

    다중 세션 정보 얻기

    • 데이터가 없으면 반복문 종료
    • hasMoreEelements() 메소드 : true 또는 false 반환
      • 다음 요소가 있으면 자동으로 다음으로 넘어감
      • 남은 요소가 없다면 false 반환
    • session03.jsp
    • 실행 결과

    세션에 저장된 세션 속성 삭제(1)

    void removeAttribute(String name) 메소드

    • 세션에 저장된 하나의 세션 속성 이름을 삭제
    • session04.jsp
    • 실행 결과

    세션에 저장된 세션 속성 삭제(2)

    • 모든 섹션 정보 한 번에 가져오기
    • 섹션 이름을 찾아 전부 삭제하기
    • session05.jsp
    • 실행 결과

    다중 세션 삭제하기

    void invalidate() 메소드

    • 현재 만들어진 세션을 모두 삭제
    • 섹션 모두 삭제하기
    • session06.jsp
    • 실행 결과

    14장. 쿠키: 주문 처리 페이지 만들기


    쿠키

    • 세션과 달리 상태 정보를 클라이언트에 저장한다 (웹 서버가 아닌)
    • 쿠키를 이용하면 사용자를 추적할 수 있다 (악용되고 있다)
    • 장점 : 클라이언트의 일정 폴더에 정보를 저장 → 웹 서버의 부하를 줄일 수 있다
    • 단점 : 웹 브라우저가 접속했던 웹 사이트에 관한 정보와 개인 정보가 기록된다 → 보안에 문제

    쿠키 삭제 관련

    • 쿠키를 삭제하는 것은 브라우저가 한다
    • 서버에서 쿠키의 유효기간을 0으로 설정하여 삭제를 하여도, 브라우저에서 삭제를 하지 않으면 계속 남아 있다 (실제 삭제 행위는 브라우저에서 결정)

    쿠키 ↔ 세션의 차이

    • 쿠키 : 상태 정보를 클라이언트에 저장 (점점 줄어들고 있다)
    • 섹션 : 상태 정보를 웹 서버에 저장

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5fde9f66-ac14-4b19-b178-8768c0bccaf4/Untitled.png

    https://helloinyong.tistory.com/97

    쿠키 생성하기

    Cookie Cookie(String name, String value)

    • 사용 예
    • cookie01.jsp
    • cookie01_process.jsp
    • 실행 결과

    쿠키 정보

    • 쿠키 객체 얻기

    Cookie[] cookies = request.getCookies();

    • 쿠키 객체의 정보 얻기
      • 이름, 값 가져오기 :
        String getName() String getValue()

    쿠키 객체에 저장된 모든 쿠키 값 가져와 출력하기

    • cookie02.jsp
    • 실행결과

    쿠키 객체에 저장된 모든 쿠키 삭제하기

    • Cookie 클래스는 쿠키를 삭제하는 기능을 별도로 제공하지 않는다 → 쿠키의 유효 기간을 만료하면 됨!

    void setMaxAge(int age) : 쿠키 유효 기간 설정 메소드

    • setMaxAge() 사용 예
    • Cookie cookie = new Cookie("memberId", "admin"); cookie.setMaxAge(0); response.addCookie(cookie);
    • cookie03.jsp
    • 실행결과

    15장. 데이터베이스 개발 환경 구축


    현재 사용하는 db

    • oracle 11g express edition
    • mySQL

    시중의 db 종류

    • 상업용 DB
      • MS-SQL : MS서버만 가능
      • IBM DB2 : 은행에서 주로 이용
      • Oracle 계열 : Web
    • 위의 DB 이용하지 않고 자신의 것을 사용 : Facebook, Google...
    • 무료
      • mySQL (오픈소스)
        • 성능이 꽤 좋고, 완전 무료 → 중소규모에 해당하는 모든 기업들이 거의 사용
        • 개량
          • aliSQL
          • 카카오뱅크
      • mariaDB

    Database : 행과 열로 이루어진 구조

    DBMS : SW

    mySQL 명령어

    • 명령어
    • mySQL 데이터베이스의 자료형

    참조_My_SQL_데이터베이스_기초.pptx

    mySQL에선

    • CHAR , VARCHAR : 용량이 작음
    • TEXT라는 데이터타입을 주로 사용 (65535문자)

    소스코드

    • member.sql
    • select.sql
    • update-delete-student.sql
    • student-create.sql
    • createDB.sql

    단축키

    • 오른쪽 마우스에서 확인가능

    각 db 와의 차이점 (oracle db, mySQL, ms-SQL .....)

    • 테이터 타입
    • db 접속 방법

    etc


    Flask

    • 빠르게 개발할 수 있다
    • 세세한 조정이 불가능하다

    중요한 정보는 세션이 아니라 db에 저장!

    브라우저에 데이터를 저장하는 방법

    • 세션 (서버에 저장)
      • ex) naver에서 로그아웃 시 서버에서 섹션 제거
    • 쿠키 (클라이언트에 저장)
    • DB

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

    [JSP, DB]_21일차_05.25  (0) 2021.05.26
    [JSP, DB]_20일차_05.24  (0) 2021.05.24
    [SQL, JSP]_15일차_05.17  (0) 2021.05.18

    댓글

Designed by Tistory.