-
객체로 파라미터 주입받기웹페이지 제작을 위한 스프링공부 2020. 5. 2. 16:31
변수로 파라미터를 주입받는 경우 파라미터 데이터가 50개정도 날라올 경우 그 값들을 담을 변수들을 일일이 다 작성해주어야한다. 그럴경우 객체로 주입 받아주면된다
<%@ 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'>test1</a> </body> </html>
@GetMapping("/test1") public String test1(@RequestParam Map<String,String> map) { String data1=map.get("data1"); String data2=map.get("data2"); System.out.println("data1:"+data1); System.out.println("data2:"+data2); return "result"; }
출력값
data1:100
data2:200단 이때 동일한 이름으로 전달되는 파라미터가 2개이상이면 첫번째값만 들어감
<%@ 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</a> ->data3에 300,400 두개의값이 들어감 </body> </html>
@GetMapping("/test1") public String test1(@RequestParam Map<String,String> map) { String data1=map.get("data1"); String data2=map.get("data2"); String data3=map.get("data3"); System.out.println("data1:"+data1); System.out.println("data2:"+data2); System.out.println("data3:"+data3); return "result"; }
출력값
data1:100
data2:200
data3:300 <- 400은 들어가지않음이러한 경우 List를 사용하면 둘다 데이터를 받을 수 있다.
@GetMapping("/test1") public String test1(@RequestParam Map<String,String> map,@RequestParam List<String> data3)//data3참조 변수에 300과 400값이 list형식으로 차곡차곡 쌓임 또한 넘어오는 데이터 타입에 따라 타입변환을 해주면됨 { String data1=map.get("data1"); String data2=map.get("data2"); System.out.println("data1:"+data1); System.out.println("data2:"+data2); //data3참조변수는 리스트로 만들어진 변수이다 data3에 값이 순서대로 잘 들어갔는지 확인을 해보았다. System.out.println(data3.get(0)); System.out.println(data3.get(1)); for(String str:data3) { System.out.println("data3:"+str); } return "result"; }
출력값
data1:100
data2:200
300
400
data3:300
data3:400제대로 출력되었다.
*키워드*
파라미터
HTML의 form 데이터 전송시 key/value 쌍으로 사용된다
입력값을 저정하는 변수프로퍼티
클래스의 내부 변수
ModelAttribute
반드시 파라미터 이름과 beans의 set get이름이 동일해야함 중요!!!!
<%@ 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</a> </body> </html>
package kr.co.softcampus.beans; public class DataBean { //data1이라는 이름으로 파라미터 데이터가 넘어오면 setData1을 호출하여 주입시켜줌,data2,data3동일한 방식 private int data1; private int data2; private int []data3; public int getData1() { return data1; } public void setData1(int data1) { this.data1 = data1; } public int getData2() { return data2; } public void setData2(int data2) { this.data2 = data2; } public int[] getData3() { return data3; } public void setData3(int[] data3) { this.data3 = data3; } }
data1,data2,data3 파라미터와 클래스의 프로터티 값이 동일한것을 볼 수 있음 다르면 절대 안됩니다~!
@GetMapping("/test1") public String test1(@ModelAttribute DataBean bean1)//넘어온 파라미터 데이터가 bean1로 자동으로 주입됨 { System.out.println("data1:"+bean1.getData1()); System.out.println("data1:"+bean1.getData2()); for(int number1:bean1.getData3()) { System.out.println("data3:"+number1); } return "result"; }
출력값
data1:100
data1:200
data3:300
data3:400자동 주입 과정
@GetMapping("/test1") public String test1(@ModelAttribute DataBean bean1)//넘어온 파라미터 데이터가 bean1로 자동으로 주입됨 { bean1.setData1(100);//이러한 작업을 자동으로 해준다는 소리 bean1.setData2(200);//이러한 작업을 자동으로 해준다는 소리 return "result"; }
'웹페이지 제작을 위한 스프링공부' 카테고리의 다른 글
커맨드 객체 이용하기 (0) 2020.05.02 viewResolver (0) 2020.05.02 파라미터 추출하기 (0) 2020.05.02 url mapping (0) 2020.05.02 java로 셋팅하기 (0) 2020.05.01