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>
'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 |