ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체로 파라미터 주입받기
    웹페이지 제작을 위한 스프링공부 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
Designed by Tistory.