본문 바로가기
IT/Spring

[Spring] - 스프링 @RequestMapping 어노테이션 사용 방법

by 차이나는 개발자 2020. 8. 13.
728x90
반응형

#스프링 @RequestMapping 어노테이션 사용 방법

-URL을 Controller에 매핑해주는 역할을 합니다.

 


 #파라미터 종류
 HttpServletRequest request, response, session, OutputStream/Writer 

 


 # 파라미터 값 받아오는 방법
@RequestParam("파라미터이름")
@RequestParam(value="파라미터이름", required=false, default="1")
->required : false(없으면)
->default : 값이 없을때 기본 값
@ModelAttribute("속성이름")

@CookieValue("쿠키이름")
@CookieValue(value="쿠키이름", required=false, defaultValue="1")
@PathVariable("myValue") = 요청 URL이 /a/b/what 일 때 myValue -> what

 

# 리턴 종류
String : view 이름 리턴
ModelAndView : model + view
void : URL에서 뷰이름을 구함(RequestToViewNameResolver)
View : 

RedirectView :

 

#리다이렉트 or 포워드 방식

    // 리다이렉트
	@RequestMapping("/callTodo")
	public String todo() {
		return "redirect:redirectCall";
	}

	// 포워드
	@RequestMapping("/redirectCall")
	public String redirectCall(HttpServletRequest request) {
		request.setAttribute("some", "other2"); 
		return "redirect";  
	} 

 

 

#파라미터 받는 방식(GET)

1. request

2. Model

3. ModelAndView

 

1. request

	// request
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String start(HttpServletRequest request) {
		
		request.setAttribute("some", "request");
		return "hello"; 
	} 

 

2. Model

	// model, {여러개도 매핑가능}
	@RequestMapping(value = {"/", "/start"}, method = RequestMethod.GET)
	public String start(Model model) {
		      
		model.addAttribute("some", "model");
		return "hello"; 
	} 

 

3. ModelAndView

	// modelandview
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public ModelAndView start(ModelAndView mav) {
		
		mav.setViewName("hello");   
		mav.addObject("some", "modelandview");
		return mav; 
	} 

 

 

#파라미터 받는 방식(POST)

 

1. 타입 변수명

	@RequestMapping(value ="/formData", method = RequestMethod.POST )
	// form으로 넘어온 name값과 이름이 같은 경우 매칭해서 받아온다. String inputValue
	public String parameterProcess(String inputValue) {
		System.out.println(inputValue);
		return "redirect:start";
	}

 

2. @RequestParam(" ") 타입 변수명

	@RequestMapping(value ="/formData", method = RequestMethod.POST )
	// @RequestParam("") 찾아서 -> String param에 담아 준다.
	public String parameterProcess(@RequestParam("inputValue") String param) {
		System.out.println(param);
		return "redirect:start";
	}

 

3. request

	@RequestMapping(value ="/formData", method = RequestMethod.POST )
	public String parameterProcess(HttpServletRequest request) {
		System.out.println(request.getParameter("inputValue"));
		return "redirect:start";
	}

 

 

#객체로 받는 방식

(User 객체

  private String userName;
  private int userAge

)

 

1. 각 멤버변수 setter 사용 

	@RequestMapping(value ="/userInfo", method = RequestMethod.POST)
	public String makeUser(String userName, int userAge) {
		User user = new User();
		user.setUserName(userName);
		user.setUserAge(userAge);
		System.out.println(user);
		 
		return "redirect:start";
	}

 

 

2. @ModelAttribute 타입 변수명

	@RequestMapping(value ="/userInfo", method = RequestMethod.POST)
//	 @ModelAttribute 각 속성에 넣어준다.
	public String makeUser(@ModelAttribute User user) {  
		System.out.println(user);
		return "redirect:start";
	}

 

 

3. @ModelAttribute(" ") 타입 변수명

	// Modelattiribute로 other.jsp에 속성 넘겨줌
	@RequestMapping(value ="/userInfo", method = RequestMethod.POST)
	public String makeUser(@ModelAttribute("otherUser") User user) {  
		System.out.println(user); 
		return "other";
	}

 

 

4. 타입 변수명

	@RequestMapping(value ="/userInfo", method = RequestMethod.POST)
	public String makeUser(User some) {  
		System.out.println(some); 
		return "other";
	}

 

 

#쿠키 값 받아오는 법

	@RequestMapping(value ="/userInfo", method = RequestMethod.POST)
	public String makeUser(User some, @CookieValue("what") String what) {  
		System.out.println(some);
		return "other";
	} 

 

 

#타입이 void 일 경우

	// void이면 view이름이 ("/empty")
	@RequestMapping("/empty")
	public void emptyAction() {
		
	}

 

 

#URL의 값을 가져오는 법

	/*
	 	/a/b/what
	  	myValue -> what  
	 */
	// @PathVariable : 특정한 path값을 꺼내온다.
	// 애매한 경우 : parameter명이 myValue인 경우(그래서 @PathVariable("") 생략 불가)
	@RequestMapping("a/b/{myValue}") 
	public String pathVariable(@PathVariable("myValue") String myValue) {
		System.out.println(myValue);
		return "other";
	}

 

 

 

728x90
반응형

댓글