[Servlet][국비교육] Day 68

Ga02·2023년 4월 7일

국비교육

목록 보기
62/82

D:\eclipse-web-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\Fileupload

➰ MultipartRequest 클래스의 주요 메소드

  • String getParameter(String name);

    • 전달 파라미터를 얻어옴
    • 폼필드 값을 반환
  • String[] getParameterValues(String name);

    • 같은 name으로 전달된 파라미터들을 String 배열로 반환
  • File getFile(String name);

    • 업로드된 파일 정보 객체 얻기
  • Striing getOriginalFileName(String name);

    • 업로드된 파일의 원본 이름 반환
  • String getFileSystemName(String name);

    • 업로드된 파일의 저장된 이름 반환
  • String getContentType(String name);

    • 업로드된 파일의 형식을 반환
    • MIME타입

🔍 서블릿 필터, Servlet Filter

클라이언트의 요청정보, 서버의 응답정보를 필터링할 때 사용하는 기술

  • 서블릿이 실행되기 직전, 서블릿이 실행된 직후에 필터클래스가 적용됨
    • 요청에 대한 전 처리
    • 응답에 대한 후 처리
  • 필터 클래스는 javax.servlet.Filter 인터페이스를 상속받아 구현


    클라이언트가 보낸 정보에 추가적으로 뭐 ㄹ더 적용 혹은 교체 혹은 중단하고 서블릿으로 보내주려는 기능
    서블릿을 이용해서 필터를 구현해서 보조역할을 하는 서블릿같은 느낌으로 개발 -> 기본 구조가 서블릿을 닮아있음
    클라이언트가 요청을 보내면 제일 처음 요청을 받아들이는건 Servlet/JSP Container
    컨테이너가 요청을 확인하고 서블릿으로 보내줌
    요청이 들어오면 컨테이너가 매핑되어있는 필터 혹은 서블릿으로 보내줌
    필터 간 포워드하듯 필터링하기 가능
    필터링이 끝나면 Servlet, JSP로 보내줌
    응답도 필터를 거쳐거쳐 클라이언트에게 도달

➰ 서블릿 필터의 주요 메소드

void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException

  • request : 요청정보를 서블릿 이전에 처리할 수 있는 객체
  • response : 응답정보를 서블릿 이후에 처리할 수 있는 객체
  • chain : 다음 필터나 서블릿으로 요청-응답을 이어주는 객체

➰ 주로 적용되는 필터 기능

전달 파라미터의 인코딩 설정(UTF-8)

  • 사용자의 인증 상태 관리(확인)
    • 로그인 상태 검증 -> 필터로 하지 않을 것 / 나중에 스프링 프레임워크로 가면 필터의 업그레이드 버전이 있음(인터셉트)
      Authentication

http://localhost:8088/Apple/

./ ➡ http://localhost:8088/Apple/
./board/insert ➡ http://localhost:8088/Apple/board/insert
./insert ➡

../../aaa ➡ http://localhost:8088/Apple/aaa


http://localhost:8088/

http://localhost:8088/index
http://localhost:8088/index.jsp
http://localhost:8088/index.html


** 서버 프로그램 구현 평가 4월 12일
문제해결 시나리오
포트폴리오

  • Servlet/JSP를 이용한 MVC 웹개발 전부
  • 코드 구현 / 분석
  • Front 구현

서블릿/JSP ~4/28
프레임워크 ~5/22
프로젝트 ~6/20

** 전원 주제 발표

  • 메인 주제 선정
  • 기능들 정리, 설명(메뉴 형식)
  • 발표시간 3~5분
  • PPT 준비 x
  • 간단히 텍스트로 적어오기(다 같이 볼 수 있게)
    -> 월요일에 발표하기

** 주제 발표 후 전원 투표

  • 다득표 아이디어 낸 사람이 조장

** 파이널 프로젝트

  • 웹 어플리케이션 제적
  • HTML/CSS/JS/JQuery/WEB API 기반의 클라이언트 개발(JSP 이용)
  • Spring Framework 기반의 서버 프로그램 개발
  • MyBatis Framework 기반의 DB 처리(JDBC 기반의 프레임워크)
  • Oracle DB 사용
  • Apache-Tomcat 서버 사용

