Skip to content

Latest commit

 

History

History
118 lines (88 loc) · 3.06 KB

Java (34) 3fb15cef3e434c75802ebf3ac073199c.md

File metadata and controls

118 lines (88 loc) · 3.06 KB

Java (34)

작업중: In progress 태그: Dev, 백엔드프로그래밍, 웹&모바일, 자바프로그래밍기초 학습일: 02/17/2023

서블릿을 만드는 다양한 방법

  • <> GenericServlet
  • <> HelloServlet
    • <> serializable 구현 ———→

      ⇒ service()

    • <> HttpServlet 구현

      ⇒ get/post 요청 구별

      ⇒ @Override service()

      ㄴdoGet()

      ㄴdoPost()

서버 이중화

Untitled

위 경우를 대비하여 서블릿 객체를 다른 서버로 이전할 경우를 고려하여 serializable 인터페이스를 구현한다. (현재 드물긴 함)

Web Project 개발과 테스팅 흐름

Untitled

cf. 서블릿 출력과 한글 문자 코드 인코딩

  • Web Server에서 한글은 ‘?’ 로 출력하는 문제

    ⇒ 원인

    JVM 기본 문자집합 (utf-16) 과 ISO-8859-1 문자집합이 달라서.

    위 charset에는 한글 문자에 대한 코드값이 없다

    따라서, Webserver에서 ‘?’로 변환한다

    ⇒ 해결책

    response.setContentType(”text/html;charset=UTF-8”) 지정

                                        MIME Type;콘텐트의 문자 인코딩
    

    cf. * MIME Type

     응답 콘텐트가 무엇인지 웹 브라우저에게 알려주는 용도 
    

    ** 콘텐트의 문자 인코딩

      UTF16 → 8 로 변환, 출력
    

    PrintWriter out = response.getWriter();

    out.prinln(…);

URL과 getServletPath(), getPathInfo()

Untitled

URL 절대경로 & 상대경로

  • 자원이 소속된 곳 까지가 현재경로

    ⇒ 현재 경로가 어디까지냐에 따라 상대경로를 조절 할 필요가 있다


  • form 안에 post 시 name 필수
  • payload
  • Refresh

cf. 요청파라미터와 한글 인코딩

깨지는 문제 ⇒ post요청을 할 경우 ISO-8859-1로 전송

해결 ⇒ post요청을 UTF-8 묶어서 전송

getParameter(””)

따라서, post요청으로 전송 받은 문자열이 UTF-8로 인코딩 되었음을 알려줘야 한다.

request.setCharacterEncoding(”UTF-8”);

반드시 getParameter()를 호출하기 전에

  • Command Design Pattern

    eg. board/search 요청을 추가로 처리해야 한다면, BoardServlet 클래스를 변경해야 한다

    • 한 명령 → 한 메서드
    • 향후 명령 추가할 가능성이 있을 때

⇒ Command 패턴 방식으로 설계를 변경한다

  • 한 명령 → 한 클래스
  • 명령 추가 → 클래스 추가
  • 기존 클래스는 손대지 않는다

따라서, 기존의 BoardServlet의 메서드가 각각의 클래스로 분리된다

eg. BoardInsertServlet…etc