Spring MVC에서 Serclet을 처리하기 위해서 @WebServlet을 하고 urlPatterns주기
→ 따로 XML 설정 하지 않아도 경로로 Servlet이라는 Class가 요청을 받음
@WebServlet(urlPatterns = "/user/login")
public class UserLoginServlet extends HttpServlet
"timestamp": "2023-06-12T15:21:03.884+00:00",
"status": 405,
"error": "Method Not Allowed",
"path": "/api/get"@RequestMapping("/api/")
.
.
.
@GetMapping("/get") //원래는 ("/api/get")
.
.
.
@PostMapping("/post") //원래는 ("/api/post")
.
.
.@GetMapping("/static-hello")
public String hello() {
return "hello.html";
}
-> http://localhost:8080/hello.htmlhttp://localhost:8080/hello-html @GetMapping("/html/readirect")
public String htmlStatic() {
return "redirect:hello.html";
}
-> http://localhost:8080/html/readirect
-> 302 : readirect과 관련@GetMapping("/html/templates")
public String htmlTemplates() {
return "hello";
}private static long visitCount = 0;
@GetMapping("/html/dynamic")
public String htmlDynamic(Model model) {
visitCount++;
model.addAttribute("visits", visitCount);
return "hello-visit";
}private static long visitCount = 0; : 0인 초기값
visitCount++; : 증감 연산자에 의해서 증가
(Model model) : 값이 여기에 담김
"visits” : 의 이름으로
return "hello-visit"; 으로 반환함
html의
(방문자 수: <span th:text="${visits}"></span>)
ViewResolver에 의해서 Model에 들어 있던 visits가 "${visits}" 로 Mapping 됨
새로고침 할 수록 방문자 수가 늘어남
외부적으로는 방문자 숫자가 올라감, 내부적으로는 많은 코드 필요와 동작을 하고 있음
@RequestMapping ("/response/rest") /response/rest 가 모두 포함됨@GetMapping ("/json/string") 가 밑에 있다면 /response/rest/json/string@ResponseBody + @Controller = @RestControlle@PathVariable 를 사용해서 받아가지고 String으로 만들어서 브라우저에 반환@RequestParam 를 사용해서 받아가지고 String으로 만들어서 브라우저에 반환@RequestParam(required = false) 값이 없으면 null@RequestParam(required = false) 값이 없으면 null@ModelAttribute 으로 인해 객체형태로 처리null으로 표시@ModelAttribute 으로 받을 수 있음@RequestParam으로 여러개를 많이 받아 오는 것은 유지보수에도 좋지 않기 때문에 객체를 한 번에 받아 올 수 있음null = 데이터를 받아올 수 없음@ModelAttribute @RequestParam 생략 가능@RequestParam@ModelAttribute@ResponseBody 들 이용하여 정보 받아옴@GetMapping("/memos")
public List<MemoResponseDto> getMemos() {
// Map To List
List<MemoResponseDto> responseList = memoList.values().stream()
.map(MemoResponseDto::new).toList();
return responseList;
}
}memoList.values().stream()
.map 하나씩 돌리면 memo가 하나씩 나오고 변환할 수 있음
.stream()에 의해서 memo가 하나씩 나옴
생성자가 수행 되면서 .toList(); memoResponseDto 타입의 List 만들어 줌