** 프로젝트 주제

  • 선정적x, 도박성x, 게임x(게임성o), 쇼핑몰x
  • 단독 쇼핑몰 사이트x
  • 기본 사이트에 추가적인 쇼핑시스템o
  • 사이트의 결과물이 상품성o, 공익성o -> 큰 의미가 없는 것 같음

** 프로젝트에서 구현되는 기능

  • 로그인(세션 기술, 회원관리) + 소셜로그인
  • 게시판 + 댓글 / 정렬 공지사항 추천기능 사진첨부 등등
  • 파일 업/다운로드
  • DB 사용
  • ajax 기술 활용
  • 관리자 사이트 : 본 사이트와 이원화시키면 좋음 / UI는 너무 공들일 필요 없음(깔끔하게만 구성)

  • 결제
  • 예약, 장바구니
  • 메일발송, SMS발송
  • 회원의 등급관리
  • WEB API 최대한 활용(우편번호, GPS, 공공데이터, 지도, 차트, ...)

🔍 무상태 프로토콜, Stateless Protocol

통신 상황에 대한 상태정보를 저장하지 않는 프로토콜을 뜻함
서버-클라이언트 사이의 통신 이력(기록)을 프로토콜이 기억하지 않음
👉🏻 이전 통신과 다음 통신의 연결점이 없음

  • HTTP Protocol은 무상태 프로토콜
    요청이 발생할 때마다 서버는 이전에 요청이 있었던 클라이언트인지 새로운 클라이언트인지 프로토콜 정보만으로는 구분할 수 없음
  • 같은 클라이언트의 연속된 요청인지 판단할 수 없음 👉🏻 로그인 상태 유지와 같은 정보를 프로토콜만으로 구현(처리)할 수 없음
  • 통신 상태를 유지하는 상태 관리 기술이 필요

➰ 상태관리 매커니즘

클라이언트의 통신 정보를 서버가 유지하기 위한 기술들의 조합

  • 쿠키, Cookie : 서버에서 필요한 정보(데이터)를 클라이언트(브라우저)에 저장하도록 만드는 기술
  • 세션, Session : 서버-클라이언트의 연결 상태를 유지하는 기술
    ✔ 서버가 접속한 클라이언트를 구하기 위한 식별값 "세션ID"를 생성
    ✔ 접속한 각각의 클라이언트에게 개별적인 "세션ID"를 쿠키로 저장하도록 전달
    ✔ 클라이언트는 다음 접속부터 "세션ID"를 포함하여 통신
    ✔ 서버는 "세션ID" 별로 메모리 저장 공간(영역)을 만들어서 관리, 필요한 정보를 저장 👉🏻 Session Scope

클라이언트에 웹 서버의 정보(데이터)를 저장하는 기술

  • 쿠키정보는 name=value 쌍으로 이루어져 있음
  • 쿠키는 한 번에 여러개를 저장할 수 있음
  • 클라이언트(브라우저)는 쿠키를 도메인 별로 저장하고 관리
  • 쿠키정보에는 생성된 시간을 포함하고 있음
  • 쿠키 정보에 유지 시간(MaxAge)을 포함시킬 수 있음
  • 클라이언트가 쿠키를 보관하고 있는 유지시간을 나타냄
  • 기본값은 무한으로 설정됨
  • 설정할 때에는 초단위로 설정
  • 자바 서블릿에는 javax.servlet.http.Cookie 클래스를 이용하여 관리

➰ 쿠키의 기본 동작 흐름

1. 클라이언트가 서버에 요청을 보낼 때 쿠키 정보를 포함
➡ 요청 메시지의 헤더 영역에 포함하여 전달
➡ Cookie 항목에 key=value 쌍으로 추가됨
➡ 쿠키가 없으면 보내지 않음

2. 서버는 클라이언트의 요청정보에서 쿠키 정보를 확인할 수 있음
➡ Servlet클래스의 HttpServletRequest 객체에서 확인 가능

3. 서버는 클라이언트로 응답을 보낼 때 쿠키를 저장하도록 추가할 수 있음
➡ 응답 메시지의 헤더 영역에 포함하여 전달
➡ Set-Cookie 항목을 이용
➡ HttpServletResponse객체를 이용하여 쿠키를 전달

profile
IT꿈나무 댓츠미

0개의 댓글