-
JSP | Request 내장 객체JAVA/JSP 2020. 2. 19. 16:55
Request 내장 객체
JSP 웹 프로그래밍 기본 구조
한 파일에서 모든 작업을 할 수 없기 때문에
요청을 하는 페이지와 요청을 처리해서 응답하는 페이지로 분리함- 요청 페이지: 요청을 입력받는 페이지로 로그인이나 회원가입 페이지가 포함됨
html 또는 jsp 파일 - 응답 페이지: 해당 요청을 처리한 뒤 요청 페이지로 응답을 보내는 페이지, jsp 파일
- 이클립스에서 작업시, 파일 우클릭 → Open with → Web Page Editor
를 사용하면 작업 내용을 실시간으로 확인할 수 있음
request
웹 브라우저에서 JSP 페이지로 전달되는 정보의 모임
- HTTP 헤더와 HTTP 바디로 구성
- 웹 컨테이너가 요청된 HTTP 메세지를 통해 HttpServletRequest 객체를 얻어냄
- JSP 페이지에서는 HttpServletRequest 객체를 request 객체명으로 사용
request Method
사용자가 form에 입력한 요구 사항을 얻어낼 수 있도록하는 메소드 제공
메소드 설명 String getParameter(name) 파라미터 변수 name에 저장된 값을 얻어내는 메소드
해당 변수명이 없으면 null 리턴
단독값을 입력하는 text, select, radio 등에 사용String[] getParameterValues(name) 파라미터 변수 name에 저장된 모든 값을 얻어내는 메소드
변수값은 String 배열로 리턴
다중값을 입력하는 checkbox 등에 사용Enumeration getPrameterNames() 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Enumeration 타입으로 리턴
변수가 가진 객체들을 저장하기 위해 Enumeration 컬렉션 사용
< % request.setCharacterEncoding("utf-8"); % >
ServletRequest 클래스 메소드
- void setCharacterEncoding(String env)
- 해당 request에 사용된 인코딩 방식을 env 인코딩으로 재정의함
- request 객체를 얻어오기 전에 작성해야 함
requset Method
request 객체는 요청된 파라미터 값 외에도
웹 브라우저와 웹 서버의 정보도 가져올 수 있음메소드 설명 String getProtocol() 웹 서버로 요청 시 사용 중인 프로토콜 리턴 String getServerName() 서버의 도메인 이름 리턴 String getMethod() 요청에 사용된 요청 방식(GET, POST 등) 리턴 String getQueryString() 요청에 사용된 QueryString 리턴 String getRequestURL() 요청에 사용된 URL 주소 리턴 String getRequestURI() 요청에 사용된 URL로부터 URI값 리턴 String getRemoteHost() 웹 서버로 정보를 요청한 웹 브라우저의 host 이름 리턴 메소드 설명 String getRemoteAddr() : String 웹 서버로 정보를 요청한 웹 브라우저의 ip 주소 리턴 String getServerPort() 웹 서버로 요청시 서버의 port 번호 리턴 String getContextPath() : String 해당 JSP페이지가 속한 웹 애플리케이션의 콘텍스트 경로 리턴
콘텍스트 경로는 웹 애플리케이션의 루트 경로String getHeader(name) 웹 서버로 요청 시 HTTP 요청 header 이름인 name에 해당하는 속성값 리턴 Enumeration getHeaderNames() HTTP 요청 header에 있는 모든 헤더 이름 리턴
URL & URI
- URL(Uniform Resource Locator)
웹상에서 서비스를 제공하는 각 서버들이 응답 시 전송하는 파일들의 위치를 명시하기 위한 것
접속해야 할 서비스의 종류, 도메인명, 파일 위치 포함 - URI(Uniform Resource Identifier)
URL로부터 존재하는 자원을 식별하기 위한 일반적인 식별자를 규정하는 것
URL에서 HTTP 프로토콜, 호스트명, port 번호를 제외한 부분이 URI - ex) URL: http://127.0.0.1:8080/study/ch04/requestTest1.jsp
URI: study/ch04/requestTest1.jsp
예제 ①
html 파일에서 문자열과 숫자 데이터를 jsp파일로 넘겨 받아서
숫자만큼 문자열을 반복 출력하는 프로그램 작성
WebContent/control/input.html
123456789101112131415<!doctype html><html lang="en"><head><meta charset="UTF-8" /><title>요청 페이지2</title></head><body><!-- post 형식으로 while.jsp에 데이터 전달 --><form method="post" action="../sub/while.jsp">반복할 문자열: <input type="text" name="msg" size="20"><br />반복할 숫자: <input type="text" name="number" size="20" /> <br /><input type="submit" value="보내기" /></form></body></html>http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
WebContent/sub/while.jsp
12345678910111213141516171819202122232425262728293031<%@ 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><%// 한글이 깨지지 않도록 처리request.setCharacterEncoding("utf-8");%><%// name 값이 msg인 매개변수 데이터를 가져옴String msg = request.getParameter("msg");// name 값이 number인 매개변수 데이터를 가져옴int num = Integer.parseInt(request.getParameter("number"));// number 만큼 반복 출력int i = 0;while (i < num) {%><b><%=msg%></b><br/><%i++;}%></body></html>http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
예제 ②
input.jsp 페이지에서 체크박스로 데이터를 전송하고
arrayPrint.jsp 페이지에서 데이터를 배열로 처리하는 예제
input.jsp
입력 form에 사용자가 값을 입력하는 페이지
1234567891011121314151617181920212223242526272829<%@ 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의 데이터를 post 방식으로 arrayPrint.jsp로 전송 --><form action="arrayPrint.jsp" method="post">이름: <input type="text" name="name" /> <br />주소: <input type="text" name="addr" /><fieldset><legend>좋아하는 동물</legend><!-- 배열로 값을 전달하기 위해서 name 속성의 값을 동일하게 지정 --><input type="checkbox" name="pet" value="dog" /> 강아지<input type="checkbox" name="pet" value="cat" /> 고양이<input type="checkbox" name="pet" value="cow" /> 송아지<input type="checkbox" name="pet" value="horse" /> 망아지</fieldset><input type="submit" value="전송"/></form></body></html>http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
arrayPrint.jsp
입력 form에 사용자가 값을 입력하는 페이지
1234567891011121314151617181920212223242526272829303132333435<%@ 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><%request.setCharacterEncoding("utf-8");%></head><body><%String name = request.getParameter("name");String addr = request.getParameter("addr");// name 속성의 값이 pet인 value들을 반환해서 pet[]에 저장String[] pet = request.getParameterValues("pet");%><h3>이름: <%=name %></h3><h3>주소: <%=addr %></h3><h3>좋아하는 동물</h3><!-- pet[]이 빈 배열이 아닌 경우 출력--><%if(pet != null){ %><%for(int i=0; i<pet.length; i++){%><h4><%out.println((i+1)+". ");%><%=pet[i] %></h4><% }// pet[]이 빈 배열인 경우 출력} else { %><h3>좋아하는 동물이 없으시네요.</h3><% } %></body></html>http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
결과
예제 ③
request 내장 객체의 메소드를 사용해서 웹 브라우저와 웹 서버의 정보를 얻어오는 예제
1234567891011121314151617181920212223242526272829303132<%@ 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><h2>1. 서버 도메인 이름:<%=request.getServerName()%></h2><h2>2. 서버 포트 번호:<%=request.getServerPort()%></h2><h2>★★3. 요청 URL 주소:<%=request.getRequestURL()%></h2><h2>★★4. 요청 URI 주소:<%=request.getRequestURI()%></h2><h2>★★5. 접속 ip 주소:<%=request.getRemoteAddr()%></h2><h2>6. 클라이언트가 요청한 프로토콜:<%=request.getProtocol()%></h2><h2>★★7. 요청 방식(GET or POST):<%=request.getMethod()%></h2></body></html>http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
결과
요청 페이지로부터 전송된 데이터를 응답 페이지에서 사용할 수 있도록 하는 Request 객체에 대해 알아보았습니다.
getParameter(name) 메소드는 정말 많이 사용된다고 하기 때문에 기억해 두면 좋을 것 같습니다.
또한 Request 객체를 이용하면 요청 페이지의 파라미터 값 외에 웹 브라우저나 웹 서버의 데이터도
얻어낼 수 있기 때문에 알아두면 나중에 필요하게 되었을 때 찾아서 사용할 수 있을 것입니다.
또한 한글 데이터를 처리해야 하는 경우에는 데이터를 처리하기 전에
반드시 request 객체의 인코딩을 utf-8로 지정해 주어야 하겠습니다.
'JAVA > JSP' 카테고리의 다른 글
JSP | Out 내장 객체 (0) 2020.02.19 JSP | Response 내장 객체 (0) 2020.02.19 JSP | 내장 객체 개요 & Method &객체 영역 (0) 2020.02.19 JSP | Page Directives_< %@include% > (0) 2020.02.19 JSP | Servlet (0) 2020.02.18 - 요청 페이지: 요청을 입력받는 페이지로 로그인이나 회원가입 페이지가 포함됨