섹션2. 스프링 웹 개발 기초
1) 정적 컨텐츠
스프링 부트 정적 컨텐츠 기능
프로젝트 resources/static/hello-static.html
html파일을 생성하여 url을 통해서 접근 한다.
실행
http://localhost:8080/hello-static.html
먼저 웹브라우저에서 hello-static을 Controller에서 찾는다.
하지만 지금의 경우는 관련 컨트롤러가 없으므로 톰캣서버는
차순위로 resources 폴더내에서 hello-static.html 파일을 찾아 반환한다.
2) MVC와 템플릿 엔진
MVC : Model, View, Controller
프로그램을 개발할때 역할과 책임을 분리해야 한다.
View : 화면을 그리는데 모든 역량을 집중한 단
Controller : 비지니스로직이나 내부적인것을 처리하는 역할
타임리프의 장점 : html을 그대로 쓰고 서버없이 열어봐도 코드를 확인할 수 있다.
C:\Users\ASUS\Desktop\강의\hello-spring\src\main\java\hello\hellospring\controller\HelloController.java
// hello-mvc라는 매핑값으로 접근할 수 있다. ( http://localhost:8080/hello-mvc )
@GetMapping("hello-mvc")
// name1이라는 키로 값을 받는다 디폴트는 required = true// false의 경우 value를 생략가능하다
// 생략할 경우 value는 null로 표기된다.
public String helloMvc(@RequestParam(value = "name1", required = true) String name1, Model model){
// name1 = value 로 값을 지정한다면, 지역변수로서, 활용가능하고 addAttribute인수로 활용
// value객체를 namet 이름으로 추가한다. 뷰 코드에서 namet으로 지정한 이름을 통해 value를 사용
model.addAttribute("namet", name1);
// hello-template.html파일로 내용을 반환한다
return "hello-template";
}
C:\Users\ASUS\Desktop\강의\hello-spring\src\main\resources\templates\hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
// Model addAttribute(String name, Object value)로 지정된 value가 ${name}의 값으로 들어간다
<p th:text="'hello ' + ${namet}">hello! empty</p>
</body>
3) API
- @ResponseBody 를 이용하여 받은 value값을 문자열이나 객체(JSON)형태로 반환한다.
3_1) @ResponseBody 문자 반환
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello" + name; //hello spring
}
3_2) @ResponseBody 객체 반환
@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;
}
}
객체를 반환하는 Api 형태
@ResponseBody 사용 원리
- @HTTP의 BODY에 문자 내용을 직접 반환
- viewResolver 대신에 HttpMessageConverter가 동작
- 기본 문자 처리 : StringHttpMessageConverter
- 기본 객체 처리 : MappingJackson2HttpMessageConverter
- byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
'개발언어 > Java _ Spring' 카테고리의 다른 글
ArrayList에서 활용할 수 있는 반복문 : for문 / foreach문 / List.forEach() (0) | 2023.02.01 |
---|---|
HashMap()의 간단한 개념과 주요 메서드 와 설명 (0) | 2023.01.31 |
자바_this의 활용 (0) | 2022.08.18 |
다형성(Polymorphism) (0) | 2022.08.16 |
for문 (0) | 2022.08.03 |