JAVA WEB 공부 5일차

머리터지기 일보직전·2022년 9월 25일
0

JAVA WEB

목록 보기
6/8

세션 트랙킹

  • HTTP 프로토콜은 서버-클라이언트 통신시 stateless방식으로 통신
  • 즉 브라우저에서 새 웹페이지 열면 기존의 웹 페이지나 서블릿에 관한 어떤 연결 정보도 알 수 없음
  • 따라서 세션 트랙킹을 이용해서 웹 페이지 간의 연결 기능을 구현함
  • <hidden> 태그와 URL ReWriting
  • 쿠키와 세션

<hidden> 태그와 URL ReWriting의 문제점

  • 웹 페이지가 많아지면 일일이 로그인 정보를 전송해야 함
  • GET방식으로 전송하므로 보안에 취약함
  • 그래서 간단한 정보를 주고받을 때 좋음, 로그인은 웬만하면 세션을 이용함

쿠키

  • 웹 페이지들 사이의 공유 정보를 클라이언트pc에 저장해놓고 사용하는 방법
  • 특징
    • 정보가 클라이언트pc에 저장됨
    • 저장 정보 용량에 제한이 있음(파일 용량은 4kb)
    • 보안이 취약함
    • 클라이언트 브라우저에서 사용 유무를 설정할 수 있음
    • 도메인당 쿠키가 만들어짐(웹사이트당 하나의 쿠키)
  • 쿠키 기능 실행 과정
    • 브라우저로 사이트에 접속
    • 서버는 정보를 저장한 쿠키를 생성
    • 생성된 쿠키를 브라우저로 전송
    • 브라우저는 서버로부터 받은 쿠키 정보를 쿠키 파일에 저장
    • 브라우저가 다시 접속해 서버가 브라우저에게 쿠키 전송을 요청하면 브라우저는 쿠키 정보를 서버에 넘겨줌
    • 서버는 쿠키 정보를 이용해 작업을 함
  • 쿠키 API 특징
    • javax.servlet.http.Cookie 를 이용
    • HttpServletResponse의 addCookie() 메서드를 이용해 클라이언트 브라우저에 쿠키를 전송한 후 저장
    • HttpServletRequest의 getCookie() 메서드를 이용해 쿠키를 서버로 가져옵니다.

세션(Session)

  • 웹 페이지들 사이의 공유 정보를 서버의 메모리에 저장해 놓고 사용하는 방법
  • 특징
    • 정보가 서버의 메모리에 저장
    • 브라우저의 세션 연동은 세션 쿠키를 이용
    • 쿠키보다 보안에 유리
    • 서버에 부하를 줄 수 있음
    • 브라우저(사용자)당 한 개의 세션(세션id)이 생성됨
    • 세션은 유혀 시간을 가짐(기본 유효시간은 30분)
    • 로그인 상태 유지 기능이나 쇼핑몰의 장바구니 담기 기능 등에 주로 사용됨
  • 세션 기능 실행 과정
    • 브라우저로 사이트에 접속
    • 서버는 접속한 브라우저에 대한 세션 객체를 생성
    • 서버는 생성된 세선id를 클라이언트 브라우저에 응답
    • 브라우저는 서버로부터 받은 세션id를 브라우저가 사용하는 메모리의 세션 쿠키에 저장
    • 브라우저가 재접속 하면 브라우저는 세션쿠키에 저장된 세션id를 서버에 전달
    • 서버는 전송된 세션id를 이용해 해당 세션에 접근하여 작업을 수행
  • 세션 얻는 방법
    • 서블릿에서 HttpSession 클래스 객체를 생성해서 사용
    • HttpSession 객체는 HttpServletRequest의 getSession()메서드를 호출해서 얻음
    • getSession() 종류
    • getSession() : 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성
    • getSession(true) : 기존의 세션 객체가 존재하면 반환하고, 없으면 새로 생성
    • getSession(false) : 기존의 세션 객체가 존재하면 반환하고, 없응면 null을 반환

세션 유효시간 제어

  • setMaxInactiveInterval() 메서드를 이용해서 유효시간 변경 가능
  • 톰캣의 경우 web.xml에서 수정 가능
  • invalidate() 세션 강제 제거

쿠키허용 해제 되있었을 때

  • encodeURL() 사용하면 됨

mariadb에서 아이디 비번 조회

  • select case when count(*)=1 then 'true else 'false' end as result from t_member where id="kim" and pwd="1234";

서블릿 속성과 스코프

  • ServletContext : 다른 브라우저에서도 attribute 공유
  • HttpSession : 다른 브라우저에서 attribute 공유 불가능
  • request : 서블릿마다 request가 다르므로 아예 공유 불가능

URL 패턴

  • 서블릿 매핑 시 사용되는 가상의 이름
  • 클라이언트가 브라우저에서 요청할 때 반드시 / 로 시작해야함
  • 이름까지 일치, 디렉터리까지 일치, 확장자만 일치하는 세가지로 나뉨
  • 디렉터리 명 > 확장자 순으로 적용

필터(Filter)

  • 브라우저에서 서블릿에 요청하거나 응답할 때 미리 요청이나 응답과 관련해 여러 가지 작업을 처리하는 기능
  • 요청이나 응답 시 공통적인 작업을 처리하는데 이용됨
  • 필터 용도
    • 요청필터 : 사용자 인증 및 권한 검사 / 요청 시 요청 관련 로그 작업 / 인코딩 기능
    • 응답필터 : 응답 결과에 대한 암호화 작업 / 서비스 시간 측정
    • chain.doFilter(request, response); // 이걸 기준으로 위에있으면 요청필터 기능 아래는 응답필터 기능
  • 필터 매핑 방법 : 애너테이션을 이용하는 방법 / web.xml에 설정하는 방법

리스너 (Listener API)

  • 서블릿에서 발생하는 이벤트에 대해서 처리를 할 수 있는 기능

0개의 댓글