[SPRING] 5장 컨트롤러 요청 처리

jychae·2022년 11월 29일
0

스프링

목록 보기
7/12

MemberController.java / registerForm.jsp

private static final Logger logger = LoggerFactory.getLogger(MemberController.class);
	
	// 5장 . 컨트롤러 요청 처리
	// 1. 컨트롤러 메서드 매개변수 / 2. 요청처리
	// 컨트롤러 요청 처리를 위한 registerForm시작점(시작 페이지)
	@RequestMapping(value = "/registerForm", method = RequestMethod.GET)
	public String registerForm() {
		logger.info("registerForm");
		return "member/registerForm";
	}

1. 컨트롤러 메서드 매개변수

주요 매개 변수

  • Model
    이동 대상에 전달할 데이터를 가지고 있는 인터페이스
  • RedirectAttributes
    리다이렉트 대상에 전달할 데이터를 가지고 있는 인터페이스
  • 자바빈즈 클래스
    요청 파라미터를 가지고 있는 자바빈즈 클래스
  • MultipartFile
    Multipart 요청을 사용해 업로드 된 파일 정보를 가지고 있는 인터페이스
  • BindingResult
    도메인 클래스의 입력값 검증 결과를 가지고 있는 인터페이스
  • java.security.Principal
    클라이언트 인증을 위한 사용자 정보를 가지고 있는 인터페이스

2. 요청 처리

1. URL 경로 상의 쿼리 파라미터 정보로부터 요청 데이터를 취득할 수 있다.

[요청과 처리]
요청 : /register?userId=hongkd&password=1234 (a태그를 이용)
처리 : registerByparameter(String userId, String password)

2. URL 경로 상의 경로 변수로부터 요청 데이터를 취득할 수 있다.

[요청과 처리]
요청 : /register/hongkd (a태그를 이용)
처리 : String registerByPath(String userId)

3. HTML Form 필드명과 컨트롤러 매개변수명이 일치하면 요청 데이터를 취득할 수 있다.

[요청과 처리]
요청 : /register01 (form 태그를 이용)
처리 : String register01(String userId)

4. HTML Form 필드가 여러개일 경우에도 컨트롤러 매개변수명이 일치하면 요청 데이터를 취득할 수 있다.

[요청과 처리]
요청 : /register02 (form 태그를 이용)
처리 : String register02(String userId, String password)

5. HTML Form 필드가 여러개일 경우에 컨트롤러 매개변수의 위치는 상관없다.

[요청과 처리]
요청 : /register03 (form 태그를 이용)
처리 : String register03(String password, String userId)

6. HTML Form 필드값이 숫자일 경우에는 컨트롤러 매개변수 타입이 문자열이면 그대로 문자열 형태로 요청 데이터를 취득한다.

[요청과 처리]
요청 : /register04 (form 태그를 이용)
처리 : String register04(String userId, String password, String coin)

7. HTML Form 필드값이 숫자일 경우에는 컨트롤러 매개변수 타입이 숫자형이면 숫자로 타입변환하여 요청 데이터를 취득한다.

[요청과 처리]
요청 : /register05 (form 태그를 이용)
처리 : String register05(String userId, String password, int coin)

MemberController

