요청의 파라미터를 연결할 기본형 매개변수에 붙인다.
기본형 매개변수 앞에 생략하면 required=false이고,
@RequestParam을 붙이면 required=true이다.
특히 매개변수 타입이 int일 때 required=true로 하고 예외처리를 하던지,
아니면 required=false면 기본값으로 defaultValue를 줘야 한다.
<!-- 한글 변환 필터 시작 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 한글 변환 필터 끝 -->
source/main/resources/log4j.xml에서 org.springframework.web의 log level을 info에서 trace로 하면 자세한 로그 내용을 볼 수 있다.
참조형 매개변수를 Model에 자동 추가해준다. 참조형 매개변수 앞에 @ModelAttribute는 생략 가능하다.
반환 타입과 컨트롤러의 매개변수에 적용할 수 있다.
key, value에서 키를 생략하면 타입의 첫글자를 소문자로 해서 key로 한다.
컨트롤러 매개변수에는 @RequestParam과 - (기본형, String), @ModelAttribute - 참조형에 붙일 수 있고 생략 가능하다.
왜냐하면 기본형과 String은 jsp에서 el로 ${param.파라미터 이름}으로 사용할 수 있으므로 Model에 저장할 필요가 없다.
요청으로 받은 값을 WebDataBinder에서 1.타입변환, 2.데이터검증을(Validation)한 후 BindingResult 결과와 에러의 내용을 저장하고, 컨트롤러가 그 값을 볼 수 있다.
resources태그에서 정적리소스 맵핑 경로를 수정 --> /**
<c:url>
<!-- action, method를 넣어줘야 하고,
onsubmit으로 폼을 전송하기 전에 작업을 수행하고, true면 전송하게 한다 -->
<form action="<c:url value="/register/save"/>" method="POST">
<!-- id의 input태그에 autofocus를 붙여서 커서가 가도록 한다 -->
<input class="input-field" type="text" name="id" placeholder="8~12자리의 영대소문자와 숫자 조합" autofocus>
<!-- Js로 id, pwd길이 유효성 검사를 하고,
통과하지 못하면 메세지를 출력하고, element.select로 커서가 가게 한다.
이를 form태그에 onsubmit으로 등록해서 전송 전에 검사를 한다.-->
<script>
function formCheck(frm) {
var msg ='';
if(frm.id.value.length<3) {
setMessage('id의 길이는 3이상이어야 합니다.', frm.id);
return false;
}
if(frm.pwd.value.length<3) {
setMessage('pwd의 길이는 3이상이어야 합니다.', frm.pwd);
return false;
}
return true;
}
function setMessage(msg, element){
document.getElementById("msg").innerHTML = `<i class="fa fa-exclamation-circle"> ${'${msg}'}</i>`;
if(element) {
element.select();
}
}
</script>
기본형과 String 매개변수는 jsp에서 받아서, param.매개변수이름으로 사용할 수 있다. 배열은 paramValues로 받는다.