본문 바로가기

반응형

분류 전체보기

(126)
📋 Spring MVC - 4. MVC 프레임워크 만들기 2021-05-04글 MVC 프레임워크 만들기 프론트 컨트롤러 패턴 프론트 컨트롤러도 서블릿이다. 요청을 모두 받고 요청에 맞는 컨트롤러를 호출한다. 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받고, 요청에 맞는 컨트롤러를 찾아서 호출한다. 입구를 하나로 묶는다. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 된다. 스프링 웹 MVC와 프론트 컨트롤러 스프링 웹 MVC의 핵심도 바로 FrontController이다. (DispatcherServlet이 프론트 컨트롤러 패턴으로 되어있다.) ControllerV1을 인터페이스로 만들고 이를 구현한 Controller들을 만든다. public class MemberFormControllerV1 implements Contro..
📋 Spring MVC - 3. 서블릿, JSP, MVC 패턴 2021-05-03글 서블릿, JSP, MVC 패턴 서블릿으로 만들어보고, JSP로 만들어보고 마지막으로 MVC로 만들어 볼 것이다! 서블릿으로 만들었을 때 일부 예제 @WebServlet(name = "memberListServlet", urlPatterns = "/servlet/members") public class MemberListServlet extends HttpServlet { private MemberRepository memberRepository = MemberRepository.getInstance(); @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletExce..
📋 Spring MVC - 2. 서블릿 2021-05-03글 예제 스프링을 사용하지는 않지만 스프링 부트 프로젝트를 만든다. 서블릿은 톰캣 같은 WAS를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음 톰캣 서버를 실행해야 했는데, 스프링 부트는 톰캣 서버를 내장하고 있으니, 이로 진행한다. 보통은 Jar를 선택하지만, JSP를 돌리기 위해 War를 선택한다. HelloServlet // 서블릿이 호출되면 이 service가 호출된다. @WebServlet(name = "helloServlet", urlPatterns = "/hello") public class HelloServlet extends HttpServlet { @Override protected void service(HttpServletRequest r..
📋 배포 1단계 퀴즈 답 2021-05-01글 브라우저에서 google.com를 요청할 때 통신 과정이 어떻게 이루어질까요? 1. 주소창에 google.com를 입력하고 Enter를 누른다. 2. 웹 브라우저가 다음과 같은 구문으로 URL을 해석한다. scheme:[//[user:password@]host[:port]][/]path[?query][#fragment] scheme : 접근할 방법을 정의해 둔 프로토콜 이름 프로토콜 구분자인 : 와, IP 혹은 도메인 네임 정보가 필요한 프로토콜이면 // 프로코콜마다 특화된 정보 3. URL이 문법에 맞으면 Host 부분을 인코딩한다. 4. HSTS (HTTP Strict Transport Sercurity) 목록을 로드해서 확인한다. 있으면 첫 요청을 HTTPS, 없으면 HTTP ..
@Valid와 @Validated 2021-04-30글 @Valid와 @Validated 서비스 근로에서 장바구니 미션 API를 만들며 요청으로 들어온 DTO의 값을 검증하는 방법을 고민하다가, Spring Validation을 사용해보게 되었다. 이번에는 DTO의 필드에 제약을 걸어주고 컨트롤러에서 검증을 해주었는데, 새롭게 배운 내용이니 이를 정리해보려 한다. 사실 올바르게 사용한 것인지는 확신일 없으나, 이런 것도 있구나 다뤄보면서 여러 시행착오를 겪었기에 좀 더 공부하면서 정리해야지 😋 Dependency 추가 - gradle implementation 'org.springframework.boot:spring-boot-starter-validation' @Valid 이번에 우리가 사용한 예시를 보며 하나씩 정리하자..
@JsonProperty, @JsonNaming 2021-04-30글 이 글을 쓴 배경... 클라이언트에서 HTTP Body에 Json을 실어 요청을 실어 보내고 이를 받는 DTO를 만들어 사용하고 있었다. 하지만 API 명세로 클라이언트에서는 key 네이밍으로 스네이크 케이스를 사용하고, DTO 필드로는 스네이크 케이스를 사용하기 때문에 Jackson이 DTO에 제대로 매핑하지 못해 예외가 발생했다. 그래서 API 명세에서, 클라이언트가 key를 스네이크 케이스를 사용하여 보내주도록 바꾸려 하였으나, 똑똑한 스프링은 이를 위한 어노테이션을 제공해주고 있었다. 문제 상황 테스트 TestDto public class TestDto { private Long testId; public TestDto() { } public TestDto(Long testI..
📋 Spring MVC - 1. 웹 서버, 웹 애플리케이션 서버 2021-04-27글 웹 서버, 웹 애플리케이션 서버 웹서버 HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적 파일인 HTML, CSS, JS, 이미지, 영상 ex) NGINX, 아파치 웹 애플리케이션 서버 HTTP 기반으로 동작 웹 서버 기능 포함 + (정적 리소스 제공 가능) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML. REST API JSP, 스프링 MVC, 서블릿 톰캣 등.. 웹 서버 vs 웹 애플리케이션 서버 웹 서버는 정적 데이터를 담당하고 애플리케이션 서버는 동적 데이터를 담당한다. 사실 둘의 용어의 경계도 모호함 웹 서버도 프로그램을 실행하는 기능을 포함하기도 함 웹 애플리케이션 서버도 웹 서버의 기능을 제공함 자바에서는 서블릿 컨테이너 기능을 제공하면 웹 ..
📋 배포 인프라 강의 1 - Public Cloud, 통신 확인하기 2021-04-27글 Public Cloud란? Cloud 클라우드는 인터넷을 은유적으로 표현하는 말. 어디에든 있고 어떤 형태로든 변할 수 있다. 정확히는 인터넷을 통해 원격으로 접근할 수 있는 모든 것을 의미한다. (메일, 드라이브 등) Cloud Computing? 서버, 데이터베이스, 네트워킹 등 컴퓨팅 리소스를 인터넷을 통해 관리하는 것 클라우드를 사용하는 이유? 관심사의 분리 서비스를 만들려고 할 때 서비스의 본질에 대해 집중을 하기 위해서 사용한다. 우리의 서비스는 저장소에 있는 데이터를 서버에서 원하는 형태로 가공해 네트워크를 통해 사용자에게 전달한다. 우리는 데이터, 서버, 네트워크를 어떻게 관리할지만 관심을 두었다. 그렇다면 실제 서비스 할때를 생각해보자. 서비스할 경우 고려할 점 데이..

반응형