본문 바로가기

BackEnd : Spring/Spring MVC

(12)
[Spring MVC] 스프링 부트 3.2 매개변수 이름 인식 문제 오류 내용스프링 부트 3.2부터 자바 컴파일러에 -parameters 옵션을 넣어주어야 애노테이션의 이름을 생략할 수 있다. 주로 @RequestParam, @PathVariable 애노테이션에서 발생하는 문제라고 한다.오류 코드@Controller@RequestMapping("/basic/items")@RequiredArgsConstructor //기본 생성자 자동으로 만들어줌public class BasicItemController { private final ItemRepository itemRepository; @GetMapping public String items(Model model) { List items = itemRepository.findAll(); ..
[Spring MVC] FrontController : 유연한 컨트롤러 기존의 FrontController는 컨트롤러를 지정하여 호출하였다. 이렇게 하면 프론트 컨트롤러는 한 가지 방식의 컨트롤러 인터페이스만 사용할 수 있다. 만약 어떤 개발자는 ControllerV3 방식으로 개발하고 싶고, 어떤 개발자는 ControllerV4 방식으로 개발하고 싶다면 ? 이때 어댑터 패턴을 사용해서 프론트 컨트롤러가 다양한 방식의 컨트롤러를 처리할 수 있도록 변경할 수 있다. MyHandlerAdapter package hello.servlet.web.frontcontroller.v5; import hello.servlet.web.frontcontroller.ModelView; import jakarta.servlet.ServletException; import jakarta.servl..
[Spring MVC] FrontController : 단순하고 실용적인 컨트롤러 https://nymagicshop16.tistory.com/77 [Spring MVC] FrontController : Model 추가하기 서블릿 종속성 제거 https://nymagicshop16.tistory.com/76 [Spring MVC] FrontController : 뷰 분리하기 앞의 FrontController 구조에서 뷰를 분리하여 코드의 반복을 없앨 수 있다. MyView package hello.servlet.web.frontcontroller; nymagicshop16.tistory.com 앞서 만든 v3 컨트롤러를 보면, 항상 ModelView 객체를 생성하고 반환해야 부분이 번거롭다. V4 구조 (우리가 이름붙인 것이다) 는 컨트롤러가 ModelView를 반환하지 않고, Vie..
[Spring MVC] FrontController : Model 추가하기 서블릿 종속성 제거 https://nymagicshop16.tistory.com/76 [Spring MVC] FrontController : 뷰 분리하기 앞의 FrontController 구조에서 뷰를 분리하여 코드의 반복을 없앨 수 있다. MyView package hello.servlet.web.frontcontroller; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.http. nymagicshop16.tistory.com 위 글과 이어지는 내용이다. 지금 구조에서는 컨트롤러가 서블릿 기술을 몰라도 동작할 수 있다. request 객체를 Model로 사용하..
[Spring MVC] FrontController : 뷰 분리하기 앞의 FrontController 구조에서 뷰를 분리하여 코드의 반복을 없앨 수 있다. MyView package hello.servlet.web.frontcontroller; import jakarta.servlet.RequestDispatcher; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; public class MyView { private String viewPath; public MyView(String viewPath) { this.viewPa..
[Spring MVC] FrontController 패턴 생성하기 FrontController 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 입구를 하나로, 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 FrontController 도입 Controller를 인터페이스로 설계하기 Controller 인터페이스 package hello.servlet.web.frontcontroller.v1; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.i..
[Spring MVC] HttpServletResponse, Http 응답 데이터 HttpServletResponse 역할 Http 응답 메시지 생성 : HTTP 응답코드 지정, 헤더, 바디 생성 편의 기능 제공 : Content-Type, 쿠키, Redirect Content 편의 메서드 private void content(HttpServletResponse response) { //Content-Type: text/plain;charset=utf-8 //Content-Length: 2 //response.setHeader("Content-Type", "text/plain;charset=utf-8"); response.setContentType("text/plain"); response.setCharacterEncoding("utf-8"); //response.setContentL..
[Spring MVC] HTTP 요청 데이터 HTTP 요청 데이터 주로 3가지 방식 사용 GET - 쿼리 파라미터 /url**?username=hello&age=20** 메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달 예) 검색, 필터, 페이징등에서 많이 사용하는 방식 POST - HTML Form content-type: application/x-www-form-urlencoded 메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20 예) 회원 가입, 상품 주문, HTML Form 사용 HTTP message body에 데이터를 직접 담아서 요청 HTTP API에서 주로 사용, JSON, XML, TEXT 데이터 형식은 주로 JSON 사용 POST, PUT, PATCH GET 쿼리 파라미터 전달 데..