티스토리 뷰
CHAPTER 5
CHARPTER 5 : 내장 객체
- 내장 객체
- request
- response
- out
내장객체
: JSP페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체이다.
#속성 처리 메소드
- setAttribute : 해당 내장 객체의 속성 이름이 name인 속성 값을 value로 저장
- getAttribute : 해당 내장 객체의 속성 이름이 name인 속성 값을 가져온다.
- removeAttribute : 해당 내장 객체의 속성 이름이 name인 속성을 삭제
- getAttributeNames : 해당 내장 객체의 모든 속성 이름을 가져온다.
##request 내장 객체
: 웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장
요청 파라미터 메소드
- getParameter : 요청 파라미터 이름이 name인 값을 전달 받는다.
- getParameterValues : 모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달받음
- getParameterNames : 모든 요청 파라미터의 이름과 값을 Enumeration 객체 타입으로 전달받음
- getParameterMap : 모든 요청 파라미터의 이름과 값을 Map 객체 타임으로 전달받음
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<form action="request01_pocess.jsp" method="post">
<p>아이디 : <input type="text" name="id">
<p>비밀번호 : <input type="text" name="passwd">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
=================================
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("id");
String password = request.getParameter("passwd");
%>
<p> 아이디 : <%= userid %>
<p> 비밀번호 : <%= password %>
</body>
</html>
: form 태그를 작성하여 input 태그를 이용해 아이디와 비밀번호를 입력받는다.
input 태그의 name 속성 값을 보낸다.
인코딩 메소드를 request를 사용하여 한글이 깨지지 않도록 한다.
userid 를 request.getParameter로 하여 name="id" 속성 값을 받는다.
password를 request.getParameter로 하여 name="passwd" 속성 값을 받는다.
# 요청 HTTP 헤더 관련 메소드
: 웹 브라우저는 HTTP 헤더에 부가적인 정보를 담아 서버로 전송.
request 내장 객체는 헤더 정보나 쿠키 관련 정보를 얻을 수 있는 메소드를 제공.
<%@ page contentType = "text/html; charset=utf-8" %>
<%@ page import="java.util.Enumeration" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
Enumeration en = request.getHeaderNames();
while(en.hasMoreElements()){
String headerName = (String) en.nextElement();
String headerValue = request.getHeader(headerName);
%>
<%=headerName%> : <%=headerValue%><br>
<%
}
%>
</body>
</html>
모든 헤더 이름을 가져오록 request 내장 객체 getHeaderNames 메소드를 작성하고, Enumeration 객체 타입의 변수에 저장한다.
en 변수의 hasMoreElements 메소드를 통해 저장된 헤더 이름이 있을 때 까지 반복한다.
현재의 헤더 이름을 가져오도록 nextElement 메소드를 작성한다
#웹 프라우저 / 서버 관련 메소드
request 내장 객체는 웹 브라우저의 요청 및 서버 관련 정보를 얻을 수 있는 메소드를 제공한다.
- getRemoteAddr : 웹 브라우저의 ip주소를 가져온다.
- getContentLength : 웹 브라우저의 요청 파라미터의 길이 가져옴
- getCharacterEncoding : 웹 브라우저의 문자 인코딩을 가져옴
- getContentType : 웹 브라우저의 콘텐츠 유형을 가져옴
- getMethod : 웹 브라우저의 HTTP 요청 메소드 GET, POST 를 가져옴
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<form action="request02_process.jsp" method="post">
<p>아이디 : <input type="text" name="id">
<p>비밀번호 : <input type="text" name="passwd">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
============================
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("id");
String password = request.getParameter("passwd");
%>
<p> 아이디 : <%= userid %><br>
비밀번호 : <%= password %><br>
요청 정보 길이 :<%=request.getContentLength() %> <br>
클라이언트 전송 방식 : <%=request.getMethod() %><br>
요청 URI : <%=request.getRequestURI() %><br>
서버 이름 : <%=request.getServerName() %><br>
서버 포트 : <%=request.getServerPort() %><br>
</body>
</html>
출력문 태그 안에 request서버 관련 메소드를 이용하여 정보를 얻어 올 수 있다.
##response 내장 객체
: response 내장 객체는 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장한다.
즉, 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보낸다.
#페이지 이동 관련 메소드
: 사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동하는 것을 리다이렉션 이라고 한다.
서버는 웹 브라우저에 다른 페이지로 강제 이동하도록 reponse 내장 객체의 리다이렉션 메소드를 제공한다.
페이지 이동 시에 문자 인코딩을 알맞게 설정해야한다.
※페이지 이동방법
- forward <jsp:forward page="이동할 페이지" />
: 현재 JSP페이지에서 이동할 url로 요청 정보를 그대로 전달하므로 최초의 정보가 이동된 url에서도 유효하다.
- redirect : response.sendRedirect("이동할 페이지")
: 현재 JSP페이지로부터 이동할 URL을 웹 브라우저로 반환한다. 사용자가 새로운 페이지를 요청한 것과 같은 방식
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<form action="response01_process.jsp" method="post">
<p> 아이디 : <input type="text" name = "id">
<p> 비밀번호 : <input type="text" name="passwd">
<input type="submit" value="전송">
</form>
</body>
</html>
===================================
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("id");
String password = request.getParameter("passwd");
if(userid.equals("asd") && password.equals("1234")){
response.sendRedirect("response01_success.jsp");
} else {
response.sendRedirect("response01_fail.jsp");
}
%>
</body>
</html>
================
로그인 실패
================
로그인 성공
폼 태그를 이용해 아이디와 비밀번호를 작성하면 -> request.getParameter로 해당 name의 속성값을 받아온다.
->equals() 메소드를 사용하여 입력한 아이디와 비밀번호가 같은지 확인한 후 -> response.sendRedirect 메소드를 사용하여 성공/실패 jsp 페이지로 이동시킨다.
#응답 HTTP 헤더 관련 메소드
: 서버가 웹 브라우저에 응답하는 정보에 헤더를 추가하는 기능을 제공한다.
헤더 정보에는 주로 서버에 대한 정보가 저장
#응답 콘텐츠 관련 메소드
: response 내장 객체는 웹 브라우저로 응답하기 위해 MIME 유형, 문자 인코딩, 오류 메시지, 상태 코드 등을 설정하고 가져오는 응답 콘텐츠 관련 메소드를 제공한다.
## out 내장 객체
: out 내장 객체는 웹 브라우저에 데이터를 전송하는 출력 스트림 객체이다.
out 내장 객체는 스크립틀릿 태그에 사용하여 단순히 값을 출력하는 표현문태그<%= %> 와 같은 결과를 얻을 수 있다.
- print(String str) : 설정된 str 값을 웹 브라우저에 출력
- println(String str) : 설정된 str 값을 웹 브라우저에 출력
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
out.println("오늘의 날짜 및 시각" + "<br>");
out.println(java.util.Calendar.getInstance().getTime());
%>
</body>
</html>
=================================
<%@ page contentType = "text/html; charset=utf-8" %>
<html>
<head>
<title>Implicit Objects</title>
</head>
<body>
<%
request.setCharacterEncoding("utf-8");
String userid = request.getParameter("id");
String password = request.getParameter("passwd");
%>
<p> 아이디 : <% out.println(userid); %>
<p> 비밀번호 : <% out.println(password); %>
</body>
</html>