Framework/Spring Boot

스프링 웹 개발 기초

잔망루피 2020. 12. 5. 23:15

1. 정적 컨텐츠

스프링 컨테이너에서 우선적으로 관련 컨트롤러를 찾는다. 없으면 static폴더에 있는 html을 본다.

 

2. MVC와 템플릿 엔진

Model : 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴해줌.

View : 화면과 관련.

Controller : URL에 따라서 사용자의 요청을 파악한 후 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영

 

@GetMapping("hello-mvc")
    public String helloMvc(@RequestParam(value="name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }

 

@RequestParam은 값 name으로 들어오는 값을 화면으로 넘겨준다.

실행 ex) http://localhost:8080/hello-mvc?name=spring!!!

결과) hello spring!!!

 

3. API

ResponseBody가 있으면 HttpMessageConverter가 작동한다. 문자 or 객체인지에 따라 각각 StringConverter 또는 JsonConverter가 작동.

 

 @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name){
        return "hello "+name;
    }

 

위의 코드는 맛보기용.

MVC와는 다르게 그냥 바로 보여줌.

@ResponseBody의 역할?

Rather than relying on a view technology to perform server-side rendering of the greeting data to HTML, this RESTful web service controller populates and returns a Greeting object. The object data will be written directly to the HTTP response as JSON.

HTTP의 BODY에 문자 내용을 직접 반환

ViewResolver 대신에 HttpMessageConverter가 동작

기본 문자처리 : StringHttpMessageConverter

기본 객체처리 : MappingJackson2HttpMessageConverter

 

@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;
        }
    }

 

 

generate는 Alt+Insert로 실행. Getter and Setter선택 후 ok

ctrl+shift+enter 치면 나머지 코드 완성. 예를 들어, ; 쓰기 귀찮을 때라던지~

객체를 넘긴다. 실행 결과는 json형식임. {키:값} 

http://localhost:8080/hello-api?name=spring!!!의 실행 결과는 {"name":"spring!!!"}

 

 

반응형

'Framework > Spring Boot' 카테고리의 다른 글

스프링 빈과 의존관계  (0) 2020.12.12
회원 관리 예제 - 백엔드 개발  (0) 2020.12.06
Build  (0) 2020.12.05
View 환경설정  (0) 2020.12.05
프로젝트 생성  (0) 2020.12.05