작업중: In progress 태그: Dev, 백엔드프로그래밍, 웹&모바일, 자바프로그래밍기초 학습일: 02/17/2023
- <> GenericServlet
- <> HelloServlet
-
<> serializable 구현 ———→
⇒ service()
-
<> HttpServlet 구현
⇒ get/post 요청 구별
⇒ @Override service()
ㄴdoGet()
ㄴdoPost()
-
서버 이중화
위 경우를 대비하여 서블릿 객체를 다른 서버로 이전할 경우를 고려하여 serializable 인터페이스를 구현한다. (현재 드물긴 함)
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(…);
-
자원이 소속된 곳 까지가 현재경로
⇒ 현재 경로가 어디까지냐에 따라 상대경로를 조절 할 필요가 있다
- 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