내장 객체 (Implicit Object)
: JSP페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체.
import문 없이, 객체 생성없이 바로 사용가능하다.
내부객체는 _jspService()메서드 내부에 있다.


1) 종류
*request : HTTP 요청 정보 저장 : javax.sevlet.http.HttpServletRequest
*response : HTTP 응답 정보 저장 : javax.sevlet.http.HttpServletReponse
*session : 웹브라우저 정보 유지를 위한 세션 정보 저장
: javax.sevlet.http.HttpSession
out : 출력할 내용을 담고 있는 출력 스트림 : javax.sevlet.jsp.jsp.jspWriter
application : 웹 어플리케이션 컨텍스트 정보 저장
pageContext : JSP 페이지 정보 저장 : javax.sevlet.jsp.PageContext
page : JSP 페이지로 구현한 자바 클래스로 JSP페이지 자체를 나타냄
: java.lang.Object
config : JSP 페이지 설정 정보 저장 :  javax.sevlet.jsp.ServletConfig
conception : JSP 페이지 예외 발생 처리 : java.lang.Throwable


2. request 객체
: 웹브라우저에서 서버의 JSP페이지로 전달하는 정보를 저장. (요청관련)

1) 기본기능
       클라이언트(사용자브라우저)와 관련된 정보 읽기 기능
       서버와 관련된 정보 읽기 기능
       클라이언트가 전송한 요청 파라미터 읽기 기능
       클라이언트가 전송한 요청 헤더 읽기 기능
       클라이언트가 전송한 쿠키 읽기 기능
       속성 처리 기능

2) 요청 파라미터 처리
: 요청 파라미터의 형태는
파라미터명 = 값
*form 태그라면 name 속성값 = 입력데이터
위와 같은 형태로 전송되며,
전송된 값을 꺼낼때는 파라미터명을 키값으로 request 객체를 이용해 
데이터를 꺼낼 수 있다.

# 메서드

입력폼에 입력한 사용자의 답을 얻어내는 요청 메서드

***String getParameter(String name)***
파라미터명이 name인 값을 리턴해줌. 없으면 null 리턴
String[] getParmeterValues(String name)* 파라미터명이 name인 값들을 배열로 리턴해줌.
(파라미터 이름이 같은 여러개의 데이터가 넘어왔을경우 : 
해당 파라미터 이름을 주고, 값을 배열로 한번에 가져오기)
ava.util.Enumeration getParameterNames() 파라미터명들 목록을 java.util.Enumeration 타입으로 리턴

 

웹 서버 브라우저 정보를 가저오는 메서드
request.getRemoteAddr() 클라이언트 IP
request.getContextPath() 컨텍스트 경로
request.getRequestURI() 요청 URI
request.getContentType() 요청정보 컨텐츠 타입
request.getCharacterEncoding() 요청정보 인코딩
request.getProtocol() 요청정보 프로토콜
request.getMethod() 요청정보 전송방식 (get, post)
request.getContentLength()  요청정보 길이
request.getServerName()  서버이름
request.getServerPort() 서버포트


*

3) 전송방식 : GET/POST
웹 브라우저에서 많이 사용하는 파라미터 전송방식 두가지
GET : URL 경로뒤에 물음표와 함께 파라미터를 붙혀 전송한다.
이를 쿼리스트링이라고한다.
각 파라미터는 파라미터명 = 값의 형태로 전송되고
파라미터가 여러개일 경우는 &(엠퍼샌드)를 구분자로 연결하여 전송한다.
브라우저에 따라 한글 get방식으로 전송시
주소창에 %...% 이런 형태의 문자로 표현될 경우가 있다.
*URL 퀘리 스트링으로 파라미터를 전송하기 때문에
폼을 사용하지 않아도 파라미터 전송
브라우저나 웹서버 또는 웹 컨테이너에 따라 
전송할 수 있는 파라미터의 길이 제한이 있을 수 있다.


POST : URL 경로뒤에 파라미터가 보이지 않는다.
데이터 영역을 이용하여 파라미터를 전송하여,
전송할 파라미터의 길이 제한이 없다.
(파일데이터는 post)

4) 요청 파라미터 인코딩

웹 브라우저는 웹서버에 파라미터를 전송할때
알맞은 캐리터 셋을 이용해서 파라미터값을 인코딩한다.
웹 서버는 알맞은 캐릭터 셋을 이용하여 그것을 디코딩한다.
-> 인코딩 / 디코딩 캐릭터셋이 일치하지 않으면 웹서버는 잘못된 파라미터값을 사용함.

[캐릭터 셋 세팅]

# Client <------ server : <%@ page 인코딩 UTF-8 (브라우저에 utf-8로 뿌린다...)
# Client ------> server : 다른곳에서 처리



 

<%@ 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>  <!-- 메모장 2번설명 pro.jsp로 받은 id/pw값 전달 -->
	<form action="pro.jsp"method="post">  <!-- post 방식으로 해야 주소창에 안뜸 get방식은 뜸 -->
		id : <input type="text" name = "id"/><br/>
		pw : <input type="password" name = "pw"/><br/>
 		좋아하는 동물 :
 			<input type="checkbox" name="pet" value="dog" /> 강아지
 			<input type="checkbox" name="pet" value="cat" /> 고양이
 			<input type="checkbox" name="pet" value="tiger" /> 호랑이
 		
 		<input type="submit" value="로그인" />	
	</form>

</body>
</html>


 

<%@ 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>
	<!-- 	request 객체에서 넘어온 데이터 꺼내기 -->
	
<%
//post 방식 인코딩 처리 : post 방식으로 요청되어 넘어오는 파라미터값이 한글일경우
//						인코딩 처리가 필요함. 파라미터를 꺼내기전에 
request.setCharacterEncoding("UTF-8");
//localhost:8080/web/jsp02/pro.jsp?id=sdd&pw=1234 -->
	//request.getPramater(name)

	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	
	// 같은 이름의 파라미터명인 값 여러게 넘어왔을경우
	String[] pets = request.getParameterValues("pet");
	
	//화면에 출력
	//out.println("id : " +id + "<br />");
	//out.println("pw : " +pw + "<br />");  
	for(int i = 0; i <pets.length; i++){
		out.println("pet : " + pets[i] + "\n");
	}

%>
<body>
		<h1> pro page</h1>
		<h2> id : <%= id %></h2>
		<h3> pw : <%= pw %></h3>
		 
		 	<% for(int i = 0; i <pets.length; i++){%>
			<h3> pet : <%= pets[i] %> </h3>
			<%}%>
		
		
</body>
</html>

+ Recent posts