본문 바로가기

JSP

[JSP] JSP의 내장 객체

728x90

request 객체 (클라이언트 -> 서버)
- 웹 브라우저의 요청 정보를 저장하고 있는 객체(사용자 정보)

메소드
getHeader() : 요청 정보의 헤더 정보를 반환
getMethod() : 요청 정보의 HTTP Method를 반환
getParameter() : 요청 정보의 이름(name 값)으로 요청 값을 반환
setCharacterEncoding() : 요청 정보의 인코딩을 설정
setParameterValues() : 요청 정보의 이름으로 요청 값을 배열로 반환


response 객체 (서버 -> 클라이언트)
- 웹 브라우저의 요청에 대한 응답 정보를 저장하고 있는 객체

 

 쿠키(Cookie)
- 클라이언트에 사용자 정보를 저장
- 클라이언트에 저장하므로 서버의 부하를 줄일 수 있지만 보안상 위험
- 데이터의 저장이 1.2mb로 제한되어 있음
- 문자열로 저장


쿠키 생성 방법

Cookie 객체명 = new Cookie("키", "값");



쿠키 시간을 설정하는 방법

setMaxAge() : 쿠키가 유지되는 시간을 설정(초);

setMaxAge(60 * 60 * 24 * 30); // 30일



쿠키를 서버에서 읽어오는 방법

Cookie[] 배열명 = request.getCookies();

 

 

쿠키 생성 및 설정

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	Cookie cookie1 = new Cookie("userid", "apple");
	Cookie cookie2 = new Cookie("name", "김사과");
	
	cookie1.setMaxAge(180); // 3분
	cookie2.setMaxAge(180); // 3분
	
	response.addCookie(cookie1); // 사용자에게 쿠키 심음
	response.addCookie(cookie2);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키</title>
</head>
<body>
	<h2>쿠키</h2>
	<p>쿠키가 정상적으로 설정되었습니다.</p>
</body>
</html>

 

쿠키 읽기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	Cookie[] cookies = request.getCookies();
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키 읽기</title>
</head>
<body>
	<h2>쿠키 읽기</h2>
	<%
		for (Cookie cookie : cookies) {
			if ("userid".equals(cookie.getName())) {
				out.println(cookie.getName() + " : " + cookie.getValue() + "<br>");
			}
			if ("name".equals(cookie.getName())) {
				out.println(cookie.getName() + " : " + cookie.getValue() + "<br>");
			}
		}
	%>
</body>
</html>

세션(session) 객체

- 서버에 사용자 정보를 저장
- 서버상에 존재하는 객체로 브라우저 단위당 한 개씩 존재

- 쿠키에 비하여 보안이 좋음
- 웹 브라우저를 닫기 전까지 클라이언트와 연결됨 (세션아이디를 받은 쿠키는 브라우저를 닫으면 사라짐)

 

세션변수 만들기

session.setAttribute("변수명", "값");



세션 값 읽어오기

session.getAttribute("변수명");



세션 값 삭제하기

session.invalidate();

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%	
	session.setAttribute("userid", "apple"); // 세션변수 생성. 서버에 저장
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>세션</title>
</head>
<body>
	<h2>세션</h2>
	<p>세션 변수가 생성되었습니다.</p>
</body>
</html>

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% 
	String userid = null;
	if (session.getAttribute("userid") != null) {
		userid = (String)session.getAttribute("userid"); // HttpSession 형태 
	} else {
		userid = "아이디 없음";
	}
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>getSession</title>
</head>
<body>
	<h2>getSession</h2>
	<p>세션 아이디 : <%=session.getId() %></p>
	<p>아이디 : <%=userid %></p>
</body>
</html>


exception 객체
- 예외가 발생하면 특정 페이지로 이동할 수 있음
- 에러페이지에서 isErrorPage="true"로 설정

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page errorPage="9_errorPage.jsp" %><!-- 에러 발생 시 9_errorpage.jsp 페이지로 이동 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>exception 객체</title>
</head>
<body>
	<h2>exception 객체</h2>
	<%
		request.getParameter("text").toString(); // 에러 생성
	%>
</body>
</html>

 

에러 발생 시 보여질 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>500 에러</title>
<style>
	body {background-color: deepskyblue;}
	h2 {font-size: 50px; text-align: center;}
	p {text-align: center; color: gold;}
</style>
</head>
<body>
	<h2>500 에러</h2>
	<p>에러 타입 : <%=exception.getClass().getName() %></p>
	<p>에러 원인 : <%=exception.getMessage() %></p>
</body>
</html>



pageContext 객체
- jsp 페이지에 대해 1:1로 연결된 객체로 jsp 페이지당 하나의 pageContext 객체가 생성
- 다른 기본 객체들을 구할 때 사용하거나 페이지의 흐름을 제어할 때 사용

getRequest() : request 객체를 반환
getResponse() : response 객체를 반환
...
forward() : 페이지의 제어권을 다른 페이지로 넘겨줌

 

 

숨겨줄 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	pageContext.forward("10_pageContext_ok.jsp"); // 페이지를 숨기고 싶을 때 사용
%>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pageConstext 객체</title>
</head>
<body>
	<h2>pageConstext 객체</h2>
	<p>pageConstext의 forward() 메소드 예제입니다. 화면에서는 보이지 않습니다.</p>
</body>
</html>

 

대신 보여줄 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>pageContext 객체</title>
</head>
<body>
	<h2>pageContext 객체</h2>
	<p>forward() 메소드로 제어권을 받은 페이지입니다.</p>
</body>
</html>

728x90

'JSP' 카테고리의 다른 글

[JSP] session 이용한 로그인  (0) 2022.05.23
[JSP] 쿠키를 이용한 로그인  (0) 2022.05.23
[JSP] 회원가입  (0) 2022.05.10
[JSP] HTTP method(GET, POST)  (0) 2022.05.10
[JSP] JSP란?  (0) 2022.05.10