[Java] - JSP에서 데이터를 컨트롤러로 전달하는 다양한 방법

Joy H·2025년 3월 7일

JSP에서 데이터를 컨트롤러로 전달하는 다양한 방법


1. VO/DTO (@ModelAttribute) 를 이용하는 경우

📌 JSP에서 데이터 전달 (form 태그 사용)

<form action="user/save" method="post">
    아이디: <input type="text" name="userId"><br>
    이름: <input type="text" name="userName"><br>
    <input type="submit" value="전송">
</form>

📌 Controller

@PostMapping("/user/save")
public String saveUser(@ModelAttribute UserVO user) {
    System.out.println("User ID: " + user.getUserId());
    System.out.println("User Name: " + user.getUserName());
    return "success";
}

2. request.getParameter() 를 이용하는 경우

📌 JSP에서 데이터 전달 (form 태그 사용)

<form action="user/save" method="post">
    아이디: <input type="text" name="userId"><br>
    이름: <input type="text" name="userName"><br>
    <input type="submit" value="전송">
</form>

📌 Controller

@PostMapping("/user/save")
public String saveUser(HttpServletRequest request) {
    String userId = request.getParameter("userId");
    String userName = request.getParameter("userName");

    System.out.println("User ID: " + userId);
    System.out.println("User Name: " + userName);
    return "success";
}

3. @RequestParam 을 이용하는 경우

📌 Controller

@PostMapping("/user/save")
public String saveUser(@RequestParam("userId") String userId,
                       @RequestParam("userName") String userName) {
    System.out.println("User ID: " + userId);
    System.out.println("User Name: " + userName);
    return "success";
}

4. @RequestBody 를 이용하는 경우 (JSON 요청 처리)

📌 JSP에서 데이터 전달 (AJAX 사용)

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
    function sendData() {
        var userData = {
            userId: $("#userId").val(),
            userName: $("#userName").val()
        };

        $.ajax({
            type: "POST",
            url: "user/save",
            contentType: "application/json",
            data: JSON.stringify(userData),
            success: function(response) {
                alert("데이터 전송 성공!");
            }
        });
    }
</script>

아이디: <input type="text" id="userId"><br>
이름: <input type="text" id="userName"><br>
<button onclick="sendData()">전송</button>

📌 Controller

@PostMapping("/user/save")
public String saveUser(@RequestBody UserVO user) {
    System.out.println("User ID: " + user.getUserId());
    System.out.println("User Name: " + user.getUserName());
    return "success";
}

5. @PathVariable 을 이용하는 경우 (URL 경로에서 데이터 전달)

📌 JSP에서 데이터 전달 (링크 사용)

<a href="user/user123">사용자 상세 보기</a>

📌 Controller

@GetMapping("/user/{userId}")
public String getUser(@PathVariable("userId") String userId) {
    System.out.println("User ID: " + userId);
    return "success";
}

6. @SessionAttribute 를 이용하는 경우 (세션에서 데이터 가져오기)

📌 Controller에서 세션에 데이터 저장

@PostMapping("/user/login")
public String login(HttpSession session) {
    UserVO user = new UserVO();
    user.setUserId("user123");
    user.setUserName("홍길동");

    session.setAttribute("user", user);
    return "redirect:/user/info";
}

📌 Controller에서 세션 데이터 가져오기

@GetMapping("/user/info")
public String getUserInfo(@SessionAttribute("user") UserVO user) {
    System.out.println("User ID: " + user.getUserId());
    return "success";
}

📌 JSP에서 세션 데이터 사용 (sessionScope 활용)

아이디: ${sessionScope.user.userId} <br>
이름: ${sessionScope.user.userName}

📌 정리 (JSP에서 데이터 전달 방식 비교)

방법JSP 데이터 전달 방식Controller에서 받는 방식
VO/DTO (@ModelAttribute)<form> name="userId" 사용@ModelAttribute UserVO user
request.getParameter()<form> name="userId" 사용request.getParameter("userId")
@RequestParam<form> name="userId" 사용@RequestParam("userId") String userId
@RequestBodyAJAX + JSON 데이터 전송@RequestBody UserVO user
@PathVariable<a href="user/user123">@PathVariable("userId") String userId
@SessionAttributesession.setAttribute("user", UserVO)@SessionAttribute("user") UserVO user

✅ 어떤 방식으로 데이터를 보내야 할까?

  • 일반적인 form 데이터를 보낼 때 → @ModelAttribute 또는 @RequestParam 사용
  • 개별 파라미터 값을 받을 때 → request.getParameter() 또는 @RequestParam 사용
  • JSON 데이터를 보낼 때 → AJAX + @RequestBody 사용
  • URL 경로 변수를 보낼 때 → @PathVariable 사용
  • 세션 데이터를 사용할 때 → @SessionAttribute 사용

0개의 댓글