JSP 내장 객체
: JSP 페이지 내에서 제공하는 특수한 레퍼런스 타입의 변수
: JSP 페이지가 서블릿(Servlet) 으로 변환될 때 JSP 컨테이너가 자동으로 제공함.
: 대표적으로 request와 response 가 있음.
JSP 내장 객체 : request
: 웹 브라우저에서 JSP 페이지로 전달되는 정보의 모임으로 HTTP 헤더와 HTTP 바디로 구성됨.
메소드 | 설명 |
String getParameter(name) | name 에 저장된 변수 값을 얻음. |
String getParameterValues(name) | name에 저장된 모든 변수값을 얻음. |
Enumeration getParameterNames() |
모든 파라미터 변수를 java.util.Enumeration 타입으로 리턴. |
위의 표는 request 객체의 메소드 중 파라미터의 값을 받아오는데 사용하는 메소드이다.
<memberForm.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<form action="memberProc.jsp">
이름 : <input type="text" name="name"><br>
학번 : <input type="text" name="sid"><br>
<input type="submit" value="전송">
</form>
<memberProc.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name=request.getParameter("name");
String sid=request.getParameter("sid");
out.println(name+"<br>"+sid);
%>
<memberForm.jsp & memberProc.jsp 실행결과>
위의 코드에서 이름과 학번과 같이 하나의 파라미터에 하나의 값만 들어간다면
request.getParameter(name);
의 형식으로 값을 받아오면 된다.
<memberForm2.jsp 소스 코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<form action="memberProc.jsp">
이름 : <input type="text" name="name"><br>
학번 : <input type="text" name="sid"><br>
취미 :
<input type="checkbox" name="hobby" value="sleep"> 잠자기
<input type="checkbox" name="hobby" value="dance"> 춤추기
<input type="checkbox" name="hobby" value="sing"> 노래하기
<br>
<input type="submit" value="전송">
</form>
<memberProc2.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String name=request.getParameter("name");
String sid=request.getParameter("sid");
String arrHobby[]= request.getParameterValues("hobby");
String hobby="";
for(int i=0;i<arrHobby.length;i++){
hobby+=arrHobby[i]+" ";
}
out.println(name+"<br>"+sid+"<br>"+hobby);
%>
<memberForm2.jsp & memberProc2.jsp 실행결과>
memberForm2.jsp 의 checkbox 와 같이 하나의 파라미터안에 다양한 값이 들어간다면
memberProc2.jsp 와 같이
request.getParameterValues(name);
과 같은 형식으로 값을 받아오면 된다.
유의해야할 점은, 여러 개의 값을 저장해야 하기 때문에 배열로 저장해야 한다는 점이다.
배열안의 값을 하나의 변수에 넣고 싶다면 memberProc2.jsp 와 같이 for문을 이용하는 방법도 있다.
request 객체는 요청된 파라미터의 값 이외에도 웹 브라우저와 웹 서버의 정보도 가져올 수 있다.
메소드 | 설명 |
String getProtocol() | 사용 중인 프로토콜 리턴 |
String getServerName() | 서버의 도메인 이름 리턴 |
String getMethod() | 요청에 사용된 메소드(GET,POST...) 리턴 |
String getQuesryString() | 요청에 사용된 QueryString 리턴 |
String getRequestURI() | 요청에 사용된 URL 으로부터 URI 값 리턴 |
String getRemoteHost() | 정보를 요청한 웹 브라우저의 호스트 이름 리턴 |
String getRemoteAddr() | 정보를 요청한 웹 브라우저의 IP주소 리턴 |
int getServerPort() | 서버의 포트번호 리턴 |
String getHeader(name) | HTTP 요청 헤더 이름에 해당하는 속성값 리턴 |
JSP 내장 객체 : response
: 웹 브라우저로 응답할 응답 정보를 갖고 있음.
메소드 | 설명 |
void setHeader(name, value) | 헤더 정보의 값을 수정하는 메소드로, name 에 해당하는 헤더 정보를 value값으로 설정. |
void setContentType(type) |
웹 브라우저의 요청의 결과로 보일 페이지의 contentType을 설정. |
void sendRedirect(url) | 페이지를 이동시키는 메소드로, url 로 주어진 페이지로 제어 이동. |
웹 서버에는 버퍼가 존재한다.
화면에 보이는 내용은 버퍼에 저장된 내용이 출력되었다고 볼 수 있는데,
response.sendRedirect(url)
위와 같은 메소드는 버퍼에 저장한 내용을 전부 삭제하고 해당하는 url 에 리다이렉트 된다.
<responseRedirect.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
제 이름은 철보빡 입니다.
<%
response.sendRedirect("responseRedirected.jsp");
%>
<responseRedirected.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
제 이름은 리다이렉트된 철보빡입니다.
<responseRedirect.jsp 실행 결과>
url 창도 responseRedirected.jsp 로 변하는 것을 확인할 수 있다.
JSP 내장 객체 : out
: JSP 페이지가 생성한 결과를 웹 브라우저에 전송함.
메소드 | 설명 |
boolean isAutoFlush() | 출력 버퍼가 다 찼을 때 처리 여부를 결정하는 것으로 자동으로 flush 할 경우 true를 리턴하고, 그렇지 않을 경우 flase를 리턴. |
int getBufferSize() | 출력 버퍼의 전체 크기를 리턴함. |
int getRemaining() | 현재 남아있는 출력 버퍼의 크기를 리턴함. |
void clearBuffer() | 현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비움. |
String println(str) |
주어진 str의 내용을 웹 브라우저에 출력. |
void flush() |
현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비움. |
void close() |
현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 출력 스트림 닫음. |
가장 많이 쓰이는 것은 out.println(str) 이다.
redirect 를 이용하여 페이지가 리다이렉션 될 때 파라미터 넘기는 법
<responseRedirect2.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
제 이름은 철보빡 입니다.
<%
response.sendRedirect("responseRedirected.jsp?hobby=dance");
%>
<responseRedirected2.jsp 소스코드>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
제 이름은 리다이렉트된 철보빡입니다.<br>
<%
String hobby=request.getParameter("hobby");
out.println("취미는 "+hobby+"입니다.");
%>
<responseRedirect2.jsp 실행 결과>
response.sendRedirect(url) 메소드에서 url 뒤에 파라미터를 붙여 넘길 수 있다.
파라미터는 ? 뒤에 붙는다.
'Archive > Develop' 카테고리의 다른 글
[ 기본 환경 구축 ] Pycharm Tensorflow Error 임시조치(?)하기 (2) | 2020.12.19 |
---|---|
[ JSP ] JSP의 액션 태그 | JSP include, JSP forward 태그 (0) | 2020.05.07 |
[ JSP ] JSP 페이지 스크립트 요소 | JSP 변수 선언 | JSP 주석 (0) | 2020.05.05 |
[ JSP ] JSP 페이지의 지시자(Directive) (0) | 2020.05.05 |
[ JSP ] Web Programming 이란? | JSP 동작 원리 (0) | 2020.05.05 |