본문 바로가기
Programming/JSP

[ JSP ] JSP 페이지 내장객체 | request & response & out | jsp 출력

by 코뮤(commu) 2020. 5. 5.
728x90
반응형

 

 

 

 

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 실행결과>

 

 

 

 

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 뒤에 파라미터를 붙여 넘길 수 있다.

파라미터는 ? 뒤에 붙는다.

 

 

 

 

 

 

728x90
반응형