스프링 @RequestParam Map과 @RequestParam List 등 RequsetParam에 대한 예시와 설명
스프링에서 @RequestParam을 통해서 데이터를 받을 수 있다고
저번에 살펴보았다
jsp와 controller를 살펴보자
먼저 jsp이다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="test1?data1=100&data2=200&data3=300&data3=400">test1 get</a><br><hr>
<a href="test2?data1=100&data2=200&data3=300&data3=400">test2 get</a><br><hr>
</body>
</html>
그리고 밑에가 Controller이다.
@GetMapping("/test1")
public String test1(@RequestParam Map<String,String> map, @RequestParam List<String> data3) { // data3은 데이터가 여러개 날아옴
String data1 = map.get("data1"); //데이터 여러개인 경우는 List<String>으로 받음 //중요*** (숫자도)int로 못받음!! 넘어오는값은 무조건! String으로 받는다
String data2 = map.get("data2");
String data33 = map.get("data3"); //data는 실제 2개 날아오는데 map.get으로는 1개받게 못받음(데이터 여러개 날아올때 이렇게 하면안됨)
System.out.printf("data1 : %s\n", data1);
System.out.printf("data2 : %s\n", data2);
System.out.printf("data33 : %s\n", data33);
for(String str : data3) {
System.out.printf("data3 : %s\n",str);
}
return "result";
}
예를 들어 이런식으로 사용할 수 있다.
여기서 파라미터의 괄호 안에
@RequestParam Map<String,String> map, @RequestParam List<String> data3
이런 방식으로 데이터를 받을 수 있다.
Map을 사용하는것은 Map은
이런 형식으로 Key와 Value의 형태로 값을 저장할 수 있으므로
값을 저장하기가 편한다
위의 JSP를 살펴보면
test1?data1=100 이렇게 데이터를 보내는데
그렇다면 key에 data1 이 저장되고
value 에 100이 저장된다.
그리고 중요한것!!!!!
@RequestParam Map<string,string> map 이렇게 Map 형식으로
데이터를 받으면 데이터 타입의 종류나 갯수와 상관없이
모든 데이터를 다 Map에 받을수 있다.
또한 필수적으로
@RequestParam Map<String,String> map,
@RequestParam List<String> 사용시에는
무조건 타입을 String으로 해주어야 한다!!!
전부 숫자여도 int로 받으면 에러가 난다
(1개만 받을떄는 int도 가능/ 하지만 Map or LIst 사용시에는 String으로 받을것!)
객체이름은 Map map, Map myMap, Map amuruna 등
내맘대로 지으면 된다.
저 위에서 LIst를 사용한 까닭은 똑같은 이름으로 정보가 2개 이상 날아왔기 떄문이다
바로 "data3"
이렇게 똑같은 이름으로 여러개가 날아오면 제아무리 Map이어도 어떻게 받을수가 없다
그렇기 때문에 데이터를 여러개 받을수있는 List로 받아주는 것이다
(@RequestParam List<String> data3 (이렇게 @RequestParam List는 여러개의 정보를 저장할 수 있다))
마지막 출력하면 콘솔에
data1 : 100
data2 : 200
data33 : 300
data3 : 300
data3 : 400
이렇게 나오게 된다