전체 글 133

[Spring MVC] MVC 패턴 - 적용

MVC 패턴 - 적용 서블릿을 컨트롤러로 사용하고, JSP를 뷰로 사용해서 MVC 패턴을 적용해 보자. Model은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있는데, request.setAttribute() , request.getAttribute()를 사용하면 데이터를 보관하고 조회할 수 있다. 회원 등록 회원 등록 폼 - 컨트롤러 hello.servlet.web.servletmvc.MvcMemberFormServlet package hello.servlet.web.servletmvc; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import java..

[Spring MVC] MVC 패턴 - 개요

MVC 패턴 - 개요 너무 많은 역할 하나의 서블릿이나 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 되면, 너무 많은 역할을 하게 되고 결과적으로 유지보수가 어려워진다. 비즈니스 로직을 호출하는 부분에 변경이 발생해도 해당 코드를 손대야 하고, UI를 변경할 일이 있어도 비즈니스 로직이 함께 있는 해당 파일을 수정해야 한다. 변경의 라이프 사이클 진짜 문제는 둘 사이에 변경의 라이프 사이클이 다르다는 점이다. 예를 들어서 UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 각각 다르게 발생할 가능성이 매우 높고 대부분 서로에게 영향을 주지 않는다. 이렇게 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. (물론 UI가 많이 변하면 함께 변경될 가능..

[Spring MVC] JSP로 회원 관리 웹 애플리케이션 만들기

JSP로 회원 관리 웹 애플리케이션 만들기 JSP 라이브러리 추가 JSP를 사용하려면 먼저 다음 라이브러리를 추가해야 한다. 스프링 부트 3.0 미만 build.gradle 에 추가 //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'javax.servlet:jstl' //JSP 추가 끝 스프링 부트 3.0 이상 build.gradle 에 추가 //JSP 추가 시작 implementation 'org.apache.tomcat.embed:tomcat-embed-jasper' implementation 'jakarta.servlet:jakarta.servlet-api' //스프링부트 3.0 이상 imp..

[Spring MVC] 서블릿으로 회원 관리 웹 애플리케이션 만들기

서블릿으로 회원 관리 웹 애플리케이션 만들기 이제 본격적으로 서블릿으로 회원 관리 웹 애플리케이션을 만들어보자. 가장 먼저 서블릿으로 회원 등록 HTML 폼을 제공해 보자. MemberFormServlet - 회원 등록 폼 package hello.servlet.web.servlet; import hello.servlet.domain.member.MemberRepository; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.serv..

[Spring MVC] 회원 관리 웹 애플리케이션 요구사항

회원 관리 웹 애플리케이션 요구사항 회원 정보 이름 : username 나이 : age 기능 요구사항 회원 저장 회원 목록 조회 회원 도메인 모델 package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age; } } id는 Member를 회원 저장소에 저장하면 회원 저장..

[Spring MVC] 서블릿 - HTTP 응답 데이터 (API JSON)

HTTP 응답 데이터 - API JSON hello.servlet.web.response. ResponseJsonServlet package hello.servlet.basic.response; import com.fasterxml.jackson.databind.ObjectMapper; import hello.servlet.basic.HelloData; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpS..

[Spring MVC] 서블릿 - HTTP 응답 데이터 (단순 텍스트, HTML)

HTTP 응답 데이터 - 단순 텍스트, HTML HTTP 응답 메시지는 주로 다음 내용을 담아서 전달한다. 단순 텍스트 응답 앞에서 살펴봄 ( writer.println("ok"); ) HTML 응답 HTTP API - MessageBody JSON 응답 HttpServletResponse - HTML 응답 hello.servlet.web.response.ResponseHtmlServlet package hello.servlet.basic.response; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servl..

[Spring MVC] 서블릿 - HttpServletResponse 기본 사용법

HttpServletResponse - 기본 사용법 HttpServletResponse 역할 HTTP 응답 메시지 생성 HTTP 응답 코드 지정 헤더 생성 바디 생성 편의 기능 제공 Content-Type, 쿠키, Redirect HttpServletResponse - 기본 사용법 hello.servlet.basic.response.ResponseHeaderServlet package hello.servlet.basic.response; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServ..

[Spring MVC] 서블릿 - HTTP 요청 데이터 (API 메시지 바디 - JSON)

HTTP 요청 데이터 - API 메시지 바디 - JSON 이번에는 HTTP API에서 주로 사용하는 JSON 형식으로 데이터를 전달해 보자. JSON 형식 전송 POST http://localhost:8080/request-body-json content-type: application/json message body: {"username": "hello", "age": 20} 결과: messageBody = {"username": "hello", "age": 20} JSON 형식 파싱 추가 JSON 형식으로 파싱 할 수 있게 객체를 하나 생성하자 hello.servlet.basic.HelloData package hello.servlet.basic; import lombok.Getter; import ..

[Spring MVC] 서블릿 - HTTP 요청 데이터 (API 메시지 바디 - 단순 텍스트)

HTTP 요청 데이터 - API 메시지 바디 (단순 텍스트) HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH 먼저 가장 단순한 텍스트 메시지를 HTTP 메시지 바디에 담아서 전송하고, 읽어보자. HTTP 메시지 바디의 데이터를 InputStream을 사용해서 직접 읽을 수 있다. RequestBodyStringServlet package hello.servlet.basic.request; import org.springframework.util.StreamUtils; import javax.servlet.ServletException; import javax.servl..