요청 파라미터 취득하기

ttaho·2023년 3월 12일
0

Spring 기초

목록 보기
4/11

요청 파라미터란?

서버에 전송되는 값을 요청 파라미터 라고 합니다.

요청 파라미터 종류

  • 요청 쿼리 스트링으로 보내지는 값 - http 메서드:GET으로 서버로 데이터 전송
  • 요청 본문(body)에 저장되어 보내지는 값 - http 메서드:POST로 서버로 데이터 전송
  • 뷰에서 클릭한 버튼의 name 속성값
  • URL 경로(path)의 일부로 보내지는 값

요청 파라미터 취득 방법

  • @RequestParam 사용 - @RequestParam 어노테이션을 이용해 파라미터를 하나씩 취득
  • Form 클래스 사용 - 스프링 MVC가 Form 클래스 내의 필드에 대해 값을 저장한다. 요청 파라미터를 모아서 하나의 객체로 받아들여서 자주 사용됨. 받을 때, 형변환이나 포맷 지정이 가능하다.

1. @RequestParam 사용

컨트롤러를 만든다.

entry.html을 만든다.

post방식으로 name,age,birth12을 넘겨준다.
컨트롤러에서 @RequestParam을 통해 넘어온 값들을 저장한다.
model.addAttribute를 통해 name,age,birth12를 name,age,birth1로 변수로 설정한다. view인 confirm.html에서 해당 변수들을 사용할 수 있다.

2. Form 클래스 사용

컨트롤러를 수정한다.

confirm2.html을 만든다.

여기서 Form이 아니고, form이 사용가능한 이유는, Model에 저장할 때 명시적으로 '이름'을 주지 않으면 클래스명에 소문자 카멜 표기법을 적용해서 Model에 저장하기 때문이다.

Form.class를 만든다.

전송버튼을 누르면 confirm 아래의 화면을 확인할 수 있다.

URL에 포함된 값을 받는 프로그램 만들기

링크를 클릭했을때 URL의 일부로 사용되는 값을 취득하는 방법과 하나의 뷰에 여러개의 버튼이 있을때 처리 내용을 구별하는 방법을 알아보자.

  • PathVariableController.java
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;

@Controller
public class PathVariableController {
    @GetMapping("show")
    public String showView() {
        return "show";
    }
    @GetMapping("/function/{no}")
    public String selectFunction(@PathVariable Integer no) {
        // 뷰 이름을 초기화
        String view = null;
        switch (no) {
            case 1:
                view = "pathvariable/function1";
                break;
            case 2:
                view = "pathvariable/function2";
                break;
            case 3:
                view = "pathvariable/function3";
                break;
        }

    return view;
    }

    @PostMapping(value = "send", params="a")
    public String showAView() {
        return "submit/a";
    }
    @PostMapping(value = "send", params="b")
    public String showBView() {
        return "submit/b";
    }
    @PostMapping(value = "send", params="c")
    public String showCView() {
        return "submit/c";
    }
}

GetMapping("/functon/{no}")를 보면 알 수 있듯이 no를 @PathVariable을 사용하여 변수로 받아서 사용할 수 있다.

  • show.html

form 태그는 /send를 post방식으로 요청하고, param으로 a,b,c 중 1개를 넘겨준다.
컨트롤러에서 그 에 따라 3가지 return값이 달라진다. 그에 해당하는 html을 보여준다.


기능1은 get방식의 요청이므로 파라미터 1이 노출된다.


버튼 A는 post방식의 요청이므로 파라미터가 노출되지 않는다.

profile
백엔드 꿈나무

0개의 댓글