<h1>register Form</h1>
	<hr/>
	<!-- 5장. 컨트롤러 요청 처리 -->
	<!-- 1. 컨트롤러 메서드 매개변수 & 요청처리 -->
	
	<!-- 1) -->
	<p>1) URL 경로 상의 쿼리 파라미터 정보로부터 요청 데이터를 취득할 수 있다.</p>
	<a href="/register?userId=hongkd&password=1234" >/register?userId=hongkd&password=1234</a>
	<hr/>
	
	<!-- 2) -->
	<p>2) URL 경로 상의 경로 변수로 부터 요청 데이터를 취득할 수 <font style="color: red;">없다.</font></p>
	<a href="/register/hongkd" >/register/hongkd</a>
	<hr/>
	
	<!-- 3) -->
	<p>3) HTML Form 필드명과 컨트롤러 매개변수명이 일치하면 요청 데이터를 취득할 수 있다.</p>
	<form action="/register01" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register01"/> </p>
 	</form>
 	<hr/>
 	
	<!-- 4) -->
	<p>4) HTML Form 필드가 여러개일 경우에도 컨트롤러 매개변수명이 일치하면 요청 데이터를 취득할 수 있다.</p>
	<form action="/register02" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register02"/> </p>
 	</form>
 	<hr/>
 	
 	<!-- 5) -->
 	<p>5) HTML Form 필드가 여러개일 경우에 컨트롤러 매개변수의 위치는 상관없다.</p>
 	<form action="/register03" method="post">
		<p>uid : <input type="text" name="uid" value="50"/> </p>
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register03"/> </p>
 	</form>
 	<hr/>
 	
 	<!-- 6) -->
 	<p>6) HTML Form 필드값이 숫자일 경우에는 컨트롤러 매개변수 타입이 문자열이면 그대로 문자열 형태로 요청 데이터를 취득한다.</p>
 	<form action="/register04" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register04"/> </p>
 	</form>
 	<hr/>
 	
 	<!-- 7) -->
 	<p>7) HTML Form 필드값이 숫자일 경우에는 컨트롤러 매개변수 타입이 숫자형이면 숫자로 타입변환하여 요청 데이터를 취득한다.</p>
 	<form action="/register05" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register05"/> </p>
 	</form>
 	<hr/>
 	

registerForm.jsp

private static final Logger logger = LoggerFactory.getLogger(MemberController.class);
	
	// 5장 . 컨트롤러 요청 처리
	// 1. 컨트롤러 메서드 매개변수 / 2. 요청처리
	// 컨트롤러 요청 처리를 위한 registerForm시작점(시작 페이지)
	@RequestMapping(value = "/registerForm", method = RequestMethod.GET)
	public String registerForm() {
		logger.info("registerForm");
		return "member/registerForm";
	}
	
	// 1)
	// URL 경로 상의 쿼리 파라미터 정보로부터 요청 데이터를 취득할 수 있다.
	@RequestMapping(value = "/register", method = RequestMethod.GET)
	public String registerByParameter(String userId, String password) {
		logger.info("registerByParameter");
		logger.info("userId : " + userId);
		logger.info("password : " + password);
		return "success";
		
	}
	// 2) 
	// URL 경로상의 경로 변수로부터 요청 데이터르 취득할 수 없다.
	@RequestMapping(value = "/register/{userId}")
	public String registerByPath(String userId) { //public String registerByPath(@PathVariable String userId) { 이거면  null아니고 받을 수 있음
		// userId가 null로 표시됩니다.
		// 넘겨받은 id를 위와 같은 형태로 받을려면
		// @PathVariable 를 이용한다. 
		// 경로상의 특정값{userId}을 가져오고 싶을때  @PathVariable 어노테이션을 이용해서 경로상에 들어온 특정 값을 값으로 인식
		logger.info("registerByPath");
		logger.info("userId : " + userId);
		return "success";
		
	}
	
	// 3)
	// HTML 폼 필드명과 컨트롤러 매개변수명이 일치하면 요청 데이터를 취득할 수 있다.
	@RequestMapping(value = "/register01", method = RequestMethod.POST)
	public String register01(String userId) {
		logger.info("register01");
		logger.info("userId : " + userId);
		return "success";
		
	}
	
	// 4)
	// HTML 폼 필드가 여러개일 경우에도 컨트롤러 매개변수명이 일치하면 요청 데이터를 취득할 수 있다.
	@RequestMapping(value = "/register02", method = RequestMethod.POST)
	public String register02(String userId, String password) {
		logger.info("register02");
		logger.info("userId : " + userId);
		logger.info("password : " + password);
		return "success";
		
	}
	
	// 5)
	// HTML 폼 필드가 여러개일 경우에 컨트롤러 매개변수의 위치는 상관없다.
	@RequestMapping(value = "/register03", method = RequestMethod.POST)
	public String register03(String password, String userId) {
		logger.info("register03");
		logger.info("userId : " + userId);
		logger.info("password : " + password);
		return "success";
		
	}
	
	// 6)
	// HTML Form 필드 값이 숫자일 경우에는 컨트롤러 매개변수 타입이 문자열이면 그대로 문자열 형태로 요청 데이터를 취득한다.
	@RequestMapping(value = "/register04", method = RequestMethod.POST)
	public String register04(String userId, String password, String coin) {
		logger.info("register04");
		logger.info("userId : " + userId);
		logger.info("password : " + password);
		logger.info("coin : " + coin);
		return "success";
		
	}
	
	// 7)
	// HTML Form 필드 값이 숫자일 경우에는 컨트롤러 매개변수 타입이 숫자형이면 숫자로 타입변환하여 요청 데이터를 취득한다.
	@RequestMapping(value = "/register05", method = RequestMethod.POST)
	public String register05(String userId, String password, int coin) {
		logger.info("register05");
		logger.info("userId : " + userId);
		logger.info("password : " + password);
		logger.info("coin : " + coin);
		return "success";
		
	}

