유블로그

[Spring] 파라미터 처리하는 여러가지 방법 본문

Spring

[Spring] 파라미터 처리하는 여러가지 방법

yujeong kang 2020. 11. 1. 20:42

1. HttpServletRequest

- jsp

<a href="${root}/parameter/test01.do?id=a&pw=b&name=홍길동">

- controller

@GetMapping("test01.do")
	public String test01(HttpServletRequest request) {
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		String name = request.getParameter("name");
		System.out.println(id);
		System.out.println(pw);
		System.out.println(name);
		return "redirect:/index02.jsp";
	}

 

2. @RequestParam

- jsp

<a href="${root}/parameter/test02.do?id=a&pw=b&name=홍길동">

- controller

// @RequestParam 사용할 경우 반드시 파라미터의 값이 넘어와야 한다.
	@GetMapping("test02.do")
	public String test02(
			@RequestParam("id") String id,
			@RequestParam("pw") String pw,
			@RequestParam("name") String name
	) {
		System.out.println(id);
		System.out.println(pw);
		System.out.println(name);
		return "redirect:/index02.jsp";
	}

 

 

3. @RequestParam  옵션

- jsp

<a href="${root}/parameter/test03.do?pw=b">

- controller

// 파라미터 없을때 처리와 만약 값이 없으면 default 값 넣는 법
	@GetMapping("test03.do")
	public String test03(
			@RequestParam(value="id", defaultValue = "default값") String id,
			@RequestParam("pw") String pw,
			@RequestParam(value="name", required = false) String name
			) {
		System.out.println(id);
		System.out.println(pw);
		System.out.println(name);
		return "redirect:/index02.jsp";
	}

 

- console 내용

default값
b
null

defaultValue="" 를 사용하면 파라미터가 넘어오지 않을 경우 자동으로 값이 들어간다.

requires=false 를 쓰면 파라미터가 넘어오지 않을 경우 null 값이 들어가고

             true 를 쓰면 파라미터가 넘어오지 않을 경우 에러가 발생한다.

 

 

 

3. 매개변수 이름 이용하기

- jsp

<a href="${root}/parameter/test04.do?id=a&pw=b&name=홍길동">

- controller

/**
	 매개변수 이름과 동일한 파라미터 이름을 찾아서 값을 자동으로 설정한다.
	 주의. 만약 선언된 매개변수 이름과 같은 파라미터 이름이 없다면 null 대입하려 한다.
	 따라서, 매개변수 타입은 객체 타입 형태가 와야한다.
	 예) int age -> 에러, Integer age -> 에러안남
	 */
	@GetMapping("test04.do")
	public String test04(String id, String pw, String name, int age) {
		System.out.println(id);
		System.out.println(pw);
		System.out.println(name);
		System.out.println(age);
		return "redirect:/index02.jsp";
	}

 

 

4. 매개변수 VO 클래스 이용하기

- jsp

<a href="${root}/parameter/test05.do?id=a&pw=b&name=홍길동">

 

- controller

// 클래스 사용해서 연관된 데이터를 하나의 객체로(VO) 묶어버리기! 가장 많이 사용됨
	@GetMapping("test05.do")
	public String test05(Member member) {
		System.out.println(member.getId());
		System.out.println(member.getPw());
		System.out.println(member.getName());
		return "redirect:/index02.jsp";
	}

이 때 동일 패키지에 property와 파라미터명이 같은 클래스 있어야함

- Member.java

public class Member {
	private String id;
	private String pw;
	private String name;
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getPw() {
		return pw;
	}
	public void setPw(String pw) {
		this.pw = pw;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

 

 

5. MAP 클래스 이용하기

- jsp

<a href="${root}/parameter/test06.do?id=a&pw=b&name=홍길동">

 

- controller

// @RequestParam 안 적었을 때 console 보면 map에 데이터가 안 들어가있다.
	@GetMapping("test06.do")
	public String test06(@RequestParam Map<String, String> member) {
		System.out.println(member);
		return "redirect:/index02.jsp";
	}

 

- console 내용

{id=a, pw=b, name=홍길동}