-
[JSP]_19일차_05.21프로그래밍/JSP 2021. 5. 21. 22:54
12장. 필터
★★★★★
Development Declaration(DD파일) == web.xml (같다)
필터를 사용하는 이유 : logging을 위해(기록 남김)
- 최근에는 잘 사용하지 않음 (방화벽, 침입방지시스템, 관제실 사용으로 인해)
- logging하는 이유
- Client↔Server간 통신하는 것을 확인하기 위해
- 2가지 방법 : 디버깅 툴 + 이클립스 콘솔 출력
- Client↔Server간 통신하는 것을 확인하기 위해
필터의 기능
- 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://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
- mySQL (오픈소스)
Database : 행과 열로 이루어진 구조
DBMS : SW
mySQL 명령어
- 명령어
- mySQL 데이터베이스의 자료형
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