[JSP] 3. JSP Request, Response 객체
by Rev_JSP에서는 선언하지 않고 사용할 수 있는 여러가지 내장 객체가 있다.
대표적으로 사용하는 것은 request와 response를 예로 들 수 있다. 그 외에도 여러 가지 내장 객체가 있는데, JSP에서 이를 사용하는 방법을 알아보도록 하자.
Request
request 객체는 요청 정보를 담아 보내는 역할을 한다.
HTTP 헤더와 HTTP 바디로 구성된다. HTTP 헤더는 해당 메시지가 제공하는 기능에 대한 최소한의 정보가 정리된 요약본이라고 할 수 있으며, HTTP 바디에는 실제 내용이 들어간다.
Request 객체는 다양한 메소드들을 제공한다.
1. 사용자가 form에 입력한 요구 사항을 얻어낼 수 있도록 하는 메소드
getParameter(name) | 파라미터 변수 name에 저장된 값을 얻어내는 메소드 |
getParameterValues(name) | 파라미터 변수 name에 저장된 모든 값을 얻어내는 메소드 |
getParameterNames() | 요청에 의해 넘어오는 모든 파라미터 변수를 Enumeration 타입으로 리턴 |
2. 웹 브라우저의 정보 가져오기
getProtocol() | 웹 서버로 요청 시 사용 중인 프로토콜 리턴 |
getServerName() | 서버의 도메인 이름 리턴 |
getMethod() | 요청에 사용된 방식(get, post) 리턴 |
getQueryString() | 요청에 사용된 QueryString 리턴 |
getRequestURL() | 요청에 사용된 URL 주소 리턴 |
getRequestURI() | 요청에 사용된 URL로부터 URI값 리턴 |
getRemoteHost() | 웹 서버로 정보를 요청한 웹 브라우저의 host 이름 리턴 |
3. 웹 서버의 정보 가져오기
getRemoteAddr() | 웹 서버로 정보를 요청한 웹 브라우저의 ip 주소 리턴 |
getServerPort() | 웹 서버로 요청시 서버의 port 번호 리턴 |
getContextPath() | 해당 JSP페이지가 속한 웹 애플리케이션의 콘텍스트 경로 리턴 |
getHeader(name) | 웹 서버로 요청 시 HTTP 요청 header 이름인 name에 해당하는 속성값 리턴 |
getHeaderNames() | HTTP 요청 header에 있는 모든 헤더 이름 리턴 |
여기서 사용자가 form에 입력한 요구 사항을 얻어낼 수 있도록 하는 메소드를 연습해보자.
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="mSignUp.jsp" method="get">
name : <input type="text" name="n_name"><br>
password : <input type="password" name="n_password"><br>
hobby : sport <input type="checkbox" name="n_hobby" value="sport">
cooking <input type="checkbox" name="n_hobby" value="cooking">
travel <input type="checkbox" name="n_hobby" value="travel"><br>
<input type="submit" value="sign up">
</form>
</body>
</html>
FormEx.html
위처럼 이름, 비밀번호를 입력 받고 취미를 체크박스에서 선택하여 제출하는 HTML 페이지가 있다.
여기서 form 태그의 action 속성은 form data를 서버로 보낼 때 해당 데이터가 도착할 URL을 명시한다.
서버를 실행시켜 웹 페이지를 열어보면 위와 같다.
<%@page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title</title>
</head>
<body>
<%!
String name;
String password;
String[] hobby;
%>
<%
name = request.getParameter("n_name");
password = request.getParameter("n_password");
hobby = request.getParameterValues("n_hobby");
%>
이름 : <%= name %><br>
비밀번호 : <%= password %><br>
취미 : <%
for (int i=0; i<hobby.length; i++) {
%>
<%= hobby[i] %>
<%
}
%>
</body>
</html>
mSignUp.jsp
우리는 form에서 서버로 제출한 데이터들을 이 jsp 파일에 전달한다.
그러면 request.getParameter로 데이터를 전달 받을 수 있다. 여기서 이름과 비밀번호는 그냥 String 데이터이고, 취미는 String 배열 데이터이므로 취미 데이터를 가져올 때는 request.getParameterValues로 가져왔다.
제출하면 내가 입력한 데이터를 바탕으로 mSignUp.jsp 파일이 나타난다.
form의 action 태그가 그냥 해당 URL로 데이터를 넘겨주기만 하는거라고 생각했는데, submit 버튼을 누르면 바로 jsp 페이지로 넘어간다. 데이터를 넘겨주는 것뿐만이 아니라 action은 해당 form을 제출하면 지정된 URL로 넘어간다.
Response
response 객체는 jsp 페이지의 실행 결과를 웹 브라우저로 되돌려줄 때 사용한다.
서버 -> 웹 브라우저로의 응답을 response 객체를 통하여 처리한다.
여러가지 역할의 메소드가 존재하는데, 크게 3가지 역할로 나눌 수 있다.
1. response 기본 객체의 응답 형식 지정 메소드
setContentType(String) | MIME 타입을 지정, 부가적으로 글자의 인코딩 지정 |
getCharacterEncoding() | 응답하는 내용의 글자 인코딩 형태를 구함 |
2. 응답 헤더 관련 response 객체 메소드
addCookie(Cookie) | 응답에 지정한 쿠키를 저장 |
containsHeader(header) | 이름이 header인 헤더를 포함 여부 검사 |
setHeader(name, value) | 이름이 name인 헤더의 값을 value로 지정 |
setDateHeader(name, data) | 이름이 name인 헤더의 값을 long형 값 data로 지정 |
ddHeader(name, value) | 이름이 name 값이 String형 value인 헤더 추가 |
addIntHeader(name, value) | 이름이 name 값이 int형 value인 헤더 추가 |
addDataHeader(name, data) | 이름이 name 값이 long형 data인 헤더 추가 |
3. URL 재작성 관련 response 객체 메소드
encodeRedirectURL(url) | 세션정보를 포함하기 위해 sendRedirect() 메소드에서 사용할 URL인코딩 |
encodeURL(name) | 세션정보를 포함하고 있는 링크에서 사용할 URL을 인코딩 |
sendRedirect(url) | 웹 서버가 웹 브라우저에게 지정한 URL로 자동 이동되도록 한다. |
여기서 sendRedirect 메소드를 사용해보았다.
<%@page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title</title>
</head>
<body>
<p>First Page</p>
<%
response.sendRedirect("secondPage.jsp");
%>
</body>
</html>
firstPage.jsp
해당 페이지에서는 큰 내용은 존재하지 않고, response 객체만이 존재한다.
response 객체의 sendRedirect 메소드는 해당 URL의 페이지로 이동시켜주는 역할을 한다.
<%@page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title</title>
</head>
<body>
<p>Second Page</p>
</body>
</html>
secondPage.jsp
따라서 firstPage를 실행시키면 secondPage가 실행될 것이다.
첫번째 페이지 실행결과는 위와 같다!
[Reference]
실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
'개발 > JSP' 카테고리의 다른 글
[JSP] 4. JSP 내장객체(config, application, out, exception) (0) | 2022.09.27 |
---|---|
[JSP] 2. JSP 태그 종류 (0) | 2022.09.23 |
[JSP] 1. Servlet Mapping (0) | 2022.09.22 |
[JSP] 0. 개발 환경 구축하기 (2) | 2022.09.20 |
블로그의 정보
Hi Rev
Rev_