기본 객체(implicit object)
(1) request 기본 객체
웹 브라우저가 웹 서버에 전송한 요청 관련 정보 제공
주요 기능
- 클라이언트(웹 브라우저)와 관련된 정보 읽기 기능
- 서버와 관련된 정보 읽기 기능
- 클라이언트가 전송한 요청 파라미터 읽기 기능
- 클라이언트가 전송한 요청 헤더 읽기 기능
- 클라이언트가 전송한 쿠키 읽기 기능
- 속성 처리 기능
request 기본 객체의 클라이언트 및 서버 정보 관련 메서드
getRemoteAddr() : 웹 서버에 연결한 클라이언트의 IP 주소를 구한다. 게시판이나 방명록 등에서 글 작성자의 IP 주소가 자동으로 입력되기도 하는데, 이때 입력되는 IP 주소가 바로 이 메서드를 사용하여 구한 것이다.
getContentLength() : 클라이언트가 전송한 요청 정보의 길이를 구한다. 전송된 데이터의 길이를 알 수 없는 경우 -1을 리턴한다.
getCharacterEncoding() : 클라이언트가 요청 정보를 전송할 때 사용한 캐릭터의 인코딩을 구한다.
getContentType() : 클라이언트가 요청 정보를 전송할 때 사용한 컨텐트의 타입을 구한다.
getProtocol() : 클라이언트가 요청한 프로토콜을 구한다.
getMethod() : 웹 브라우저가 정보를 전송할 때 사용한 방식을 구한다.
getRequestURI() : 웹 브라우저가 요청한 URL에서 경로를 구한다. (폴더명~파일명까지)
getContextPath() : JSP 페이지가 속한 프로젝트명(폴더명) 반환
getServerName() : 연결할 때 사용한 서버 이름을 구한다.
getServerPort() : 서버가 실행 중인 포트 번호를 구한다.
- 클라이언트 IP = 0:0:0:0:0:0:0:1
- 요청정보 길이 = -1
- 요청정보 인코딩 = null
- 요청정보 컨텐츠 타입 = null
- 요청정보 프로토콜 = HTTP/1.1
- 요청정보 전송방식 = GET
- 요청정보 URI = /chap02/requestinfo.jsp
- 컨텍스트 경로 = /chap02
- 서버이름 = localhost
request 기본 객체 - 파라미터 읽기 메서드
getParameter(String name) : 이름이 name인 파라미터의 값을 구한다. 존재하지 않을 경우 null을 리턴한다.
getParameterValues(String name) : 이름이 name인 모든 파라미터의 값을 배열로 구한다. 존재하지 않을 경우 null을 리턴한다.
getParameterNames() : 웹 브라우저가 전송한 파라미터의 이름을 구한다.
getParameterMap() : 웹 브라우저가 전송한 파라미터의 맵을 구한다. 맵은 <파라미터 이름, 값> 쌍으로 구성된다.
GET 방식(METHOD)/POST 방식(METHOD)
파라미터를 전송하는 방식
GET : 쿼리문자열로 전송(길이 제한)
POST : 요청 몸체 데이터로 전송
<form action="formAction.jsp" method="get">
// form에 method를 get으로 하거나 post로 할 수 있다.
default는 get 방식. (전송시 위의 url에 쿼리문이 뒤에 붙는다.)
post 방식은 메시지 형태로 전송하므로 위의 url 뒤에 쿼리문자가 나오지 않는다.
로그인폼 등에서 아이디/비번 등 위에 노출되지 않게 post 방식으로 전송한다.
GET 방식 전송 예
GET /chap03/viewParameter.jsp?name=cbk&address=seoul HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
…
POST 방식 전송 예
POST /chap03/viewParameter.jsp HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; ko; rv:1.9.0.3) ...
...
Content-Type: application/x-www-form-urlencoded
Content-Length: 22
name=cbk&address=seoul
파라미터 값의 인코딩/디코딩
JSP에서 파라미터 로딩 시 인코딩 지정이 필요하다. (POST 방식)
<%
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
%>
GET 방식을 이용해서 파라미터 전송 방법
첫번째. <a> 태그의 링크에 쿼리 문자열 추가
- <a href=“viewParameter.jsp?name=홍길동&address=역삼동”>링크</a>
두번째. HTML 폼(form)의 method 속성 값을 “get”으로 지정해서 전송
<%@ page contentType = "text/html; charset=utf-8" %>
. . .
<form action="viewParameter.jsp" method=“get">
<input type="text" name="name" size="10"> <br>
<input type="text" name="address" size="30"> <br>
<input type="submit" value="전송">
</form>
웹브라우저 주소에 직접 쿼리 문자열 포함한 URL 입력
- HTTP, URL, URI 등의 표준에는 get 방식으로 전달되는 파라미터 값을 인코딩 할 때 어떤 캐릭터 셋을 사용해야 하는지에 대한 규칙이 정해져 있지 않다.
- 톰캣은 기본적으로 ISO-8859-1 캐릭터 셋으로 파라미터 값을 읽어온다.
톰캣에서 GET 방식 파라미터를 위한 인코딩 처리
form을 불러올 때 문자 코드가 맞지 않으면 깨지는 문제가 있다.
post 방식의 경우 불러와서 처리할 jsp에 <%request.setCharacterEncoding("UTF-8");%>을 넣어주면 된다.
get 방식인 경우에는 다음과 같이 처리한다.
방법1 : Server.xml 파일 수정
<Connector>의 useBodyEncodingForURI 속성의 값을 true로 지정하면 된다.
server.xml 위치 : [톰캣설치디렉토리]/conf/server.xml
<Connector port=“8090” protocol=“HTTP/1.1”
connectionTimeout=“20000”
redirectPort=“8443”
useBodyEncodingForURI=“true” />
request.setCharacterEncoding(“utf-8”); 이 적용된다.
1) 이클립스 왼쪽 Servers에서 server.xml을 찾아 연다.
2) source를 눌러 Connector port 태그에 useBodyEncodingForURI=“true” 를 넣어준다.
방법2 : Server.xml 파일에서 <Connector>의 URIEncoding 속성의 값으로 원하는 캐릭터 셋으로 직접 지정
<Connector port=“8090” protocol=“HTTP/1.1”
connectionTimeout=“20000”
redirectPort=“8443”
URIEncoding=“utf-8” />
request.setCharacterEncoding(“utf-8”); 은 적용되지 않음
웹 브라우저 캐시 제어
응답 헤더 입력
<%
response.setHeader(“Pragma”, “No-cache”);
response.setHeader(“Cache-Control”, “no-cache”);
response.addHeader(“Cache-Control”, “no-store”);
response.setDateHeader(“Expires”, 1L);
%>
리다이렉트(Redirect)
웹 서버가 웹 브라우저에게 특정 페이지로 이동하라고 웹 브라우저에 응답하는 기능.
ex) 로그인에 성공한 후 메인 페이지로 자동 이동 등
리다이렉트를 지시한 JSP 페이지가 있을 경우 웹 브라우저는 실질적으로 요청을 두 번 하게 됨.
response.sendRedirect(String location)로 구현
JSP 주석
1) 자바의 주석 사용 1
<% // 자바의 주석 사용 %>
2) 자바의 주석 사용 2
<%
/* 자바의 주석
여기까지 주석 */
%>
3) JSP 자체 주석
<%-- JSP 코드 자체 주석 --%>
4) 웹 주석
HTML : <!-- -->
CSS : /* */
자바스크립트 : 자바와 동일
'JSP' 카테고리의 다른 글
서블릿 기초: @WebServlet 애노테이션과 web.xml (0) | 2016.03.03 |
---|---|
jsp 실습: form 파라미터 보내고 받기 (0) | 2016.03.03 |
이클립스에서 jsp 실행시 크롬으로 결과 확인 (0) | 2016.03.02 |
JSP 페이지의 구성 요소: 디렉티브, 스크립트 (0) | 2016.03.02 |
jsp 실습: 기초 문법 연습 (0) | 2016.03.02 |