개발/스프링

15. 스프링 프레임워크 - @RequestParam[자바웹을 다루는 기술]

괴발자-K 2022. 5. 23. 22:49

@RequestParam

1개의 HTTP 요청 파라미터를 받기 위해서 사용합니다.

@RequestParam은 필수 여부가 true이기 때문에 기본적으로 반드시 해당 파라미터가 전송되어야 합니다.(default)

지정한 파라미터가 전송되지 않으면 Error를 유발하게 됩니다. 

getParameter() 메서드를 이용할 필요가 없어집니다.

 

 

//@RequestParam을 이용해 받을 값을 지정한 변수에 자동으로 설정
	@RequestMapping(value="/test/login.do", method= {RequestMethod.GET, RequestMethod.POST})
	public ModelAndView login(@RequestParam("userID") String userID, 
                              @RequestParam("userName") String userName,
			                  HttpServletRequest request, HttpServletResponse response) throws Exception {
		request.setCharacterEncoding("utf-8");
		ModelAndView mav = new ModelAndView();
		//String userID = request.getParameter("userID");
		//String userName = request.getParameter("userName");
		
		System.out.println("userID: " + userID);
		System.out.println("userName:" + userName);
		mav.addObject("userID", userID);
		mav.addObject("userName", userName);
		mav.setViewName("result");
		
		return mav;

	}

 

@RequestParam의 required 속성 사용

public ModelAndView login2(@RequestParam("userID") String userID,
			                   @RequestParam(value="userName", required = true) String userName,
			                   @RequestParam(value="email", required=false) String email,
			                   HttpServletRequest request, HttpServletResponse response
	                           ) throws Exception {
		
		request.setCharacterEncoding("utf-8");
		ModelAndView mav = new ModelAndView();
		System.out.println("userID:"+userID);
		System.out.println("userName:" + userName);
		System.out.println("email:" + email);
		mav.addObject("userID", userID);
		mav.addObject("userName", userName);
		mav.setViewName("result");
		
		return mav;
		
	}

required = true 는 디폴트 값입니다. 무조건 지정한 매개변수를 전달 받아야 합니다.

required = false 는 매변수가 전달되면 저장되고 아니면 null을 할당 합니다.

 

@RequestParam을 이용해 Map 매개변수 값 설정 하기

//@RequestParam을 이용해 Map에 전송된 매개변수 이름을 key, 값을 value로 저장합니다.
	@RequestMapping(value="/test/login3.do")
	public ModelAndView login3(@RequestParam Map<String, String> info,
			                     HttpServletRequest request, HttpServletResponse response) throws Exception {
		request.setCharacterEncoding("utf-8");
		ModelAndView mav = new ModelAndView();
		String userID = info.get("userID");
		String userName = info.get("userName");
		System.out.println(userID);
		System.out.println(userName);
		mav.addObject("info",info);
		mav.setViewName("result");
		
		return mav;
	}

@RequestParam Map<String, String> info는 이름이 info인 Map에 매개변수 이름을 key, 매개변수 값을 value로 

저장하는 구문 입니다.

Map 저장된 매개변수의 이름으로 전달된 값을 가지고 와서 String 타입으로 저장합니다.

그리고 ModelAndView의 mav라는 객체에 info라는 이름으로 바인딩을 합니다.

 

#마무리

@RequestParam을 통해 코드를 조금 더 간소화 시키고 map을 통해서 값을 저장하는 방법을 배웠습니다.

코드는 정해진 것이 아니기 때문에 여러가지 방법으로 생각하고 구현하는것이 좋은 방법입니다.