커리큘럼(12-30/변경)
01. Java
02. git
03. Database
04. Jsp [Server] (v)
05. 미니프로젝트 (3W)
06. HTML,CSS
07. JS
08. SpringFramework , SrpingBoot
09. React JS [Front-end]
10. 중간프로젝트 (1M)
11. Linux 명령어
12. AWS 클라우드
13. DevOps - Docker
14. App - Android
15. 최종프로젝트 (1M)
JSP
response 객체
- 웹 브라우저의 요청에 대한 응답의 정보를 가지고 있는 객체
메서드 |
기능 |
getCharacterEncoding() |
응답할 떄의 문자의 인코딩 형태를 구함 |
addCookie(Cookie c) |
쿠키를 지정 |
sendRedirect(URL) |
지정한 URL로 이동 |
if(a >= 20) {
//주류구매 페이지로 이동
response.sendRedirect("res_ex01_success.jsp");
} else {
//실패페이지로 이동
response.sendRedirect("res_ex01_fail.jsp");
}
쿠키(Cookie)
- 웹 브라우저에서 서버로 어떤 데이터를 요청하면, 서버측에서는 알맞은 로직을 수행한 후 데이터를 웹 브라우저에 응답
- Http프로토콜은 응답 후에 웹 브라우저와의 관계 종료
- 연결이 끊겼을 떄, 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식 사용
- 쿠키는 서버에서 생성하여, 서버가 아닌 클라이언트측(local)에 정보 저장
- 서버에서 요청할 때마다 쿠키의 속성값을 참조 또는 변경 가능
- 쿠키는 개당 4kb로 용량이 제한적이며, 300개(1.2Mb)까지 데이터 정보를 가질 수 있음
- 쿠키클래스에서 쿠키 생성
- setter메서드로 쿠키 속성 설정
- response객체에 쿠키 탑재
- 로컬 환경에 저장
<%
//쿠키는 서버에서 생성해서, 클라이언트로 전달합니다.
//1. 쿠키생성 - (쿠키이름, 쿠키값)
Cookie cookie = new Cookie("user_id", "aaa123");
Cookie cookie2 = new Cookie("user_name", "유진초이");
//2. 쿠키의 속성을 - 시간
cookie.setMaxAge(1800); //1800초
cookie2.setMaxAge(20); //20초
//3. 쿠키를 response에 담는다.
response.addCookie(cookie);
response.addCookie(cookie2);
%>
Cookie객체 관련 메서드
메서드 |
기능 |
setMaxAge() |
쿠키의 유효시간 설정 |
setPath() |
쿠키사용의 유효디렉토리 설정 |
setValue() |
쿠키의 값 설정 |
setVersion() |
쿠키 버전 설정 |
getMaxAge() |
쿠키 유효기간 정보를 얻음 |
getName() |
쿠키의 이름을 얻음 |
getPath() |
쿠키사용의 유효디렉토리 정보를 얻음 |
getValue() |
쿠키의 값을 얻음 |
getVersion() |
쿠키 버전을 얻음 |
<%
Cookie[] arr = request.getCookies();
String rememberMe = "";
if(arr != null) {
for(Cookie c : arr) {
if(c.getName().equals("rememberMe")) {
rememberMe = c.getValue();
}
}
}
%>
세션(Session)
- 서버와의 관계를 유지하기 위한 수단
- 서버상에 객체 형태로 존재
- 서버당 하나의 세션 객체를 가질 수 있음(브라우저 별 서로 다른 세션 사용)
- 세션 객체는 브라우저 창을 종료하면 삭제
- 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없음
- 세션은 클라이언트의 요청이 발생하면 자동생성되어 고유한 ID값을 클라이언트에 넘겨주며 이것은 쿠키에 저장
Session객체 관련 메서드
메서드 |
기능 |
setAttribute() |
세션에 데이터 저장 |
getAttribute() |
세션에 저장되어 있는 데이터를 얻음 |
getAttributeNames() |
세션에 저장되어 있는 모든 데이터 세션 이름(key)를 얻음 |
getId() |
자동 생성된 세션의 유니크한 아이디를 얻음 |
getCreationTime() |
세션이 생성된 시간을 구함 |
getLastAccessedTime() |
웹브라우저가 가장 마지막에 세션에 접근한 시간을 구함 |
setMaxInactiveInterval() |
세션의 유효시간 설정( 초 단위로 기록) |
getMaxInactiveInterval() |
세션의 유효시간을 얻음 |
removeAttribute() |
특정 세션을 삭제 |
invalidate() |
모든 세션 삭제 |
# session set
<%
//세션은 내장객체로 서버에서 생성해서 서버가 관리합니다.
//기본 30분 or 브라우저 종료 하기 까지 세션은 유지 됩니다.
//값 저장
session.setAttribute("my_id", "abc123");
session.setAttribute("my_name", "홍길자");
//세션의 시간을 설정
//session.setMaxInactiveInterval(3600); //이 세션은 1시간 동안 유지
%>
# session get
<%
//세션에 저장된 값 확인
String myId = (String)session.getAttribute("my_id"); //찾을 이름
String myName = (String)session.getAttribute("my_name");
//시간
int time = session.getMaxInactiveInterval();
%>
# session remove
<%
//세션삭제
//session.removeAttribute("my_id");
session.invalidate(); //완전히 세션객체를 삭제
//다시로그인페이지로
response.sendRedirect("login.jsp");
%>
예외 페이지
- 예외 상황 발생시 웹 컨테이너에서 제공되는 기본적인 예외페이지가 보여짐
- 기본 예외페이지가 아닌 개발자가 생성한 에러 페이지로 유도할 수 있음
HTTP 주요 응답 상태코드
404
: 요청한 URL을 찾을 수 없는 경우
500
: 서버측 내부 오류로 인해 페이지가 나타나지 않는 경우(java, jsp페이지 내의 코드오류)
200
: 요청을 성공적으로 처리
307
: 임시로 페이지 리다이렉트
400
: 클라이언트의 요청이 잘못된 구문으로 작성
405
: 요청 방식을 허용하지 않음(GET,POST)
503
: 서버가 일시적으로 서비스를 제공할 수 없음(일시적 서버 과부하, 서버 임시 보수 등)
직접 예외 처리
- 자바의 키워드인 try ~ catach를 사용해 직접 개발자가 예외 처리
에러 처리할 페이지를 따로 지정
- 에러가 발생하면 보여줄 JSP페이지는 페이지 지시자의 errorPage속성을 사용하여 지정
- 예외가 발생할 것으로 예상되는 페이지에 예외가 발생했을 때 보여줄 페이지 지정
<%@ page errorPage = "에러가 발생했을 때 보여줄 페이지.jsp"%>
- 에러 발생시 유도된 페이지에는 페이지 지시자태그로 isErrorPage 속성을 사용해 true로 값 설정
<%@ page isErrorPage="ture"%>
응답 상태 코드별로 에러 페이지 지정
- JSP는 에러 코드별로 사용할 에러 페이지를 web.xml파일 수정을 통해 지정 가능
<error-page>
<error-code>404</error-code>
<location>/errorpage/error_404.jsp</location>
</error-page>
- 페이지 지시자 태그의 errorPage속성에 지정한 페이지
- web.xml에 지정한 에러 타입에 따른 페이지
- web.xml에 지정한 응답 상태 코드에 따른 페이지
- 위 3항목에 해당하지 않을 경우 톰캣이 제공하는 에러 페이지