[SpringWebMVC] - 파라미터 추출하기

정택부·2022년 12월 8일
0

SpringWebMVC1

목록 보기
9/9

설정

1) 메이븐 프로젝트 변환

2) Java기본 세팅

3) 추가 세팅

3-1) 컨트롤러

[TestController.java]

@Controller
public class TestController {

	@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);
		}

		return "result";
	}

	@PostMapping("test2")
	public String test2(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);
		
		if(data3 != null) {
			for(String str1 : data3) {
				System.out.println("data3 : " + str1);
			}
		}

		return "result";
	}
}

3-2) jsp

[index.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>
	<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 
		<input type='checkbox' name='data3' value='200' />data3 200
		<br />
		<button type='submit'>test2 post</button>
	</form>
</body>
</html>

View

test1_get 클릭시

tes_post 클릭시


@PathVariable

  • 데이터가 요청 주소에 있을 경우 값을 주입 받을 수 있는 어노테이션
  • Restful API 서버 프로그랭밍 시 많이 사용하는 방식

[TestController.java]

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

[index.jsp]

	<hr />
	<a href='test3/100/200/300'>test3</a>
	<br />

View

test3 클릭 시 결과


@RequestParam

  • 파라미터 데이터를 직접 주입 받을 수 있다.
  • 지정된 변수의 이름과 파라미터의 이름이 같을 경우 값을 주입 받는다.
  • 가능한 경우 형 변환도 처리해준다.
  • value : 파라미터의 이름과 변수의 이름이 다를 경우 파라미터 이름을 지정한다.
  • required : false를 설정하면 지정된 이름의 파라미터가 없을 경우 null이 주입된다.

[TestController.java]

	@GetMapping("/test4")
	public String test4(@RequestParam int data1,
						@RequestParam int data2,
						@RequestParam int [] data3) {
		System.out.println("data1 : " + data1);
		System.out.println("data2 : " + data2);
		for(int a1 : data3) {
			System.out.println("data3 : " + a1);
		}
		
		return "result";
	}

[index.jsp]

	<hr/>
	<a href='test4?data1=100&data2=200&data3=300&data3=400'>test4</a><br/>

View

test4 클릭 시 결과

-----수정필요!!-------

if

<a href='test4?data11=100&data2=200&data3=300&data3=400'>test4</a>

일 때 @RequestParam(required =false) int data1 일 경우

profile
경험치 쌓는 중

0개의 댓글