
MemberFormServlet - 회원 등록 폼 @WebServlet(name = "memberFormServlet", urlPatterns = "/servlet/members/new-form") public class MemberFormServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("tex..

3. 서블릿, JSP, MVC 패턴 시작 회원 관리 웹 애플리케이션 요구사항 회원 도메인 모델 Member @Getter @Setter @NoArgsConstructor public class Member { private Long id; private String username; private int age; public Member(String username, int age) { this.username = username; this.age = age; } } 회원 저장소 MemberRepository /** * 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려 */ public class MemberRepository { private..

ResponseJsonServlet @WebServlet(name = "responseJsonServlet", urlPatterns = "/response-json") public class ResponseJsonServlet extends HttpServlet { private ObjectMapper objectMapper = new ObjectMapper(); @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Content-Type 헤더를 설정하여 응답의 데이터 타입을 JSON으로 지정. response.setCon..

단순 텍스트 응답은 앞에서 살펴봤으므로 생략. HTTP 응답 데이터 - HTML 응답 ResponseHtmlServlet @WebServlet(name = "responseHtmlServlet", urlPatterns = "/response-html") public class ResponseHtmlServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Content-Type: text/html;charset=utf-8 response.setContentType("text/h..

HttpServletResponse - 기본 사용법 1. ResponseHeaderServlet (1) @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //[status-line] response.setStatus(HttpServletResponse.SC_OK); // 200 //[re..

API 메시지 바디 - JSON JSON 형식 전송 JSON 형식 파싱 추가 HelloData @Getter @Setter public class HelloData { private String username; private int age; } Jackson 라이브러리 사용 ObjectMapper @WebServlet(name = "requestBodyJsonServlet", urlPatterns = "/request-body-json") public class RequestBodyJsonServlet extends HttpServlet { private ObjectMapper objectMapper = new ObjectMapper(); @Override protected void service(Ht..

HTTP 요청 데이터 - API Message Body - 단순 텍스트 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 - 예전에는 XML이 많이 쓰였다가 지금은 대부분 JSON 사용. 사용 메서드 : POST, PUT, PATCH HTTP 메시지 바디의 데이터를 InpusStream을 사용해서 직접 읽을 수 있다. 이런 API들은 서버와 서버가 통신할 때, 앱에서 서버로 요청할 때 웹 클라이언트에서 자바스크립트로 요청할 때 주로 사용한다. RequestBodyStringServlet @WebServlet(name = "requestBodyStringServlet", urlPatterns = "/r..

HTTP 요청 데이터 - POST HTML Form 주로 회원 가입, 상품 주문 등에서 사용하는 방식 특징 content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 데이터를 전달한다. username=hello&age=20 src/main/webapp/basic/hello-form.html username: age: 전송 실행해보기. http://localhost:8080/basic/hello-form.html POST의 HTML Form을 전송하면 웹 브라우저는 다음 형식으로 HTTP 메시지를 만든다. (웹 브라우저 개발자 모드 확인) 요청 URL: http://localhost:8080/request-param content-type:..