3. 요청 데이터 처리 어노테이션

@PathVariable
- URL에서 경로 변수 값을 가져오기 위한 어노테이션
@RequestParam
- 요청 파라미터 값을 가져오기 위한 어노테이션 // ( 키값은거 ) 폼에서 변수명이 다를 때 사용
@RequestHeader
- 요청 헤더 값을 가져오기 위한 어노테이션
@RequestBody
- 요청 본문 내용을 가져오기 위한 어노테이션
@CookieValue
- 쿠키 값을 가져오기 위한 어노테이션

1. URL 경로 상의 경로 변수로부터 요청 데이터를 취득할 수 있다.

[요청과 처리]
요청 : /register/hongkd (a 태그를 이용)
처리 : String registerByPath(@PathVariable String userId)

2. URL 경로 상의 경로 변수가 여러개일때 @PathVariable 어노테이션을 사용하여 특정한 경로 변수명을 지정해준다.

[요청과 처리]
요청 : /register/hongkd/100 (a 태그를 이용)
처리 : String registerByPath(@PathVariable("userId") String userId, @PathVariable("coin") int coin)

3. HTML 폼의 필드명과 컨트롤러 매개변수명이 일치하면 요청을 처리할 수 있다.

[요청과 처리]
요청 : /register0101 (form 태그를 이용 - id name 설정 : userId)
처리 : String register0101(String userId)

4. HTML Form 필드명과 컨트롤러 매개변수명이 일치(대소문자 구분)하지 않으면 요청을 처리할 수 없다.

[요청과 처리]
요청 : /register0201 (form 태그를 이용 - id name 설정 : userId)
처리 : String register0201(String username)

5. @RequestParam 어노테이션을 사용하여 특정한 HTML Form의 필드명을 지정하여 요청을 처리한다.

[요청과 처리]
요청 : /register0202 (form 태그를 이용 - id name 설정 : userId)
처리 : String register0202(@RequestParam("userId") String username)

<!-- 3. 요청 데이터 처리 어노테이션 -->
	<h4>3. 요청 데이터 처리 어노테이션</h4>
 	<hr/>
 	<p>1) URL 경로 상의 경로 변수로 부터 요청 데이터를 취득할 수 있다.</p>
 	<a href="/register/hongkd" >/register/hongkd</a><br/>
 	
 	<p>2) URL 경로 상의 경로 변수가 여러 개일때 @PathVariable어노테이션을 사용하여 특정한 경로 변수명을 지정해준다.</p>
 	<a href="/register/hongkd/100" >/register/hongkd/100</a><br/>
 	
 	<p>3) URL 폼의 필드명과 컨트롤러 매개변수명이 일치하면 요청을 처리할 수 있다.</p>
 	<form action="/register0101" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register0101"/> </p>
 	</form><br/>
 	
 	<p>4) URL Form 필드명과 컨트롤러 매개변수명이 일치(대소문자구분)하지않으면 요청을 처리할 수 없다.</p>
 	<form action="/register0201" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register0201"/> </p>
 	</form><br/>
 	
 	<p>5) @RequestParms 어노테이션을 사용하여 특정한 HTML form의 필드명을 지정하여 요청을 처리한다.</p>
 	<form action="/register0202" method="post">
		<p>userId : <input type="text" name="userId" value="hongkd"/> </p>
		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="register0202"/> </p>
 	</form><br/>
	// 3. 요청 데이터 처리 어노테이션
	// 1) register/100 위에서 이미 요청 처리를 했기 때문에 여기선 처리를 하지 않습니다!!
	// 2)
	// URL 경로 상의 변수가 여러 개일때, @PathVariable 어노테이션을 사용하여 특정한 경로 변수명을 지정해준다.
	@RequestMapping(value = "/register/{userId}/{coin}")
	public String registerByPath(@PathVariable("userId") String userId, @PathVariable("coin") int coin) {
		logger.info("registerByPath - @PathVariable");
		logger.info("userId : " + userId);
		logger.info("coin : " + coin);
		return "success";
		 
	}
	
	// 3)
	// HTML 폼의 필드명과 컨트롤러 매개변수명이 일치하면 요청을 처리할 수 있다.
	@RequestMapping(value = "/register0101",method = RequestMethod.POST)
	public String register0101(String userId) {
		logger.info("register0101");
		logger.info("userId : " + userId);
		return "success";
		
	}
	
	// 4)
	// HTML 폼의 필드명과 컨트롤러 매개변수명이 일치(대소문자구분)하지 않으면 요청을 처리할 수 없다.
	@RequestMapping(value = "/register0201",method = RequestMethod.POST)
	public String register0201(String username) {
		logger.info("register0201");
		logger.info("username : " + username);
		return "success";
		
	}
	
	// 5)
	//  @RequestParms 어노테이션을 사용하여 특정한 HTML Form의 필드명을 지정하여 요청을 처리한다.
	@RequestMapping(value = "/register0202",method = RequestMethod.POST)
	public String register0202(@RequestParam("userId") String username) {
		logger.info("register0202");
		logger.info("username : " + username);
		return "success";
		
	}
	

