Spring MVC - 파라미터 추출

2020. 9. 6. 19:20Java/Spring

반응형

지난포스트에서 MVC에서 get과 post 전송 방식에 대해 알아보았다.

 

Spring MVC는 get,post 데이터를 어노테이션을 통해서 받을 수 있다.

 

 

먼저 index.jsp를 통해서 get ,post 전송을 구현한다.

 

<%@ 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>
<form action="test2" method="post">
	<input name="data1" value="100" />
	<input name="data2" value="200" />
	<button type="submit">submit</button>
</form>
</body>
</html>

1.HttpServletRequest

 

HttpServletRequest을 통해서 파라미터를 추출 가능하다. 이 방법은 jsp에서 추출하던 방식과 비슷하다. 

@Controller
public class TestController {
	@GetMapping("/test1")
	public String test1(HttpServletRequest request) {
		String data1 = request.getParameter("data1");
		String data2 = request.getParameter("data2");
		String data3 = request.getParameter("data3");
		System.out.println(data1);
		System.out.println(data2);
		System.out.println(data3);
		return "result";
	}
}

@PostMapping("/test2")
	public String test2(HttpServletRequest request) {
		String data1 = request.getParameter("data1");
		String data2 = request.getParameter("data2");
		String data3 = request.getParameter("data3");
		System.out.println(data1);
		System.out.println(data2);
		System.out.println(data3);
		return "result";
	}

2. WebRequest

WebRequest는 HttpServletRequest와 비슷하게 사용이 된다.

@Controller
public class TestController {
	@GetMapping("/test1")
	public String test1(WebRequest request) {
		String data1 = request.getParameter("data1");
		String data2 = request.getParameter("data2");
		String data3 = request.getParameter("data3");
		System.out.println(data1);
		System.out.println(data2);
		System.out.println(data3);
		return "result";
	}

 

3. @PathVariable

@PathVariable는 주소의 /로 구분을 지어서 데이터를 받는다.

 

<a href="test3/100/200/300">test3</a>

위와 같이 주소를 보내면 @PathVariable은 100,200,300를 주소가 아니라 순서를 통해서 자료 값으로 받게 된다.

@GetMapping("/test3/{data1}/{data2}/{data3}")
public String test1(@PathVariable String data1,
					@PathVariable int data2,
					@PathVariable int data3) {
		
	System.out.println(data1);
	System.out.println(data2+data3);
	return "result";
}

@GetMapping("/test3/{data1}/{data2}/{data3}") 을 통해서 데이터로 들어오는 값을 지정해주고, 이름을 정해줘야 한다.

 

이 방식의 장점은 String외의 자료형을 줄 수 있다는 것이다.

 

4. @RequestParam

- @RequestParam은 지정된 변수의 이름과 파라미터의 이름이 같을 경우 값을 주입 받는다.

- value를 통해서 변수명을 설정 가능하다.

- required를 false로 설정하면 지정된 이름의 파라미터가 없을시 null이 주입된다. 

- defaultValue를 통해서 값이 주입되지 않을시 기본 값을 지정 가능하다.

@GetMapping("/test4")
	public String test1(@RequestParam(value = "data1") int value1, 
					@RequestParam int data2, 
					@RequestParam int data3,
					@RequestParam (required = false) String data4,
					@RequestParam (defaultValue = "333") int data5) {//null주입
	System.out.println(value1);
	System.out.println(data2 + data3);
	System.out.println(data4);
	System.out.println(data5);
	return "result";
}

반응형

'Java > Spring' 카테고리의 다른 글

Spring MVC - ViewResolver  (0) 2020.09.08
Spring MVC - 객체를 통한 파라미터 주입  (0) 2020.09.06
Spring MVC - 요청방식(Get,Post)  (0) 2020.09.05
Spring MVC - URL Mapping  (0) 2020.09.05
Spring MVC - 기본세팅(3) - JAVA  (0) 2020.09.04