Spring TIL - 파라미터 얻어오는 방법

Jieun·2023년 4월 23일
0

📝 Spring 환경설정 및 커뮤니티 로그인, 회원가입 기능 공부
#230421

💻 memberController.class 참고

파라미터 얻어오는방법

1. HttpServletRequest 이용


@RequestMapping("/login")
public String login(HttpServletRequest req) 
	logger.info("로그인 요청됨");
	
	String inputEmail = req.getParameter("inputEmail");
	String inputPw = req.getParameter("inputPw");
		
	logger.debug("inputEmail : " + inputEmail);
	logger.debug("inputPw : " + inputPw);
		
	
	return "redirect:/";
}

2. @RequestParam 어노테이션 사용

@RequestParam("name속성값") 자료형 변수명
클라이언트 요청 시 같이 전달된 파라미터를 변수에 저장
어떤 파라미터를 변수에 저장할지는 "name속성값"을 이용해 지정

[속성]
value : input 태그의 name 속성값 (속성을 하나도 적지 않은 경우의 기본값)

   	@RequestParam("inputEmail") == @RequestParam(value="inputEmail")

required : 입력된 name 속성값이 필수적으로 파라미터에 포함되어야 되는지를 지정

required=true / required=false  (기본값 true 필수임)

defaultValue : required가 false인 상태에서 파라미터가 존재하지 않을 경우의 값을 지정

400 – 잘못된 요청(Bad Request) : 파라미터가 존재하지 않아 요청이 잘못됨.
required = false일 때 파라미터가 없으면 null

@RequestParam을 생략하지만 파라미터를 얻어오는 방법

➡️ name 속성 값과 파라미터를 저장할 변수 이름을 동일하게 작성!

@RequestMapping("/login")
public String login( /* @RequestParam("inputEmail")int inputEmail, */ 
					/* @RequestParam("inputPw")String inputPw, */
					 @RequestParam(value="inputName", required=false, defaultValue = "홍길동" )
                     String name ) {                         
		
		logger.debug("email : " + inputEmail);
		logger.debug("pw : " + inputPw);
		logger.debug("name : " + name);
		
		
		// email로 숫자만 입력 받는다고 가정
		logger.debug( inputEmail + 100 + "");
		
        // 리다이렉트 방법
		return "redirect:/";   
	}

3. @ModelAttribute 어노테이션 사용

[@ModelAttribute를 매개변수에 작성하는 경우]

@ModelAttribute VO타입 변수명
➡️ 파라미터 중 name 속성 값이 VO의 필드와 일치하면
해당 VO 객체의 필드에 값을 세팅

@ModelAttribute 를 이용해서 객체에 값을 직접 담는 경우에 대한 주의사항 (반드시 필요!)

  1. VO 기본 생성자
  2. VO 필드에 대한 Setter

Getter는 JSP - EL 사용 시 반드시 필요!

@PostMapping("/login")
public String login( @ModelAttribute Member inputMember, 
					 Model model,
					 RedirectAttributes ra,
					 HttpServletResponse resp, 
					 HttpServletRequest req,
					 @RequestParam(value="saveId", required = false) String saveId ) {
												
		
	// @ModelAttribute 생략 가능 
	// -> 커맨드 객체 (@ModelAttribute가 생략된 상태에서 파라미터가 필드에 세팅된 객체)
	logger.info("로그인 기능 수행됨");
		
		
	// 아이디, 비밀번호가 일치하는 회원 정보를 조회하는 Service 호출 후 결과 반환 받기
	Member loginMember = service.login(inputMember);
.....
profile
👩‍💼👩‍💼➡️➡️➡️👩‍💻👩‍💻 생산자의 삶을 살기 위해 개발공부중

0개의 댓글