다연이네

[days04] 웹 어플리케이션의 4가지의 영역(scope) 본문

JSP

[days04] 웹 어플리케이션의 4가지의 영역(scope)

 다연  2020. 12. 28. 21:57
반응형

웹 어플리케이션의 4가지의 영역(scope)

1. page scope - 하나의 JSP 페이지에서만 사용할 수 있는 영역             (pageContext 기본 객체)
2. request scope - 하나의 요청[request]에서만 사용할 수 있는 영역      (request 기본 객체)
3. session scope - 하나의 웹 브라우저에서 사용할 수 있는 영역            (session 기본 객체)
4. application scope - 웹 어플리케이션(웹사이트) 영역                     (application 기본 객체)

setAttribute()
getAttribute()
removeAttribute()
getAttributenames() - 모든 속성 목록 얻어오기 (pageContext 제공x)

 

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ex06_02.jsp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>
<%
	String name = "admin";
	pageContext.setAttribute("user_name", name);
	//현재 페이지에서만 user_name 사용
	pageContext.getAttribute("user_name"); //같은 페이지에서는 가져와서 써도 됨
	//다른 페이지로 가게 되면 인식 불가
	
	int age = 20;
	request.setAttribute("age", age);
	
	String addr = "경기도 남양주 호평동";
	session.setAttribute("addr", addr);
	//세션이 죽기 전까지는 기억하겠다
	
	application.setAttribute("passwd", "1234");
	//웹사이트가 죽기 전까지 다른 사람도 접근 가능하고 살아있음
	//모든 클라이언트들이 공유해서 사용할 (톰캣이 죽기 전까지는) 값
	//여기에 무조건 담아두면 서버 성능 떨어질 수밖에 (+세션도)
	
	String path = "ex06_ok.jsp";
	RequestDispatcher dispatcher = request.getRequestDispatcher(path);
	dispatcher.forward(request, response);
	
%>
</body>
</html>

ex06_ok.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ex06_ok.jsp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>
<h3>ex06_ok.jsp</h3>

user_name : <%=request.getAttribute("user_name") %><br>
<!-- 코딩 오류는 안나지만 인식 못함 (pageContext : 해당 페이지에서만 사용 가능) -->
age : <%=request.getAttribute("age") %><br>
addr : <%=session.getAttribute("addr") %><br>
passwd : <%=application.getAttribute("passwd") %><br>

<a href="ex06.jsp">ex06.jsp</a>

</body>
</html>

ex06.jsp

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="">
<style>
</style>
<script>
   $(document).ready(function (){     
   });
</script>
</head>
<body>
 
 <h3>ex06</h3>
age : <%=request.getAttribute("age") %><br>
<!-- 새로운 요청이 일어나면 유지가 안되기 때문에 null 나온다 -->
addr : <%=session.getAttribute("addr") %><br>
<!-- 세션에 담으면 브라우저가 닫히기 전에는 사라지지 않는다 
(언제 정확히 닫히는지 모른다=> 강제 세션 종료 코딩 전에는 모름 (기본20분))  -->
passwd : <%=application.getAttribute("passwd") %><br>
</body>
</html>

반응형
Comments