[Spring (5) ] Http 요청 처리 2 - 응답하기(Day 50)

코딩기록·2024년 12월 19일

[ 컨트롤러에서 뷰(html, jsp 파일)로 정보 전달하는 법 ]

1. Spring 안 쓸 때

  • HttpRequestServlet.setAttribute()로 전달

    @WebServlet("/submit")
    public class SubmitServlet extends HttpServlet {
    
       // Overriding the doPost method to handle POST requests
       @Override
       protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
           // Retrieving form data sent from a client (usually via a form)
           String name = request.getParameter("name"); // Retrieves the "name" parameter
           String age = request.getParameter("age");   // Retrieves the "age" parameter
    
           // Printing the data to the server console (for debugging or logging purposes)
           System.out.println("Name: " + name);
           System.out.println("Age: " + age);
    
           // !!!! HttpRequestServlet에 setAttribute 메소드로 jsp에 전달하고자 하는 데이터 넣어줌
           request.setAttribute("name", name);
           request.setAttribute("age", age);
    
           // Forwarding the request to a JSP page (result.jsp) for further handling/display
           request.getRequestDispatcher("result.jsp").forward(request, response);
       }
    }
    

2. Spring 프레임워크

  • Model.addAttribute()를 통해 전달
  // [타임리프]
    //  - 설명 : 백엔드에서 렌더링할 때, html 코드를 좀 더 쉽게 쓸 수 있게 해주는 템플릿
    //  - 동적 웹페이지 코드 저장 위치 : src > resources > templates > 000.html
    @GetMapping("/chap4-2/pet")
    public String pet(Model model) { // Model 객체 : 컨트롤러에서 생성된 데이터를 뷰로 전달하는 역할
                                     // vanille 코드에서 HttpRequestServlet.setAttribute 와 같은 역할
        model.addAttribute("username", "꼬끼오"); // Mode.addAttribute() : Model에 저장된 데이터를 뷰 템플릿에 전달하는 역할
        return "pet"; // src > resrcoures > templetes > pet.html로 자동 이동
    }
}



[ ResponseEntity ]

1. ❓ 언제 쓰나?

  • ⚖️ @ResponBody나 @RestController인 경우, 호출되는 메소드의 반환 데이터 타입이 ResponseEntity여야 함
  • 왜❓ Spring 내부 매커니즘에 의해, spring이 ResponseEntity 반환 받아서
    ResponseEntity의 body는 클라이언트와 통신하기 위해 json 형태로 변환하기 때문에

2. ResponseEntity의 메소드

1) status 세팅

  • ResponseEntity.status(HttpStatus.BAD_REQUEST) // spring 전용
  • ResponseEntity.status(401) // spring 전용
  • ResponseEntity.badRequest() // spring 전용
  • Spring 미사용 시 : @WebServlet, response.setStatus(HttpServletResponse.SC_BAD_REQUEST) 사용

2) header 세팅

  • ResponseEntity.header(headerName, headerValue) // spring 전용
  • HttpHeaders headers = new HttpHeaders(); // spring 전용
    hedaers.add(headerName, headerValue)
  • spring 안 쓸 때 : @WebServlet, response.setHeader() 사용

3) ResponEntity.body()

  • spring 안쓸 때 : @WebServlet, response.getWriter().write() 사용

[ Java 객체의 JSON 매핑 ]

@JsonProperty("name")

@JsonIgnore

  • json 객체에서 안 보여줄때

@JsonInclude(Inlcude.NON_NULL)

@JsonFormat(pattern = "yyyy-MM-dd")

0개의 댓글