상세 컨텐츠

본문 제목

request.setAttribute 사용하는 이유

Jsp

by 헬로제이콥 2024. 8. 24. 01:26

본문

 

request.setAttribute()를 사용하는 이유

  1. 다른 JSP 페이지로 데이터 전달: 여러 JSP 페이지에 걸쳐 동일한 데이터를 사용해야 할 때, request.setAttribute()를 사용하여 데이터를 공유할 수 있습니다. 예를 들어, 첫 번째 JSP 페이지에서 입력받은 사용자 정보를 두 번째 JSP 페이지에서 출력하는 경우에 유용합니다.
  2. MVC 패턴 구현: Model-View-Controller 패턴에서 Model 역할을 수행하는 데이터를 저장하고 전달하는 데 사용됩니다.
  3. 복잡한 웹 애플리케이션 구현: 여러 서블릿과 JSP 페이지가 상호 작용하는 복잡한 웹 애플리케이션에서 데이터 흐름을 관리하는 데 효과적입니다.

예시:

  • 첫 번째 JSP 페이지:
     
    request.setAttribute("userName", name);
    request.setAttribute("userScore", scoreStr);
    // 다른 JSP 페이지로 이동 (forward)
    request.getRequestDispatcher("result.jsp").forward(request, response);
    
     
     
  • 두 번째 JSP 페이지 (result.jsp):
     
    String userName = (String) request.getAttribute("userName");
    String userScore = (String) request.getAttribute("userScore");
    // 화면에 출력
    out.println("이름: " + userName);
    out.println("점수: " + userScore);
    
     
     

위 예시처럼 request.setAttribute()를 사용하면 첫 번째 JSP 페이지에서 설정한 값을 두 번째 JSP 페이지에서 사용할 수 있습니다.

결론적으로, request.setAttribute()는 JSP 페이지 간의 데이터 전달에 필수적인 기능입니다. 단순히 한 페이지 내에서 값을 사용하는 것뿐만 아니라, 여러 페이지에 걸쳐 데이터를 공유하고 복잡한 웹 애플리케이션을 구현하는 데 있어서 매우 중요한 역할을 합니다.

 

 

1. 첫 번째 JSP 페이지 (input.jsp)

사용자로부터 이름과 점수를 입력받는 페이지입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>입력 페이지</title>
</head>
<body>
<form action="display.jsp" method="post">
    이름: <input type="text" name="name"><br>
    점수: <input type="text" name="score"><br>
    <input type="submit" value="전송">
</form>
</body>
</html>

2. 두 번째 JSP 페이지 (display.jsp)

input.jsp에서 입력받은 값을 표시하는 페이지입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
    // 요청으로부터 값 가져오기
    String name = request.getParameter("name");
    String scoreStr = request.getParameter("score");

    // 값을 request에 설정
    request.setAttribute("userName", name);
    request.setAttribute("userScore", scoreStr);
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>결과 페이지</title>
</head>
<body>
<%
    // request에서 설정한 값을 가져오기
    String userName = (String) request.getAttribute("userName");
    String userScore = (String) request.getAttribute("userScore");
%>
    <h2>입력한 정보</h2>
    이름: <%= userName != null ? userName : "정보 없음" %><br>
    점수: <%= userScore != null ? userScore : "정보 없음" %><br>
</body>
</html>

설명

  1. input.jsp: 사용자로부터 이름과 점수를 입력받는 폼을 생성합니다. 폼이 제출되면 display.jsp로 POST 요청을 보냅니다.
  2. display.jsp: input.jsp에서 전달된 파라미터를 request.getParameter를 사용하여 가져온 후, request.setAttribute로 다른 JSP 페이지에 값을 설정합니다. 그런 다음, 설정된 값을 가져와서 화면에 출력합니다.

관련글 더보기