[spring] 파라미터 다루기

2024. 10. 10. 16:34·SPRING

🌿파라미터 가져오기

①

// http://localhost/temp?a=hello&b=123
	@GetMapping("/temp") // GET
	public String temp(String a, int b) {
		System.out.println("a=" + a); //a=hello
		System.out.println("b=" + (b + 3)); //b=126
		return "none"; // none.jsp 없음 404
	}

넘어오는 파라미터 이름과 동일하기 때문에 @RequestParam이나 request.getParameter이 필요하지 않다.

@GetMapping("/temp") : GET 방식
@RequestMapping("/temp") : GET, POST 둘 다 받아 들일 수 있음.
@RequestMapping(value="/temp", method=RequestMethod.GET) : GET방식
	// http://localhost/temp1?a=hello&b=123
	@RequestMapping("temp1")
	public String temp1(HttpServletRequest request, HttpServletResponse response) {

		String in_a = request.getParameter("a");
		String in_b = request.getParameter("b");

		String a = in_a;
		int b = Integer.parseInt(in_b) + 4;
		System.out.println("a=" + a); //a=hello
		System.out.println("b=" + b); //b=127

		return "none";
	}

넘어오는 파라미터 이름과 동일하지 않기 때문에 @RequestParam이 필요하다.

 

②

	// http://localhost/temp2?a=hello&b=123
	@RequestMapping("/temp2")
	public String temp2(@RequestParam Map<String, String> map) {
		System.out.println("map:" + map); //map:{a=hello, b=123}
		String a = map.get("a");
		int b = Integer.parseInt(map.get("b"));
		System.out.println("a:" + a); //a:hello
		System.out.println("b=" + (b + 5)); //b=128
		return "none";
	}

 Map파라미터를 불러오기위해선 @RequestParam이 필수이다.

 

③ 

	// http://localhost/temp3?a=hello&b=123
	@RequestMapping("/temp3")
	public String temp3(
			@RequestParam("a") String v1, 
			@RequestParam("b") int v2) 
	{
		System.out.println("v1=" + v1); //v1=hello
		System.out.println("v2=" + (v2 + 7)); //v2=130

		return "none";
	}

넘어오는 parameter a를 문자열 변수 v1으로 지정한다.

∴비밀번호 파라미터가 넘어올때 변수로 바꿔서 비밀번호처럼 안보이게 할수 있음.

 

④

	// http://localhost/temp4?a=hello&b=123
	@RequestMapping("/temp4")
	public String temp4(DataVo vo) {
		System.out.println("a:" + vo.getA()); //a:hello
		System.out.println("b=" + (vo.getB() + 10)); //b=133
		return "none";
	}

아래의 DataVo Class 에서 a와 b를 묶어서 하나의 클래스로 만들어서 위의 메소드에서 객체로 매핑한다.

public class DataVo {
	String a;
	int b;
	public String getA() {
		return a;
	}
	public int getB() {
		return b;
	}
}

 

🌿파라미터 넘겨주기

참고: [java] 클래스 활용

 

[java] 클래스 활용

