IT/개발

[SpringBoot] 백엔드에서 Form 데이터 받기

Terriermon 2021. 9. 21. 15:43

목적

 

프론트엔드(JSP)에서 백엔드(Servlet)로 Form 데이터를 전달할 때, 백엔드에서 데이터를 활용하기 위해 파라미터로 전달받음

이 때, 전달받는 방법에 여러가지가 있어서 정리함

 

 

방법

 

1. HttpServletRequest 이용

// HttpServletRequest
@RequestMapping("/FormData1")
public String FormData1(HttpServletRequest httpServletRequest, Model model){

    // httpServletRequest를 이용하여 id와 pw를 가져옴
    String id = httpServletRequest.getParameter("id");
    String pw = httpServletRequest.getParameter("pw");

    // 출력 확인
    System.out.println("id: " + id + " pw: " + pw);

    // model에 담으면 JSP에서 attribute 인식
    model.addAttribute("id", id);
    model.addAttribute("pw", pw);

    return "FormData1";
}

- 프론트엔드에서 Servlet으로 전달된 data들이 httpServletRequest에 담아서 전달된다.

- Model은 백엔드에서 다시 프론트엔드로 값을 전달하기 위해 사용

 

 

2. RequestParam

// RequestParam
@RequestMapping("/FormData2")
public String FormData2(@RequestParam("id") String id, @RequestParam("pw") String pw, Model model){

    // 바로 사용 가능
    System.out.println("id: " + id + " pw: " + pw);

    model.addAttribute("id", id);
    model.addAttribute("pw", pw);

    return "FormData2";
}

- RequestParam으로 전달되는 변수를 바로 받아서 사용할 수 있다.

- 파라미터가 길어지는 단점이 있음

 

 

3. Bean


class Login{
    String id;
    String pw;

    //getter setter
}

// Bean
// 파라미터와 일치하는 빈을 만들어서 사용
@RequestMapping("/FormData3")
public String FormData3(Login login){

    System.out.println("id: " + login.id + " pw: " + login.pw);

    return "FormData3";
}

- Login이라는 class가 존재할 때, 파라미터와 일치하는 빈을 만들어서 사용한다.

- login 변수에 id와 pw가 매칭되므로 login.id와 같이 접근해야 함

- 프론트엔드에서도 login객체로 접근해서 출력 가능

ex)

아이디: ${login.id}

패스워드: ${login.pw}

 

 

4. Path 변수

// 패스에 자체 변수 넣기
@RequestMapping("/FormData4/{id}/{pw}")
public String Login(@PathVariable String id, @PathVariable String pw, Model model){

    model.addAttribute("id", id);
    model.addAttribute("pw", pw);

    return "FormData4";
}

- locoalhost:8080/FormData4/HW97/pw00

- 위 링크와 같이 접근했을 때, HW97이 id가 되고 pw00이 pw가 됨

 

 

> Model에 담은 변수는

아이디: ${id}

패스워드: ${pw}

이와 같이 사용 가능