[JSP]Request와 Response 객체: 요청과 응답의 흐름 이해하기

DU·2025년 1월 16일
0

JSP

목록 보기
5/5
post-thumbnail

웹 애플리케이션은 클라이언트(사용자)의 요청(request)을 받아 서버가 응답(response)을 보내는 방식으로 작동합니다. JSP는 이러한 요청과 응답을 처리하기 위해 HttpServletRequestHttpServletResponse 객체를 제공합니다. 이번 글에서는 requestresponse 객체를 활용하는 방법과 이를 사용하는 코드를 분석해보겠습니다.


1. Request 객체

HttpServletRequest 객체는 클라이언트가 보낸 데이터를 서버에서 처리하기 위한 정보를 제공합니다. 주로 사용자의 입력 데이터를 처리하는 데 사용됩니다.

예제 1: 사용자 데이터를 서버로 전송

form.html 코드

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="mSignUp.jsp" method="get">
		name: <input type="text" name="m_name"><br> 
		password: <input type="password" name="m_pass"><br> 
		hobby: 
		sport <input type="checkbox" name="m_hobby" value="sport"> 
		cooking <input type="checkbox" name="m_hobby" value="cooking"> 
		travel <input type="checkbox" name="m_hobby" value="travel"><br> 
		<input type="submit" value="sign up">
	</form>
</body>
</html>

설명

  • <form> 태그:
    • action="mSignUp.jsp": 데이터를 처리할 JSP 페이지를 지정.
    • method="get": GET 방식으로 데이터를 전송.
  • 사용자가 입력한 데이터를 mSignUp.jsp 페이지로 전송합니다.

결과


mSignUp.jsp 코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%!String m_name;
	String m_pass;
	String[] m_hobby;%>

	<%
	// request 객체를 이용해 form 데이터 가져오기
	m_name = request.getParameter("m_name"); // 단일 값
	m_pass = request.getParameter("m_pass"); // 단일 값
	m_hobby = request.getParameterValues("m_hobby"); // 다중 값
	%>

	<p>m_name: <%= m_name %></p>
	<p>m_pass: <%= m_pass %></p>
	<p>m_hobby:</p>
	<ul>
	<%
		for (int i = 0; i < m_hobby.length; i++) {
	%>
		<li><%= m_hobby[i] %></li>
	<%
		}
	%>
	</ul>
</body>
</html>

설명

  • request.getParameter(String name)
    • 클라이언트가 전송한 단일 값을 가져옵니다. (name, password 등)
  • request.getParameterValues(String name)
    • 다중 선택 항목(예: 체크박스) 값을 배열로 가져옵니다.
  • 입력된 데이터는 화면에 출력되며, m_name, m_pass, m_hobby 변수에 저장됩니다.

결과


2. Response 객체

HttpServletResponse 객체는 서버에서 클라이언트로 데이터를 전송하거나 다른 페이지로 리다이렉트할 때 사용됩니다.

예제 2: 페이지 리다이렉트

firstPage.jsp 코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>First Page!!</p>
	<%
		// response 객체를 사용하여 페이지 리다이렉트
		response.sendRedirect("secondPage.jsp");
	%>
</body>
</html>

설명

  • response.sendRedirect(String location)
    • 클라이언트를 지정된 URL로 리다이렉트합니다.
    • secondPage.jsp로 페이지 이동이 이루어지며, 클라이언트는 해당 URL로 새로운 요청을 보내게 됩니다.

secondPage.jsp 코드

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<p>Second Page!!</p>
</body>
</html>

설명

  • 리다이렉트된 페이지에서는 클라이언트가 새로운 요청을 받습니다.
  • 첫 번째 페이지에서 처리된 정보는 사라지며, 두 번째 페이지가 새롭게 로드됩니다.

결과


Request와 Response 객체의 주요 메서드

Request 객체

  1. getParameter(String name)

    • 단일 값 가져오기.
    • 예: request.getParameter("m_name");
  2. getParameterValues(String name)

    • 다중 값 가져오기.
    • 예: request.getParameterValues("m_hobby");
  3. getAttribute(String name)

    • 서버 내에서 속성을 가져옵니다.

Response 객체

  1. sendRedirect(String location)

    • 지정된 URL로 클라이언트를 리다이렉트.
    • 예: response.sendRedirect("secondPage.jsp");
  2. setContentType(String type)

    • 응답 데이터의 MIME 유형을 설정.
    • 예: response.setContentType("text/html");
  3. getWriter()

    • 출력 스트림을 반환하여 클라이언트에 데이터를 보냅니다.

결론

HttpServletRequestHttpServletResponse는 웹 애플리케이션에서 클라이언트와 서버 간의 데이터 흐름을 처리하는 데 필수적인 객체입니다.

  • Request 객체는 클라이언트 데이터를 서버로 전달하며, 폼 입력 처리, 데이터 검증 등에 사용됩니다.
  • Response 객체는 서버의 처리 결과를 클라이언트로 전달하거나 다른 페이지로 리다이렉트할 때 사용됩니다.

이 두 객체를 잘 활용하면 클라이언트-서버 간의 효율적인 데이터 처리가 가능합니다.

0개의 댓글