본문 바로가기
Framekwork/photogram

[스프링 부트 포토그램] 11강 ~ 15강 Controller (데이터 전송, 응답, redirection)

by 아이엠제니 2024. 8. 21.

 

 

IDE: IntetlliJ Ultimate
Spring Boot: 3.3.0
JDK: 17

 

 


 

 

 

 

[스프링 부트 포토그램] 8강~ 10강 Controller (동작 방식, http, 쿼리스트링, 주소 변수 매핑)

IDE: IntetlliJ UltimateSpring Boot: 3.3.0JDK: 17     [스프링 부트 포토그램] 1강 ~7강 환경설정 완료강의의 앞부분은 환경설정과 관련된 부분이다.이미 설치되어 있거나, 아는 내용들은 간단하게 정리만

devje.tistory.com

 

 

 

 

 

11강 스프링 부트 Controller - http body 데이터 전송하기


> http body 데이터 전송하기 (실습)

  • http header의 Content-Type 이해
  • 스프링 부트는 기본적으로 x-www-form-urlencoded 타입을 파싱(분석)해줌
  • x-www-form-urlencoded
    • key=value
  • plain/text
    • 안녕
  • application/json
    • {"username": "홍길동"}

 

💾 HttpBodyController.java

package org.example.photogram_re.web;

import lombok.extern.slf4j.Slf4j;
import org.example.photogram_re.domain.User;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class HttpBodyController {

    @PostMapping("/body1")
    public String xwwwformurlencoded(@RequestParam("username") String username) {
        log.info("username: {}", username);
        return "key=value 전송옴";

    }

    @PostMapping("/body2")
    public String plaintext(@RequestBody String data) {
        log.info("data: {}", data);
        return "text/plain 전송옴";

    }

    @PostMapping("/body3")
    public String applicationjson(@RequestBody String data) {
        log.info(data);
        return "json 전송옴";
    }

    @PostMapping("/body4")
    public String applicationjsonToObject(@RequestBody User user) {
        log.info("user: {}", user.getUsername());
        return "json 전송옴";
    }

}

 

💾 User.java

package org.example.photogram_re.domain;

public class User {
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

 

 

 

위에서부터 차례대로 body1, body2, body3, body4

 

 

 

12강 스프링 부트 Controller - JSON 응답하기


💾 HttpResponseController.java

package org.example.photogram_re.web;

import org.example.photogram_re.domain.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HttpResponseJsonController {

    @GetMapping("/resp/json")
    public String respJson() {
        return "{\"username\":\"cos\"}";
    }

    @GetMapping("/resp/json/object")
    public User respJsonObject() {
        User user = new User();
        user.setUsername("홍길동");

        return user; // 1. MessageConverter 가 자동으로 JavaObejct를 Json으로 변경해서 통신을 통해 응답을 해준다
        // 2. @RestController 일 때만 MessageConverter가 작동함
    }
}

 

 

 

13강 스프링 부트 Controller - HTML 응답


http 요청을 file로 응답하기

 

  1. .txt 파일 응답하기 (기본 경로는 resources/static)
  2. 스프링 부트가 지원하는 .mustache 파일 응답하기
  3. 스프링 부트가 버린 .jsp 파일 응답하기

.jsp와 .mustache 파일은 템플릿 엔진을 가지고 있다.

템플릿 엔진이란 html 파일에 java 코 드를 쓸 수 있음

 

[템플릿 엔진으로 `Thymeleaf`를 사용할 것이기 때문에, 이 부분은 강의만 시청.]

 

 

 

14강 스프링 부트 Controller - JSP 파일에 자바 코드 사용해보기


  • java 코드 사용
  • model 사용

 

[템플릿 엔진으로 `Thymeleaf`를 사용할 것이기 때문에, 이 부분은 강의만 시청.]

 

 

 

15강 스프링 부트 Controller - HTTP 요청 재분배하기 (redirection)


  • http 상태코드 300번대
  • 다른 주소로 요청을 분배한다

 

💾 HttpRedirectionController.java

package org.example.photogram_re.web;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class HttpRedirectionController {

    @GetMapping("/home")
    public String home() {
        // 1만줄 가정
        return "home";
    }

    @GetMapping("/away")
    public String away() {
        // 다른 코드
        return "redirect:/home";
    }
}

 

💾 home.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
This is Home
</body>
</html>

 

 

 

 

 

이지업클래스 [메타코딩] 스프링부트 SNS프로젝트 - 포토그램 만들기 강의 실습

 

 

 

 

 

 

300x250