Spring
스프링에서 입력값 추출하기 @RequestParam, request.getParameter
shika
2022. 1. 20. 21:20
스프링에서 값을 추출해보자
예를 들어 index.jsp에 이렇게 코드가 있다
<a href='test1?data1=100&data2=200&data3=300&data3=400'>test1 get</a>
<hr>
<form action="test2" method="post">
data1 : <input type="text" name='data1'/><br>
data2 : <input type="text" name='data2'/><br>
data3 : <input type="checkbox" name='data3' value="100"/>data3 100<br>
data3 : <input type="checkbox" name='data3' value="200"/>data3 200<br>
<button type="submit">test2 post</button>
</form>
<hr>
그리고 컨트롤러에서는 이렇게 있다
@GetMapping("/test1")
public String test1(HttpServletRequest request) {
String data1 = request.getParameter("data1");
// 파라미터는 무조건 문자열로 추출된다
String data2 = request.getParameter("data2");
String[] data3 = request.getParameterValues("data3");
System.out.println("data1 : " + data1);
System.out.println("data2 : " + data2);
for (String str1 : data3) {
System.out.println("data3 : " + str1);
}
System.out.println("-----------------");
return "result";
}
@PostMapping("/test2")
public String test2(HttpServletRequest request) {
String data1 = request.getParameter("data1");
String data2 = request.getParameter("data2");
String[] data3 = request.getParameterValues("data3"); // 체크박스는 아무것도 체크안하면 null값이 들어가서 에러발생함
System.out.println(data1);
System.out.println(data2);
if (data3 != null) { // if문 넣는 이유가 체크박스 체크를 안하면 null이 되어서 에러발생하기 때문
for (String str1 : data3) {
System.out.println("data3 : " + str1);
}
}
System.out.println("-----------------");
return "result";
}
이렇게 코드가 작성되어 진다면
result.jsp로 접속시에 정상적으로 값을 추출해 낼 수 있다.
주의할점은 파라미터는 무조건 String 즉 문자열로 추출이 된다는 점이다
그렇기 때문에 나중에 int 등 다른 타입으로 변환을 원한다면 형변환을 해줘야한다.
@GetMapping("/test1")에서 for문을 사용하지 않는다면
data3은 400이 나와버리게 된다(String[] 이 아닌 String에 저장시)
그러므로 값이 여러개 들어가는 경우 String[]로 받고 진행하도록 하자.