지금 스프링 프로젝트를 준비하면서 기초가 안됐다고 생각하는게
get과 post가 url에 정보를 담아보낸다 정보를 바디에 담아보낸다 차이는 알지만 이걸 어떤식으로 사용하는지는
아직도 모르는것 같아서 글로 정리해보려고 한다.
이렇게 자주 사용하는게 이 두가지인데
이는 파라미터를 받는 방식에서 차이가 발생한다.
1. GET으로 파라미터를 받는 경우(post에서도 똑같이 사용가능)
#request
@RequestMapping(value="/user/login", method = RequestMethod.GET)
public String login(HttpServletRequest request) {
request.setAttribute("이름", "값");
return "hello";
}
#Model
@RequestMapping(value="/user/login", method = RequestMethod.GET)
public String login(Model model) {
model.addAttribute("이름", "값");
return "hello";
}
#ModelAndView
@RequestMapping(value="/user/login", method = RequestMethod.GET)
public ModelAndView login(ModelAndView mav) {
mav.setViewName("hello");
mav.addObject("이름","값")
return mav;
}
2. POST로 파라미터를 받는 경우
#form에 담아져온값과 같은 이름으로 받는 경우
// form안에서 담겨져온 name값을 그대로 가져올수 있다.
@RequestMapping(value ="/formData", method = RequestMethod.POST )
public String parameterProcess(String input) {
System.out.println(input);
return "redirect:start";
}
#@RequestParam 어노테이션 사용(1:1 맵핑)
// @RequestParam("") 값을 변수에 담아준다
@RequestMapping(value ="/formData", method = RequestMethod.POST )
public String parameterProcess(@RequestParam("input") String param) {
System.out.println(param);
return "redirect:start";
}
2-1 객체로 받을 때
#DTO에서 만든 setter로 받아오기
@RequestMapping(value ="/info", method = RequestMethod.POST)
public String user(String userName, int userAge) {
User user = new User();
user.setUserName(userName);
user.setUserAge(userAge);
System.out.println(user);
return "redirect:main/mainpage";
}
//'redirect:' 라고 명시해주면 자바의 redirect와 같은기능을 한다.
#@ModelAttribute 어노테이션 사용
- 여러곳에 있는 데이터들을 복합타입 객체로 받아오는게 가능함(session, URL, request param등)
//@ModelAttribute 각 속성에 넣어준다.
@RequestMapping(value ="/info", method = RequestMethod.POST)
public String user(@ModelAttribute User user) {
System.out.println(user);
return "redirect:start";
}
//@ModelAttribute("")
@RequestMapping(value ="/info", method = RequestMethod.POST)
public String user(@ModelAttribute("user") User user) {
System.out.println(user);
return "redirect:start";
}
#쿠키값을 가져오는 경우
@RequestMapping(value ="/info", method = RequestMethod.POST)
public String makeUser(User some, @CookieValue("what") String what) {
return "other";
}
'개발 > SPRING' 카테고리의 다른 글
[Spring] DI(Dependency Injection, 의존성 주입)와 IOC(Inversion Of Control, 제어의 역행) (0) | 2021.05.24 |
---|---|
스프링 예제 (0) | 2021.05.21 |
이클립스에 STS 설치 (0) | 2021.05.10 |