Spring - 5

CYSSSSSSSSS·2024년 4월 11일

스프링

목록 보기
5/16

Spring

Spring Web 개발 기초

  • 정적 컨텐츠
  • MVC와 템플릿 엔진
  • API

정적 컨텐츠

  • 정적 파일을 그대로 웹 브라우저에 랜더링 시킨다.
  • src/main/resources/static/ 정적 html 파일을 작성한다.

  • localhost:8000/hello-static.html을 입력하면 스프링 컨테이너에서 컨트롤러 부분에서 hello-static 컨트롤러가 있는지 찾는다.
  • resources 안에 static 폴더에서 hello-static 정적 파일을 찾는다.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>static-content</title>
</head>
<body>
    <h1>정적 컨텐츠</h1>
    <p>정적 컨텐츠 입니다.</p>
</body>
</html>

MVC와 템플릿 엔진

  • model - view - controller를 사용하여 동적으로 개발하는 방식
  • 정적 컨텐츠와 다르게 서버에서 변형하여 HTML을 랜더링 하는 방식
  • 작동 원리는 사용자가 hello-mvc?name=~~~ url로 입력한다.
  • 입력한 url을 통해 톰켓 서버가 hellocontroller에서 맞는 url을 찾는다.
  • 맞는 컨트롤러에서 필요한 작업과 모델을 리턴 시켜준다.
  • viewResolver를 통해 템플릿 폴더에서 html을 찾아주고 변환후에 브라우저에 띄워준다.

controller

package Portfolio.PortfolioSpring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class HelloController {
    @GetMapping("hello") // 주소창에서 hello 라는 주소가 들어오면 실행되는 메서드
    public String hello(Model model){
        model.addAttribute("data" , "Hello!!"); //  data를 hello 라고 넘긴다.
        return "hello"; // hello를 리턴
    }
    @GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("name") String name , Model model){ // requestparam은 웹 사이트 url에서 받은 파라미터를 사용한다는 뜻이다.
        model.addAttribute("name" , name);
        return "hello-template";
    }
}
  • RequestParam은 url에서 데이터를 얻을때 사용하는 어노테이션이다.
  • 127.0.0.1:8000/hello-mvc?name=~~ name에 데이터를 직접 받아 html에 전달하는 방식이다.
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>hello-mvc</title>
</head>
<body>
    <p th:text="'hello ' + ${name}">Hello! empty</p>
</body>
</html>
  • url로 받은 name을 p태그에 $name을 넣어서 사용한다.

API

  • JSON 데이터 형식을 기준으로 클라이언트에게 데이터를 전달하는 방식이다.
  • 서버 끼리 통신할때 사용하는 방식이다.

  • 사용자가 url로 api를 호출 하면 톰켓에서 hellocontroller를 찾는다
  • resposebody라는 에노테이션을 발견하면 http응답에 데이터를 바로 넘겨야 겠다고 판단한다.
  • 이때 객체가 오면 기본 디폴트가 json 방식으로 만드는게 기본 정책이다.
  • HttpMessageConverter에서 JsonConverter/StringConverter가 있는데 받은 데이터를 그대로 리턴하면 StringConverter 객체를 리턴하면 JsonConverter를 사용한다.
  • 실무에서는 MappingJackson2HttpMessageConverter를 이용하여 객체f를 처리하는데 사용한다.

문자를 넘길때

    @GetMapping("hello-string")
    @ResponseBody  // http 통신 프로토콜 규칙에 의해 body에 직접 데이터를 넣겠다.
    public String helloString(@RequestParam("name") String name){
        return "hello " + name;  // hello spring
    }

객체를 넘길때(JSON)

    @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name") String name){
        Hello hello = new Hello();
        hello.setName(name); //  객체를 넘기기
        return hello;
    }
    static class Hello{
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
profile
개발자 되고 싶어요

0개의 댓글