스프링 웹 개발 기초

임성준·2022년 1월 27일
0
post-thumbnail

스프링 웹 개발 종류

  1. 정적 컨텐츠
  • 클라이언트에게 HTML파일을 내려준다.
  1. MVC와 템플릿 엔진
  • HTML에 동적인 내용을 서버에서 수정하여 클라이언트에게 내려준다.
  1. API
  • HTML없이 데이터 그대로를 클라이언트에게 내려준다.

1. 정적 컨텐츠

경로)
src > main > resources > static

  • static 폴더 내에 html 파일을 자동으로 잡아주도록 설계되어있다.

파일명 그대로 url에 접근 )

  • localhost8080:파일명

2. MVC와 템플릿 엔진

각각의 역할을 나누기위해 분리

  • Model - 데이터를 전달해주는 역할
  • View - 프론트엔드 역할
  • Controller - 백엔드 역할

구현)

경로
src > main > java > hello > hellospring > controller > helloController.java

@GetMapping("hello-mvc")
// @ RequestParm(value = "쿼리스트링의 키") - 단일 파라미터를 받기위해 사용
                                                    // 쿼리스트링 키에 담긴 내용을 name에 저장
    public String helloMvc(@RequestParam(value = "name") String name, Model model) {
       // name에 담긴내용을 model의 키 name 값 name에 담는다.
       model.addAttribute("name", name);
    // 모델에 담긴 내용을 hello-template HTML파일에 키 name으로 넘겨준다.    
	return "hello-template";
}

경로
src > main > resources > templates > hello-template

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

// Model을 통해 전달 받은 내용을 name에 추가한 후
// 서버 가동시 P태그 사이에 텍스트를 치환한다.
// ** 서버를 가동하지 않으면 P태그 사이에 텍스트가 출력된다.
<p th:text="'안녕하세요. ' +${name}">hello! empty</p>
</body>
</html>

3. API

문자열을 전달하기 위한 구현)

경로
src > main > java > hello > hellospring > controller > helloController.java

@GetMapping("hello-string")
// @ResponseBody - HTTP BODY에 데이터를 그대로 전달하기위해 사용(HTML 없이)
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {
    //파라미터로 받은 name의 값에 hello를 붙여 클라이언트에게 바로 전달
        return "hello " + name;
        
        // 페이지 소스보기를 통해 HTML없이 데이터만 있는것을 확일할 수 있다.
    }

💎 데이터를 전달하기 위한 구현)

경로
src > main > java > hello > hellospring > controller > helloController.java

 @GetMapping("hello-api")
    @ResponseBody
    public Hello helloApi(@RequestParam("name")String name) {
        Hello hello = new Hello(); // 인스턴스 생성
        hello.setName(name); 
        // 쿼리스트링의 값을 setter로 상속받은 
        // Hello 클래스 name 필드에 저장
	// hello 데이터를 클라이언트에게 바로전달
        // 출력) {"name":"name에 저장한 값"} // JSON 방식
        return hello;
    }

    static class Hello {
        private String name; // 데이터의 안전성을 위해 private 사용
		
        // private에 데이터를 활용하기 위해 getter, setter 메소드를 사용 
        
        // JAVA bin 표준방식
        // 프로퍼티 접근 방식이라고도 한다.
        
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
profile
오늘도 공부 📖🌙

0개의 댓글