[JSP] 2021.02.05. DAY_72 JSP 내장객체 _ request

2021. 2. 5. 17:01Web_Back-end/JSP

JSP 내장객체 (implicit object)

  • JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체
  • JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로
    내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함
  • JSP 페이지에 별도의 import 문 없이 자유롭게 사용 가능
  • 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도
    직접 호출하여 사용 가능

 

내장객체의 종류

  • request : 사용자가 요청한 정보를 가지고 있는 객체
    • 사용자가 정보를 요청하는 방식 ( get, post )
    • 사용자가 입력한 정보
    • 사용자가 주소창에 입력한 url
    • service를 요청한 것 (예 : 회원가입을 요청)
    • 정보를 요청한 사용자의 IP주소
  • out: 스크립틀릿 내부에서 출력을 할 수 있는 객체
  • session : 상태유지를 위해 사용하는 객체
    • request, application 사용해서도 상태유지를 할 수 있다
      • 차이점 : 유지되는 범위가 다르다
      • session : browser를 닫기 전까지 유지
      • request : 그 다음 연결 문서까지만 유지
      • application : server를 종료하기 전까지 유지
  • application : 상태유지를 위해 사용하는 객체

속성 처리 메소드의 종류

request, session, application, pageContext


요청 파라미터 관련 메소드의 종류

  • 요청 파라미터는 사용자가 form 페이지에 데이터를 입력한 후 server에 전송할 때 
    • 전달되는 form 페이지의 입력된 정보형태를 말한다
  • 요청 파라미터는 <name=value> 형식으로 Web browser에서 server의 JSP 페이지로 전송한다

 

request 객체로 값 받아와서 출력해보기 

  • request.jsp 파일에서, 사용자에게 값을 받아오고
  • process.jsp 파일로 post방식으로 값을 넘겨받아
  • request.get~ method를 사용하여 출력해보기
request.jsp
<%@ 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>
	<form action="process.jsp" method="post">
		<p>아이디 : <input type="text" name="id"></p>
		<p>암호 : <input type="text" name="pwd"></p>
		<p>이름 : <input type="text" name="irum"></p>
		<p>취미 : 
			<input type="checkbox" name="hobby" value="마라톤">마라톤
			<input type="checkbox" name="hobby" value="클라이밍">클라이밍
			<input type="checkbox" name="hobby" value="게임">게임
			<input type="checkbox" name="hobby" value="필라테스">필라테스
		</p>
		<p>성별 : 
			<input type="radio" name="gender" value="여자">여자
			<input type="radio" name="gender" value="남자">남자
		</p>
		<p>
			직업 : 
			<select name="job">
				<option value="학생">학생</option>
				<option value="취준생">취준생</option>
				<option value="회사원">회사원</option>
				<option value="운동선수">운동선수</option>
			</select>
		</p>
		<p>자기소개<br>
			<textarea rows="10" cols="80" name="info"></textarea>
		</p>
		<input type="submit" value="전송">
	</form>
</body>
</html>
process.jsp
<%@ 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>
<%

	String method = request.getMethod(); //get, post방식을 확인할 수 있는 method
	request.setCharacterEncoding("UTF-8");

	//값이 하나가 반환될 때, request.getParameter _ String
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("irum");
	
	//값이 여러개가 반환될 때, request.getParameterValues _ String[]
	String[] hobby = request.getParameterValues("hobby");
	
	String gender = request.getParameter("gender");
	String job = request.getParameter("job");
	String info = request.getParameter("info");
	

%>
<p>요청방식 : <%=method %></p>
<p>ID : <%=id %></p>
<p>PWD : <%=pwd %></p>
<p>이름 : <%=name %></p>
<p>취미 :
<%
	if(hobby != null){
		for(String h: hobby){
			out.print(h + " ");
		}
	}
%>
</p>
<p>성별 : <%=gender %></p>
<p>직업 : <%=job %></p>
<p>자기소개 : <%=info %></p>
</body>
</html>
  • request 내장객체의 get~ method를 사용한다
    • request.getParameter() : 하나의 값을 받아올 때 _ String으로 반환
    • request.getParameterValues() : 여러개 값을 받아올 때 _ String[] (배열)로 반환
      • 이때는, 값이 넘어오지 않는 경우를 염두해서 코드를 작성해야한다 (null이 나올 수 있기 때문에)
  • request 이외의 out 내장객체로 간단하게 출력할 수 있다

request.jsp
process.jsp

 


요청 HTTP 헤더 관련 메소드의 종류

  • Web browser는 HTTP 헤더에 부가적인 정보를 담아 server로 전송한다

 

request 객체로 HTTP 헤더 메소드 사용

<%@ 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>
<%
	String hostValue = request.getHeader("host");
	String alValue = request.getHeader("accept-language");
%>

호스트명 : <%=hostValue %><br>
설정된언어 : <%=alValue %><br>

</body>
</html>
  • request.getHeader("host") : 호스트 명/포트번호 
  • request.getHeader("accept-language") : 설정된 언어


getHeaderNames() 로 모든 헤더이름, 헤더를 검색해서 출력해보기

<%@page import="java.util.Enumeration"%>
<%@ 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>
<%
	//모든 header의 종류를 알아보기
	//getHeaderNames() : 모든 header의 이름을 Enumeration으로 반환해주는 method
	Enumeration en = request.getHeaderNames();

	//en 에는 헤더 이름이 담겨있는 배열이라고 생각하면 이해하기 쉽다
	while(en.hasMoreElements()){
		//헤더 이름을 담아준다
		String headerName = (String)en.nextElement();
		//헤더 이름으로 헤더를 검색하여 담아준다
		String headerValue = request.getHeader(headerName);
		%>
		<%=headerName %> : <%=headerValue %><br>
		<%
	}
%>
</body>
</html>


웹 브라우저 / server 관련 method

  • 요청한 client의 IP주소를 알 수 있는 method : gerRemoteAddr()

위의 request.jsp 파일을 사용해서, process파일을 수정하여 server관련 method를 사용해보자

process_parameter.jsp
<%@ 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>
<%

	String method = request.getMethod(); //get, post방식을 확인할 수 있는 method
	request.setCharacterEncoding("UTF-8");

	//값이 하나가 반환될 때, request.getParameter _ String
	String id = request.getParameter("id");
	String pwd = request.getParameter("pwd");
	String name = request.getParameter("irum");
	
	//값이 여러개가 반환될 때, request.getParameterValues _ String[]
	String[] hobby = request.getParameterValues("hobby");
	
	String gender = request.getParameter("gender");
	String job = request.getParameter("job");
	String info = request.getParameter("info");
	

%>
<p>요청방식 : <%=method %></p>
<p>요청정보 길이 : <%=request.getContentLength() %></p>
<p>요청 URL : <%=request.getRequestURL() %></p>
<p>요청 URI : <%=request.getRequestURI() %></p>
<p>서버이름 : <%=request.getServerName() %></p>
<p>서버포트 : <%=request.getServerPort() %></p>

<hr>

<p>ID : <%=id %></p>
<p>PWD : <%=pwd %></p>
<p>이름 : <%=name %></p>
<p>취미 :
<%
	if(hobby != null){
		for(String h: hobby){
			out.print(h + " ");
		}
	}
%>
</p>
<p>성별 : <%=gender %></p>
<p>직업 : <%=job %></p>
<p>자기소개 : <%=info %></p>
</body>
</html>


 

 

 

 

 

 

 

 

 

쉽게 배우는 JSP 웹 프로그래밍