JSP 2023.3.28

문우림·2023년 3월 28일
0

JSP

목록 보기
3/4
post-thumbnail

지시자

  • 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" />
	<!-- 요기에서 실행을 멈추고 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 개념

0개의 댓글