개발/SPRING

[SPRING]requestMethod.get 과 post

윤_ve 2021. 6. 22. 09:45

지금 스프링 프로젝트를 준비하면서 기초가 안됐다고 생각하는게 

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";
}