4. 요청 처리 자바빈즈

1. 폼 텍스트 필드 요소값을 자바빈즈 매개변수로 처리한다.

[요청과 처리]
요청 : /beans/register01 (form 태그를 이용)
처리 : String registerJavaBeans01(Member member)

2. 폼 텍스트 필드 요소값을 자바빈즈 매개변수와 기존 데이터 타입인 정수 타입 매개변수로 처리한다.

[요청과 처리]
요청 : /beans/register02 (from 태그를 이용)
처리 : String registerJavaBeans02(Member member, int coin)

3. 여러 개의 폼 텍스트 필드 요소값을 매개변수 순서와 상관없이 매개변수명을 기준으로 처리한다.

[요청과 처리]
요청 : /beans/registerJavaBeans03(int uid, Member member)
처리 : String registerJavaBeans03(int uid, Member member)

	<h4>4. 요청처리 자바빈즈</h4>
 	<hr/>
 	<p>1) 폼 텍스트 필드 요소값을 자바빈즈 매개변수로 처리한다.</p>
 	<form action="/beans/register01" method="post">
 		<p>userId : <input type="text" name="userId" value="honkd"/></p>
 		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="registerJavaBeans01"/> </p>
 	</form><br/>
 	
 	<p>2) 폼 텍스트 필드 요소값을 자바빈즈 매개변수와 기본 데이터 타입인 정수 타입 매개변수로 처리한다.</p>
 	<form action="/beans/register02" method="post">
 		<p>userId : <input type="text" name="userId" value="honkd"/></p>
 		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="registerJavaBeans02"/> </p>
 	</form><br/>
 	
 	<p>3) 여러개의 폼 텍스트 필드 요소값을 매개변수 순서와 상관없이 매개변수명을 기준으로 처리한다.</p>
 	<form action="/beans/register03" method="post">
 		<p>uid : <input type="text" name="uid" value="50"/></p>
 		<p>userId : <input type="text" name="userId" value="honkd"/></p>
 		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>coin : <input type="text" name="coin" value="100"/> </p>
		<p><input type="submit" value="registerJavaBeans03"/> </p>
 	</form><br/>
 	
	// 4. 요청 처리 자바빈즈
	// 1)
	// 폼 텍스트 필드 요소값을 자바빈즈 매개변수로 처리한다.
	@RequestMapping(value = "/beans/register01", method = RequestMethod.POST) ///beans/register01 이 url 타입으로 
	public String registerJavaBeans01(Member member){	// () 안의 매개변수를 받는데 어찌 받는지 방법론 기억하기
		logger.info("registerJavaBeans01");
		logger.info("member.getUserId() : " + member.getUserId());
		logger.info("member.getPassword() : " + member.getPassword());
		logger.info("member.getCoin() : " + member.getCoin());
		return "success";
	}
	
	// 2)
	// 폼 텍스트 필드 요소값을 자바빈즈 매개변수와 기본 데이터 타입인 정수 타입 매개변수로 처리한다.
	@RequestMapping(value = "/beans/register02", method = RequestMethod.POST) 
	public String registerJavaBeans02(Member member, int coin){	// () 매개변수 받을 때 => 맵은 예외 어노테이션 무조건 써야하고 그외는 이름이 같으면 자동바인딩 됨
		logger.info("registerJavaBeans02");
		logger.info("member.getUserId() : " + member.getUserId());
		logger.info("member.getPassword() : " + member.getPassword());
		logger.info("coin : " + coin);
		return "success";
	}
	
	// 3)
	// 여러개의 폼 텍스트 필드 요소값을 매개변수 순서와 상관없이 매개변수명을 기준으로 처리한다.
	@RequestMapping(value = "/beans/register03", method = RequestMethod.POST) 
	public String registerJavaBeans03(Member member, int uid){	
		logger.info("registerJavaBeans03");
		logger.info("uid : " + uid);
		logger.info("member.getUserId() : " + member.getUserId());
		logger.info("member.getPassword() : " + member.getPassword());
		logger.info("member.getCoin() : " + member.getCoin());
		return "success";
	}

