지시자
- JSP페이지의 전체적인 속성을 지정할 때 사용.
- page, include, taglib가 있음.
- <%@ 속성 %> 형태
include
<%@ inclued file = 파일.jps%>
- 어느 페이지에도 넣고 싶은 내용, 기능 .jsp파일을 include를 사용해 삽입한다.
- 현재 페이지내에 다른 테이지를 삽입할 떄 사용된다. file속성 이용.
액션태그
<jsp:forward,include,param 속성 ="" />
JSP페이지 내에서 어떤 동작을 하도록 지시하는 태그.
forward(핵심 키워드)
- 현재 페이지에서 다른 특정 페이지로 전환할 때 사용.
- 현재 페이지를 다른 페이지로 덮어써버림.(주소는 안 변함)
<%@ 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>
<h1>메인 페이지입니다.</h1>
<% //디버깅 방법
System.out.println("중간 태그");
%>
<script>
console.log("콘솔 태그");
</script>
<jsp:forward page="sub.jsp" />
<script>
console.log("콘솔 태그");
</script>
<h1>꼬리말 입니다.</h1>
<script>
console.log("콘솔 태그");
</script>
</body>
</html>
param
forward와 include의 차이
forward와 redirect
forward
- web container차원에서 페이지 이동, 실제로 웹 브라우저는 다른 페이지로 이동했는지 알 수 없다.
- 웹 브라우저에는 최초에 호출한 URL만 표시되고, 이동한 페이지의 URL정보는 확인할 수 없다.
- 동일한 web container에 있는 페이지로만 이동이 가능.
- 현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request객체와 response객체를 공유한다.
- forward는 이동 할 URL로 요청정보를 그대로 전달.
- 시스템에 변화가 생기지 않는 단순 조회 요청(글 목록, 보기, 검색)의 경우 forward가 좋다.
redirect
- web container는 redirect명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라는 명령을 내린다.
- 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다.
- 다른 web container에 있는 주소로 이동이 가능.
- 새로운 페이지에서는 request, response객체가 새롭게 생성된다.
- 최초 요청을 받은 URL1에서 클라이언트에게 redirect할 URL2를 반환하고, 클라이언트에서는 새로운 요청을 생성하여 URL2에 다시 요청을 보낸다.
- 시스템에 변화가 생기는 요청(회원가입, 글쓰기)은 redirect가 좋다.
차이
- URL의 변화여부(redirect➡변화⭕ / forward➡변화❌)
- 객체의 재사용여부(redirect➡변화❌ / forward➡변화⭕)
forward와 redirect
forward와 redirect
쿠키와 세션
연결성 유지를 위한 꼼수
쿠키(Cookie)
- http프로토콜에서 만들어짐.
- 웹 브라우저와 서버와의 연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단
- 클라이언트 쪽(웹 브라우저)에 서버와 연결했다는 정보, 증거가 남아있음.
- 쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장한다.
- 쿠키는 웹 브라우저에 저장되어있다.
①request/response하면 일단 쿠키를 심어놓음.
②그 다음에 같은 클라이언트가 똑같은 서버를 접속하면 무조건 심어놓은 쿠키를 매번 같이 전달한다. ➡ 서버와의 연결이 끊겨도 기록이 남아있음.
단점
- 쿠키를 날려버리면 쿠키 저장소에 저장되어 있던 정보가 전부 날라간다.
- 보안이 약함
- 저장할 수 있는 용량 정해져있음.
➡ 용량 제한이 없는 세션을 거의 대부분 사용.
왜 나왔을까? 배경
세션(Session)
- 서버 쪽이 가지고있는 객체
- 세션(session)이란 웹 사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법
- 사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지가 세션.
- 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키값만을 클라이언트 측에 남겨둠.
- 브라우저는 필요할 때마다 이 키값을 이용하여 서버에 저장된 데이터를 사용하게 된다.
동작 원리
①session ID(32bit크기의 번호)생성 -> 서버에 저장. 메모리에 올라감.
②클라이언트 쪽 쿠키 저장소에 session ID심어놓은다.(session + cookie)
③서버에 다시 접속할 때 쿠키도 같이 전달된다. ex)다시 접속해도 로그인 상태가 유지
but 웹 브라우저가 다르면 저장된 쿠키, session ID가 없기 때문에 -
쿠키 세션
쿠키 세션
중요한 키워드
1. servlet의 원리(톰캣과의 관계)
2. forward와 redirect의 차이
3. 쿠키와 세션
4. scope -> session request pagecontext application
5. mvc1과 mvc2 개념