티스토리 뷰
HTTP 응답 방법
- 정적 리소스
- /static , /public, /resources, /META-INF/resources
- src/main/resources : 리소스를 보관, 클래스패스의 시작 경로
- View Template
- src/main/resources/templates : 기본 뷰 템플릿 경로
- HTTP API , 메시지 바디에 직접 입력
View Template 응답
src/main/resources/templates/response/hello.html
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org">
<head> <meta charset="UTF-8"> <title>Title</title> </head>
<body>
<p th:text="${data}">empty</p>
</body>
</html>
- 방법
- ModelAndView를 반환
- Model을 이용해서 데이터 전달 + URL 문자열로 전달
- 요청 URL 과 응답 URL 이름이 동일하면 생략 (권장 x -> 명시성이 떨어짐)
- @ResponseBody, HttpEntity를 사용하면 뷰템플릿이 아닌, HTTP 메시지 바디에 직접 응답 반환을 하는 것
@Controller
public class ResponseView{
@RequestMapping("/response-V1")
public ModelAndView responseV1(){
ModelAndView mv = new ModelAndView("response/hello").addObject("data", "hello!");
return mv;
}
@RequestMapping("/response-V2")
public String responseV2(Model model){
model.addAttribute("data", "hello!!");
return "response/hello";
}
// URL 정보가 같으면 응답 URL 생략 가능
@RequestMapping("/response/hello")
public void responseV3(Model model){
model.addAttribute("data", "hello");
}
}
HTTP API, Message Body 응답
- 방법)
- HttpServletResponse 이용
- ResponseEntity 이용
- 문자열, 객체 등등 반환 가능
- HTTP 상태코드 반환 가능
- HTTP 메시지 컨버터 사용됨 ( JSON 형식으로 변경됨 )
- @ResponseBody 이용 (messageBody에 그대로 반환)
- 추가 정보)
- class Level에 @RestController로 두면, 모든 method에 @ResponseBody 가 적용됨
@Slf4j
@Controller
public class ResponseBody{
@GetMapping("/response-V1")
public void responseBodyV1(HttpServletResponse response) throws IOException{
response.getWriter().write("ok");
}
@GetMapping("/response-V2")
public ResponseEntity<String> responseBodyV2(){
return new ResponseEntity<>("ok", HttpStatus.OK);
}
@ResponseBody
@GetMapping("/response-V3")
public String responseBodyV3(){
return "ok";
}
//ResponseEntity를 이용하여 객체 반환
@GetMapping("/response-V4")
public ResponseEntity<HelloData> responseBodyV4(){
HelloData helloData = new HelloData();
helloData.setUsername("user");
helloData.setAge("30");
return new ResponseEntity<>(helloData, HttpStatus.OK);
}
//@ResponseStatus 로 상태코드 설정
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@GetMapping("/response-V5")
//객체 직접 반환
public HelloData responseBodyV5(){
HelloData helloData = new HelloData();
helloData.setUsername("user");
helloData.setAge(30);
return helloData;
}
}
'백엔드 > SPRING MVC' 카테고리의 다른 글
메시지, 국제화 (0) | 2024.09.24 |
---|---|
HTTP Message Converter (0) | 2024.09.02 |
Spring MVC (Http 요청 처리) (0) | 2024.09.01 |
Log 설정 및 Logging 사용 (0) | 2024.09.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 게시판 프로젝트
- 깊이우선탐색
- db
- Thymeleaf
- 오블완
- JDBC
- 우선순위 큐
- SQL
- Spring
- 버블정렬
- 이진탐색
- JSON
- DFS
- 기술면접
- 타입변환
- stack
- 게시판
- bean
- 정렬
- 검증
- 포트폴리오
- Java
- 예외처리
- 티스토리챌린지
- 클래스
- 백준
- HTML5
- 알고리즘
- BFS
- 코딩테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함