
MVC 패턴 - 적용 회원 등록 회원 등록 폼 - 컨트롤러 @WebServlet(name = "mvcMemberFormServlet", urlPatterns = "/servlet-mvc/members/new-form") public class MvcMemberFormServlet extends HttpServlet { // 컨트롤러 역할 @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 그냥 jsp로 가주기만 하면 된다. String viewPath = "/WEB-INF/views/new-form.jsp"; Reques..

JSP 라이브러리 추가하기 build.gradle에 dependencies { // 전략 //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 //후략 } new-form.jsp : 회원 등록 폼 username: age: 전송 실행 화면 save.jsp - 회원 저장 JSP 실행해서 데이터 두 개를 집어넣고 확인해보면 다 들어가 있음을 확인할 수 있음. 정리 서블릿과 JSP의 한계

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..