[JSP] 2021.02.05. DAY_72 JSP 내장객체 _ request
2021. 2. 5. 17:01ㆍWeb_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를 종료하기 전까지 유지
- request, application 사용해서도 상태유지를 할 수 있다
- 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 내장객체로 간단하게 출력할 수 있다
요청 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 웹 프로그래밍
'Web_Back-end > JSP' 카테고리의 다른 글
[JSP] 2021.02.09. DAY_74 파일 업로드하는 방법 (0) | 2021.02.09 |
---|---|
[JSP] 2021.02.08. DAY_73 form태그 (0) | 2021.02.08 |
[JSP] 2021.02.04. DAY_71 JSP 액션태그 자바빈즈 (0) | 2021.02.04 |
[JSP] 2021.02.04. DAY_71 JSP 액션태그 param (0) | 2021.02.04 |
[JSP] 2021.02.04. DAY_71 JSP 액션태그 include (0) | 2021.02.04 |