5. Data 타입 처리

스프링 MVC는 Date 타입의 데이터를 처리하는 여러 방법을 제공합니다. 따로 지정하지 않으면 변환에 적합한 날짜 문자열 형식은 yyyy/MM/dd입니다.

1. 쿼리 파라미터(dateOfBirth=1234)로 전달받은 값이 날짜 문자열 형식에 맞지 않아 Date 타입으로 변환에 실패한다.

[요청과 처리]
요청 : /registerByGet01?userId=hongkd&dateOfBirth=1234
처리 : registerByGet01(String userId, Date dateOfBirth)

2. 쿼리 파라미터(dateOfBirth=2022-11-28)로 전달받은 값이 날짜 문자열 형식에 맞지 않아 Date 타입으로 변환에 실패한다.

[요청과 처리]
요청 : /registerByGet01?userId=hongkd&dateOfBirth=2022-11-28
처리 : registerByGet01(String userId, Date dateOfBirth)

3. 쿼리 파라미터(dateOfBirth=20221128)로 전달받은 값이 날짜 문자열 형식에 맞지 않아 Date 타입으로 변환에 실패한다.

[요청과 처리]
요청 : /registerByGet01?userId=hongkd&dateOfBirth=20221128
처리 : registerByGet01(String userId, Date dateOfBirth)

4. 쿼리 파라미터(dateOfBirth=2022/11/28)로 전달받은 값이 날짜 문자열 형식에 맞아 Date 타입으로 변환에 성공한다.

[요청과 처리]
요청 : /registerByGet01?userId=hongkd&dateOfBirth=2022/11/28
처리 : registerByGet01(String userId, Date dateOfBirth)
[성공!!]

5. Member 매개변수와 쿼리 파라미터(dataOfBirth=20221128) 전달받은 값이 날짜 문자열 형식에 맞지않아 Date타입으로 변환에 실패한다.

[요청과 처리]
요청 : /registerByGet02?userId=hongkd&dateOfBirth=20221128
처리 : String registerByGet02(Member member)

6. Member 매개변수와 폼 방식 : : : 요청 전달받은 값이 날짜 문자열 형식이 맞지 않아 Date 타입으로 변환에 실패한다