🔎클래스 사용 전 함수 사용 public static int add(int a, int b) { int r = a + b; return r; } public static void changeUpper(String name) { name = name.toUpperCase(); } public static void swap(int c, int d) { int t = c; //지역변수 t라서 swa

o94777.tistory.com

 

①

@RequestMapping("/temp5")
	public String temp5(String a, int b, Model model) {

		System.out.println("a=" + a);
		System.out.println("b=" + (b + 32));

		model.addAttribute("a", a);
		model.addAttribute("b", b);
		model.addAttribute("c", "이것도 넘어가나?");

		return "reqdata"; // reqdata.jsp
	}
  • Model: reqdata.jsp 에게 넘겨줄 값을 담는 객체
  • model.addAttribute: 넘겨줄 값을 Model 에 담는다

👉 a,b는 inparameter(함수가 호출될 때, 이 매개변수의 값이 함수 내부에서 사용됨)
👉 model은 outParameter(함수가 실행된 후, 이 매개변수의 값이 함수 외부로 전달됨.)

 

②

// /temp6?a=hello&b=123
	@RequestMapping("/temp6")
	public String temp6(DataVo vo, Model model ) { 
		
		System.out.println("a="+vo.getA());
		System.out.println("b="+(vo.getB()+100));
		
		model.addAttribute("a", vo.getA());
		model.addAttribute("b", vo.getB());
		model.addAttribute("c", "이것도 넘어간다.");
		
		return "reqdata";
	}

DataVo vo : 넘겨받는 정보(객체)

 

③

	// /temp7?a=hello&b=123
	@RequestMapping("/temp7") 
	public String temp7(
			@ModelAttribute("attrName") DataVo vo, 
			Model model ) {
		System.out.println("a="+vo.getA());
		System.out.println("b="+(vo.getB()+100));
		
		model.addAttribute("a", vo.getA());
		model.addAttribute("b", vo.getB());
		
		return "noneModel";
	}

 

@ModelAttribute("attrName") DataVo vo : attrName속성으로 DataVo를 사용하게 해준다.
                                                                  ∴ inputParameter임과 동시에 Model객체 역할을 한다.

 

<body>
	<h2>넘어온 data(model)</h2>
	${ a }    == model.getAttribute("a")
	${ vo.a } == vo.getA() 
	<p>a : ${ a }</p>
	<p>b : ${ b }</p>
	<br>
	<p>a : ${ vo.a }</p>
	<p>b : ${ vo.b }</p>
	<br>
	<p>a : ${ attrName.a }</p>
	<p>b : ${ attrName.b }</p>
	<br>
	<p>a : ${ param.a }(request.getParameter("a"))</p>
	<p>b : ${ param.b }(request.getParameter("a"))
<!-- 	   ∴Controller와 jsp는 requestScope를 공유한다 -->
	</p>
	
	<br>
</body>

 

Controller에서 넘겨주는 값은 noneModel.jsp에도 request값이 공유된다.

 

🌿파라미터를 경로처럼 사용하기

①

 

	// /temp8/hello/123
	@RequestMapping("/temp8/{a}/{b}") //주소 전달 방식
	public String temp8(@PathVariable("a") String a, @PathVariable("b") int b) {
		
		System.out.println("a:" + a);
		System.out.println("b=" + b);
		
		return "none";
	}

변수끼리는 @PathVariable를 생략시 에러가 발생한다.

 

②

	// /temp9/hello/123
	@RequestMapping("/temp9/{a}/{b}") //주소 전달 방식
	public String temp9(DataVo vo) {
		
		System.out.println("a:" + vo.getA());
		System.out.println("b=" + vo.getB());
		
		return "none";
	}

클래스객체의 경우 @PathVariable를 생략해도 된다.

 

③

	// /temp10/hello/123
	@RequestMapping("/temp10/{a}/{b}")
	public String temp10(@ModelAttribute("vo") DataVo vo, Model model) {
		System.out.println("a:" + vo.getA()); 
		System.out.println("b=" + vo.getB());
		
		return "noneModel";
	}

PathVariable: 주소자체에 데이터를 넣는 것이므로 payload로 안들어가고 request.getParameter가 실행되지 않는다.

'SPRING' 카테고리의 다른 글

[spring]회원정보 수정 - 비밀번호 체크하기  (0) 2024.10.13
[spring] 회원가입 - 아이디 중복 체크하기  (0) 2024.10.13
[spring]스프링 부트 MVC구조  (3) 2024.10.08
[spring] 스프링 부트 Controller  (0) 2024.10.08
[spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration  (2) 2024.10.04
'SPRING' 카테고리의 다른 글
  • [spring]회원정보 수정 - 비밀번호 체크하기
  • [spring] 회원가입 - 아이디 중복 체크하기
  • [spring]스프링 부트 MVC구조
  • [spring] 스프링 부트 Controller
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (150)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (15)
      • 기타 (6)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (1)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    CSS
    db
    tag
    티스토리챌린지
    AJAX
    부트캠프
    태그
    자기계발
    일지
    link
    개발자
    JQuery
    HTML
    오블완
    java
    링크
    javascript
    SQL
    JS
    input
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
라텐느
[spring] 파라미터 다루기
상단으로

티스토리툴바