목록BE/Servlet (27)
오봉이와 함께하는 개발 블로그
프론트 컨트롤러 도입 - v1 구조 클라이언트가 요청 어떤 요청이든 FrontController가 요청을 받는다. HTTP URL 매핑 정보에서 컨트롤러를 조회한다. 조회한 컨트롤러를 호출한다. 컨트롤러에서 로직 수행 후 JSP로 forward JSP는 클라이언트에 응답한다. FrontControllerServletV1 - 프론트 컨트롤러 // package hello.servlet.web.frontcontroller.v1; @WebServlet(name = "frontControllerServletV1", urlPatterns = "/front-controller/v1/*") public class FrontControllerServletV1 extends HttpServlet { private Map..
프론트 컨트롤러 패턴 소개 전에 서블릿을 컨트롤러로 하고 JSP를 뷰로 하는 MVC 패턴에서는 공통 처리, 반복적 작업 등 여러 불편 사항이 있었다. 이를 개선하는 프론트 컨트롤러 패턴을 도입하도록 해보자. 프론트 컨트롤러 도입 전 기존에는 컨트롤러에 공통 로직을 만들고 컨트롤러 로직을 만들었어야 했다. 프론트 컨트롤러 도입 후 프론트 컨트롤러를 도입하면 공통 로직을 한 곳에 두고 컨트롤러에서 필요한 로직을 각자 처리할 수 있도록 할 수 있다. 항상 프론트 컨트롤러를 통해 클라이언트 요청에 맞는 컨트롤러를 사용한다. FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받는다. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출한다. 입구가 하나가 된다. 공통 처리가..
서블릿으로 회원 관리 웹 애플리케이션 만들기 먼저 서블릿으로 회원 등록 HTML 폼을 제공해보자. 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 Servl..
회원 관리 웹 애플리케이션 요구사항 회원 정보 이름 : username 나이 : age 기능 요구사항 회원 저장 회원 목록 조회 회원 도메인 모델 // package hello.servlet.domain.member; @Getter @Setter public class Member { private String username; private int age; } 회원 저장소 public class MemberRepository { // 동시성 문제가 고려되어 있지 않기 때문에 실무에서는 ConcurrentHashMap, AtomicLong 사용을 고려하자. private static Map store = new HashMap(); private static long sequence = 0L; privat..
HttpServletResponse - 기본 사용법 역할 HTTP 응답 메시지 생성 HTTP 응답 코드 지정 헤더 생성 바디 생성 편의 기능 제공 Content-type 편리하게 지정 쿠키 편리하게 생성 Redirect 코드 @WebServlet(name = "responseHeaderServlet", urlPatterns = "/response-header") public class ResponseHeaderServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // stat..