1. 내장 객체란?
- JSP 프로그램코드에서 프로그래머가 선언하지 않아도 사용할 수 있는 미리 선언된 객체를 의미한다.
- 스크립트(<%…%>) 안에서만 사용할 수 있다.
- 웹 어플리케이션은 네 개의 영역을 가지고 있다.
- PAGE영역: 하나의 JSP페이지를 처리할 때 사용되는 영역, pageContext기본객체
- REQUEST 영역: 하나의 HTTP 요청을 처리할 때 사용되는 영역(처리하는데 사용되는 모든 JSP페이지) , request기본객체
- SESSION 영역: 하나의 웹 브라우저와 관련된 영역, session기본객체
- APPLICATION 영역: 하나의 웹 어플리케이션과 관련된 영역 (모든 JSP 페이지, 모든 요청, 모든 브라우저 세션), application기본객체
2. 내장객체 종류
1) 내장객체의 종류
- request: 사용자 요청 처리
- response: 처리결과 응답
- pageContext: 페이지의 정보
- session: 사용자별(로그인, ) 세션접오
- application: 전체 웹 어플리케이션
- config: 초기화 설정
- out: 브라우저에 표시 → HTML
- exception: 예외
- page: 현재 페이지 설정
2) request객체
- 사용자 요청 정보를 처리
- HTML 폼을 통해 정달되는 값을 가져올 때
- HTTP요청 다체에 담겨 있는 정보를 가져올 때 사용
- request.getParameterNames() : 요청받은 파라미터 이름들
- request.getParameter(String): 요청받은 파라미터 name의 값(value)
- requst.getParameterValuse(): 여러 요청 파라미터 name값 → 배열
- 코드
<%@ 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>
쿠키: <%=request.getCookies() %> <br />
GET, POST: <%=request.getMethod() %> <br />
session객체: <%=request.getSession() %> <br />
IP: <%=request.getRemoteAddr() %> <br />
서버 호스트 이름: <%=request.getServerName() %> <br />
서버포트: <%=request.getServerPort() %> <br />
요청 URL: <%=request.getRequestURI() %> <br />
요청 URL 쿼리 스트링: <%=request.getQueryString() %> <br />
요청에 대한 기본 패스 항상"/" 시작: <%=request.getContextPath() %> <br />
요청 캐릭터 셋: <%=request.getCharacterEncoding()%> <br />
헤더의정보<br />
접속정보: <%=request.getHeader("referer") %> <br />
접속정보: <%=request.getHeader("user-agent") %> <br />
접속정보: <%=request.getHeader("host") %> <br />
접속정보: <%=request.getHeader("WL-Proxy-Client-IP") %> <br />
접속정보: <%=request.getHeader("Proxy-Client-IP") %> <br />
접속정보: <%=request.getHeader("X-Forvarded-For") %> <br />
</body>
</html>
- response 기본 객체의 응답 형식 지정 메소드
- 컨텐츠 타입이나 문자셋에 대한 정보를 지정할 때 사용하는 메소드이다.
- setContentType(String): 요청에 대한 응답 → MIME타입을 지정, 부가적으로 글자의 인코딩 지정
- getCharacterEncoding() : 응답하는 내용의 글자 인코딩 형태를 구함
- response객체의 리다이렉트 가능
- response객체에서 많이 사용되는 기능 중에 하나가 리다이렉트 기능이다.
- 웹 서버가 웹 브라우저에게 지정한 페이지로 이동하도록 지시한다.
- 리다이렉트 기능은 주로 록드인 과정에서 사용된다.
- 로그인 성공시 바로 이동 → login.html
- 페이지의 헤더 정보를 입력하는 용도, 페이지를 리다이렉트하는 용도로 많이 사용된다.
- response객체가 제공하는 주요 메소드
- response.sendRedirect(”이동할 주소”);
- reponse.sendRedirect(String location): 현재 페이지에서 다른 페이지 (”지정한 url”)로 이동한다.
3) pageContext객체
- request기본객체를 반환 <%=pageContext.getRequest()%>
- response기본객체를 반환 <%=pageContext.getResponse() %>
- session기본객체를 반환 <%=pageContext.getSession() %>
- application기본객체를 반환 <%=pageContext.getServletContext() %>
- config기본객체를 반환 <%=pageContext.getServletConfig() %>
- out기본객체를 반환 <%=pageContext.getOut() %>
- Exception기본객체를 반환 <%=pageContext.getException() %>
- Page기본객체를 반환 <%=pageContext.getPage() %>
4) session 객체
Spring Boot Project → Spring Security(권한, 인가)
4-1) 세션이란?
- 클라이언트 상태를 유지하기 위한 방법
- session: 서버측의 컨테이너에 저장
- Cookie: 클라이언트의 웹 브라우저에 저장
- 세션은 쿠키를 기반 → 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리
- 서버에는 클라이언트를 구분하기 위해 세션 ID를 부여
- 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지
- 접속 시간에 제한을 두어 일정시간 응답이 업ㄱ다면 세션을 귾도록 설정이 가능
- 사용자에 대한 정보를 서버에 저장하기 때문에 쿠킺보다 보아넹 좋다.
- 사용자가 많아질수록 서버 메모리를 많이 차지( 과부하를 주게 되므로 성능 저하의 요인)
4-2) 세션의 동작방식
- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장 (쿠키이름 → JSESSIONID이다.)
- 클라이언트가 서버에 다시 접속 시 이 쿠키를 ㅣ용해서 세션 ID값을 서버에 전달
4-3) 세션의 특징
- 각 클라이언트에게 고유 ID → 세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스 제공 → 쿠키보다 보안이 우수 → 사용자 증가로 인한 서버 메모리를 많이 차지
4-4) 세션의 사용 예
- 로그인과 같이 보안상 중요한 작업을 수행할 때 사용
- 세션은 쿠키를 기반으로 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 서버측에서 관리한다.
- 서버에서는 클라이언트를 구분하기 위해 세션ID를 부여한다.
- 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때까지 인증상태를 유지한다.
- 접속 시간에 제한을 두어 일정시간 응답이 없다면 세션을 끊도록 설정이 가능하다.
- 사용자에 대한 정보를 서버에 저장하기 때문에 쿠키보다 보안에 좋다.
- 사용자가 많아질수록 서버 메모리를 많이 차지( 과부하를 주게 되므로 성능 저하의 요인)
4-5) HTTP의 특징과 쿠키와 세션을 사용하는 이유
- 서버와 클라이언트가 통신을 할 때마다 서버는 클라이언트가 누구인지 인증
- HTTP프로토콜이 connectionsless, stateless한 특성이 있기 때문
- Connectionless: 클라이언트가 요청을 한 후 응답을 받으면 그연결을 끊어버리는 특징
- Stateless: 통신이 끝나면 상태를 유지하지 않는 특징
- 쿠키와 세션을 사용햇을 경우에는 최초 로그인을 하면 서버가 그 사용자에 대한 인증을 유지
5) 쿠키(Cookie)
5-1) 쿠키(Cookie)란?
- 쿠키: 클라이언트 측 (브라우저)에서 관리되는 작은 기록 정보 파일
- 쿠키에는 사용자 인증이 유효한 시간을 명시할 수 있으면 한 번 유효 시간이 정해지면 브라우저를 끄더라도 인증이 유지
5-2) 쿠키 구성요소
- 이름: 각각의 쿠키를 구별하는 데 사용
- 값: 쿠키가 가지고 있는 값
- 유효시간: 쿠키 유지시간
- 도메인: 쿸키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
5-3) 쿠키의 사용 예시
5-4) 쿠키와 세션차이
- 쿠키와 세션은 비슷한 역할을 하며, 동작원리도 비슷 → 세션도 결국 쿠키를 사용
- 가장 큰 차이점은 저장위치이다.
- 보안면에서 세션이 더 우수
- 요청 속도는 쿠키가 빠르가 (세션은 서버에서의 처리)