[요청과 처리]
요청 : /register (form 태그 이용 - dataOfBirth 값을 20221128 설정)
처리 : String register(Member member)

 	<h4>5. Date 타입 처리</h4>
 	<hr/>
 	<p>
		1) 쿼리 파라미터(dateOfBirth=1234)로 전달 받은 값이 날짜 문자열 형식에 맞지 않아 Date타입으로 변환에 실패한다<br/>
		<font style="color: red;">400-Bad Request 에러발생</font>
	</p>
	<a href="/registerByGet01?userId=hongkd&dateOfBirth=1234" >
		/registerByGet01?userId=hongkd&dateOfBirth=1234
	</a><br/>
	
 	<p>
		2) 쿼리 파라미터(dateOfBirth=2018-09-08)로 전달 받은 값이 날짜 문자열 형식에 맞지 않아 Date타입으로 변환에 실패한다<br/>
		<font style="color: red;">400-Bad Request 에러발생</font>
	</p>
	<a href="/registerByGet01?userId=hongkd&dateOfBirth=2018-09-08" >
		/registerByGet01?userId=hongkd&dateOfBirth=2018-09-08
	</a><br/>
	
 	<p>
		3) 쿼리 파라미터(dateOfBirth=20180908)로 전달 받은 값이 날짜 문자열 형식에 맞지 않아 Date타입으로 변환에 실패한다<br/>
		<font style="color: red;">400-Bad Request 에러발생</font>
	</p>
	<a href="/registerByGet01?userId=hongkd&dateOfBirth=20180908" >
		/registerByGet01?userId=hongkd&dateOfBirth=20180908
	</a><br/> <!-- @DateTimeFormat(pattern = "yyyyMMdd") 이걸 컨트롤러에 추가해서 이제 됩니당 -->
	
 	<p>
		4) 쿼리 파라미터(dateOfBirth=2018/09/08)로 전달 받은 값이 날짜 문자열 형식에 맞아 Date타입으로 변환에 성공한다<br/>
		<font style="color: green;">성공</font>
	</p>
	<a href="/registerByGet01?userId=hongkd&dateOfBirth=2018/09/08" >
		/registerByGet01?userId=hongkd&dateOfBirth=2018/09/08
	</a><br/>
	
 	<p>
		5) Member 매개변수와 쿼리 파라미터(dateOfBirth=20180908)로 전달 받은 값이 날짜 문자열 형식에 맞지 않아 Date타입으로 변환에 실패한다<br/>
		<font style="color: red;">400-Bad Request 에러발생</font>
	</p>
	<a href="/registerByGet02?userId=hongkd&dateOfBirth=20180908" >
		/registerByGet02?userId=hongkd&dateOfBirth=20180908
	</a><br/>
	
	<p>폼 형식으로 요청</p>
 	<form action="/register" method="post">
 		<p>userId : <input type="text" name="userId" value="honkd"/></p>
 		<p>password : <input type="text" name="password" value="1234"/> </p>
		<p>dateOfBirth : <input type="text" name="dateOfBirth" value="20180908"/> </p>
		<p><input type="submit" value="register"/> </p>
 	</form><br/>    
	
	// 5. Date 타입 처리
	// 1)
	// 쿼리 파라미터(dateOfBirth=1234)로 전달 받은 값이 날짜 문자열 형식에 맞지 않아 Date타입으로 변환에 실패한다
	@RequestMapping(value = "/registerByGet01", method = RequestMethod.GET) // a태그로 요청했으니 get이겠죠 
	public String registerByGet01(String userId, @DateTimeFormat(pattern = "yyyyMMdd") Date dateOfBirth){	
		logger.info("registerByGet01");
		logger.info("userId : " + userId);
		logger.info("dateOfBirth : " + dateOfBirth);
		return "success"; // 404 떠야함 ㅎㅎㅎ
	}
	
	// 5)
	// Member 매개변수와 쿼리 파라미터(dateOfBirth=20180908)로 전달 받은 값이 날짜 문자열 형식에 맞지 않아 Date타입으로 변환에 실패한다
	@RequestMapping(value = "/registerByGet02", method = RequestMethod.GET) 
	public String registerByGet02(Member member){	
		logger.info("registerByGet02");
		logger.info("member.getUserId() : " + member.getUserId());
		logger.info("member.getDateOfBirth() : " + member.getDateOfBirth());
		return "success"; 
	}
	
	@RequestMapping(value = "/register", method = RequestMethod.POST) 
	public String register(Member member){	
		logger.info("register");
		logger.info("member.getUserId() : " + member.getUserId());
		logger.info("member.getPassword() : " + member.getPassword());
		logger.info("member.getDateOfBirth() : " + member.getDateOfBirth());
		return "success"; 
	}
	

6. @DateTimeFormat 어노테이션

@DateTimeFormat 어노테이션의 pattern 속성 값에 원하는 날짜 형식을 지정할 수 있다.

[요청과 처리]
요청: 5번 항목에 해당하는 요청 주를 이용하여 테스트 시, 날짜형식 패턴이 'yyyyMMdd'와 같은 형식으로 요청한 경우,
[성공]으로 정상적인 날짜 데이터를 확인할 수 있다.
처리 : 5번항목 참고

profile
안녕하세요! 초보개발자 공부 시작!

0개의 댓글