● String
● void
● Map
● Model
● ModelAndView
● Object
package com.example.basic.controller;
import java.util.*;
import com.example.basic.model.Member;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HtmlController {
@RequestMapping("/")
public String home(){
return "home";
}
@GetMapping("html/string") // @RequestMapping(method = RequestMethod.GET)과 같은 의미
public String string(){
return "html/string";
// 반환(리턴)타입이 String일 때 반환값에 보여줄 경로의 페이지를 명시해준다.
}
@GetMapping("html/void")
public void htmlVoid(){
}
@GetMapping("html/map")
public Map<String,Object> htmlMAp(Map<String,Object> map){
Map<String,Object> map2 = new HashMap<String,Object>();
return map2;
}
@GetMapping("html/model")
public Model htmlModel(Model model){
return model;
}
@GetMapping("html/modelAndView")
public ModelAndView htmlModelAndView(){
ModelAndView mav = new ModelAndView();
// ModelAndView를 리턴받을때 setViewName메소드를 통해서 출력할 화면을 지정해줄 수 있다.
mav.setViewName("html/model_and_view");
return mav;
}
@GetMapping("html/object")
public Member htmlObject(){
Member member = new Member();
member.setName("홍길동");
return member;
}
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<h1>HTML object</h1>
[[${member}]]
<hr>
[[${member.name}]]
</body>
</html>
<html>
<head>
</head>
<body>
<h1>HTML object</h1>
Member(name=홍길동, userId=null, userPassword=null)
<hr>
홍길동
</body>
</html>
package com.example.basic.controller;
import java.util.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.basic.model.Member;
@Controller
public class Json1Controller {
@GetMapping("/json/string")
@ResponseBody // 별도의 html없이 반환할 데이터를 전송해준다.
public String jsonString(){
return "반환할 데이터";
}
// 리턴타입이 Map과 모델클래스일 때 확인
@GetMapping("/json/map")
@ResponseBody
public Map<String,Object> jsonMap(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("name", "길동");
map.put("userId", "user");
map.put("userPw", "password");
return map;
}
@GetMapping("json/object")
@ResponseBody
public Member jsonObject(){
Member member = new Member();
member.setName("홍길동");
member.setUserId("user01");
member.setUserPassword("password01");
return member;
}
@GetMapping("json/list")
@ResponseBody
public List<String> jsonList(){
List<String> list = new ArrayList<String>();
list.add("list1");
list.add("list2");
list.add("list3");
return list;
}
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
<div class="p-5 bg-primary text-white text-center">
<h1>My First Bootstrap 5 Page</h1>
<p>Resize this responsive page to see the effect!</p>
</div>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
<div class="container-fluid">
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link active" href="#">Active</a></li>
<li class="nav-item"><a class="nav-link" href="#">Link</a></li>
</ul>
</div>
</nav>
<div class="container mt-5">
<div class="row">
<div class="col-sm-12">
<h2 class="mt-5">TITLE HEADING</h2>
<h5>Title description, Sep 2, 2020</h5>
<p>Sunt in culpa qui officia deserunt mollit</p>
</div>
</div>
</div>
package com.example.basic.controller;
import java.util.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HtmlController {
@GetMapping("html/exam")
public String exam(){
return "html/exam";
}
}
package com.example.basic.controller;
import java.util.*;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.basic.model.Member;
@Controller
public class Json1Controller {
@GetMapping("json/exam")
@ResponseBody
public Map<String,Object> jsonExam(){
Map<String,Object> map = new HashMap<String,Object>();
map.put("count", "2");
List<Member> list = new ArrayList<Member>();
Member member = new Member();
member.setName("가");
member.setUserId("A");
member.setUserPassword("1");
list.add(member);
Member member1 = new Member();
member1.setName("나");
member1.setUserId("B");
member1.setUserPassword("2");
list.add(member1);
map.put("list", list);
return map;
}
}
● GET – 데이터를 가져오기
● POST – 데이터 저장
● PUT – 데이터 수정
● DELETE – 데이터 삭제
결과 | 상태코드 | 설명 |
---|---|---|
Success | 200 | 요청에 대해 정상 응답 |
Bad Request | 400 | 파라미터 등 요구 조건 미충족 |
Forbidden | 403 | 접근 거부 |
Not Found | 404 | 존재하지 않는 주소 |
Method Not Allowed | 405 | 사용 불가 메소드 사용 |
Internal Server Error | 500 | 서버의 프로그램 오류 |
package com.example.basic.controller;
import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MethodController {
// @GetMapping("req/get")
@RequestMapping(value = "req/get", method = RequestMethod.GET)
public String get(){
return "GET";
}
@PostMapping("req/post")
public String post(){
return "POST";
}
}
● HttpServletRequest - 가장 전통적으로 사용되는 방식
● RequestParam (편리함)
● PathVariable (깔끔함) - 요청 주소의 경로명 활용
● ModelAttribute (명확함)
● RequestBody (AJAX 요청 시 주로 사용)
package com.example.basic.controller;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
// HttpServletRequest를 이용
@RestController
public class RequestController {
@GetMapping("req/http")
public String http(HttpServletRequest request){
// http://localhost:8080/req/http?name=gil&pageNum=10
String name = request.getParameter("name"); // gil
String pageNum = request.getParameter("pageNum"); // 10
return name + " , " + pageNum; // gil , 10 을 출력
}
@GetMapping("req/param1")
public String param1(@RequestParam("key1") String key1, @RequestParam int key2) {
// @RequestParam("key1") String key1 :
// key1의 이름을 갖는 파라미터의 값을 문자열 변수 key1에 저장
// @RequestParam int key2 :
// pageNum이라고 하는 정수형 변수에 key2라고 하는 파라미터의 값이 저장된다.
//
// http://localhost:8080/req/param1?key1=gil&key2=10
return key1 + " , " + key2;
}
@GetMapping("req/param2")
public String param2(@RequestParam Map<String,Object> map){
// 파라미터를 동적으로 받도록 할 수 있다.
// 파라미터의 이름, 갯수, 값 등을 자유자재로 조정가능
return map.toString();
}
}