@RequestMapping(value="/basic", method={RequestMethod.GET, RequestMethod.POST}): 일반적으로 한 가지 메서드로 매핑
GetMapping / PostMapping / PutMapping / DeleteMappingurl - 메서드 확인
log4j.xml<logger name="_org.springframework.web.servlet.HandlerMapping"> <level value="debug" /> </logger>![]()
![]()
request.getParameter() 대체@RequestParam("파라미터명")// SampleController
@GetMapping("/ex01")
public String ex01(SampleDTO dto){ // DI 요청 (SampleDTO 만들어 달라고 요청 -> DTO 객체 생성)
log.info("" + dto); // log는 문자열만 받아서 ""로 문자열 처리
return "ex01"; // view 이름
}
@GetMapping("/ex02")
public String ex02(
@RequestParam("name") String name,
@RequestParam("age") int age
){
log.info("name: " + name);
log.info("age: " + age);
return "ex02";
}
NumberFormatException
ArrayList<> , 배열 사용// ArrayList
@GetMapping("/ex02List")
public String ex02List(
@RequestParam("ids") ArrayList<String> ids) {
log.info("ids: " + ids);
return "ex02List";
}
@DateTimeFormat@DateTimeFormat(pattern = "포맷")// TodoDTO
@Data
public class TodoDTO {
private String title;
@DateTimeFormat(pattern = "yyyy/MM/dd")
private Date dueDate;
}
//SampleController
@GetMapping("/ex03")
public String ex03(TodoDTO todo) {
log.info("todo: " + todo);
return "ex03";
}
기존 모델1
- 컨트롤러에서 생성된 데이터를 JSP에 전달
- request 스코프에 속성으로 저장 ➔ jsp로 forward
Model//HomeController
@GetMapping("/") // getMap.put("/", 메서드)
public String home(Model model) {
model.addAttribute("name", "홍길동"); //request scope에 저장
return "index"; // view 이름 → /WEB-INF/views/index.jsp
}
<%--indext.jsp--%>
<body>
<h1>${name}님 환 영 합 니 도</h1>
</body>
@RequestParam 뷰로 전달@ModelAttribute("파라미터명")
//SampleController
@GetMapping("/ex04")
public String ex04(SampleDTO dto, int page){
log.info("dto: " + dto);
//메서드가 실행되면 dto 객체를 자동으로 모델에 추가
//모델 속성 이름: sampleDTO (앞글자소문자,자동생성) - jsp에서 ${sampleDTO}로 접근
log.info("page:" + page);
return "sample/ex04";
}
}
<!--ex04.jsp-->
<body>
<h2>SAMPLE DTO : ${sampleDTO}</h2>
<h2>PAGE : ${page}</h2>
</body>
쿼리(요청)파라미터(page) = 변수명(int page) ⇨ @RequestParam 생략 가능
@GetMapping("/ex04")
public String ex04(SampleDTO dto, @ModelAttribute("page") int page){
log.info("dto: " + dto);
log.info("page:" + page);
return "sample/ex04";
}
⇨ 지금은 jsp를 쓰지만 최종적으로 Vue를 사용, axios를 통해 API 호출할 예정
@GetMapping("/ex05") //url=뷰이름 : /sample/ex05
public void ex05() {
log.info("/ex05..........");
}
- Servlet에서 redirect 방식
response.sendRedirect("/sample/ex06?name=aaa&age=10")- 쿼리 스트링 ? 이때 필요함 ↴ (리다이렉트하고 어느 경로로 가야할지~ 경로 저장해아함)
ra.addAttribute("name", "gamza") @GetMapping("/ex06")
public String ex06(RedirectAttributes ra) {
log.info("/ex06..........");
ra.addAttribute("name", "AAA");
ra.addAttribute("age", 10);
return "redirect:/sample/ex06-2";
}
@ResponseBody 붙임~
@GetMapping("/ex07")
public @ResponseBody SampleDTO ex07() {
log.info("/ex07..........");
SampleDTO dto = new SampleDTO();
dto.setAge(10);
dto.setName("홍길동");
return dto;
}
