๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring/Boost Course Web

2.5 Scope

1) scope๋ž€?

 

4๊ฐ€์ง€ Scope

  • page : ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ง€์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ

pageContext (์˜ˆ์‹œ ใ…‡)

  • Request : http์š”์ฒญ์„ WAS๊ฐ€ ๋ฐ›์•„์„œ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์‘๋‹ตํ•  ๋•Œ๊นŒ์ง€ ๋ณ€์ˆ˜๊ฐ€ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ

ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ๋“ค์–ด์™€์„œ ์‘๋‹ต์ด ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ 

HttpServletRequest 

  • Session : ์›น ๋ธŒ๋ผ์šฐ์ € ๋ณ„๋กœ ๋ณ€์ˆ˜๊ฐ€ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ

session ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์†Œ๋ฉธ๋  ๋•Œ๊นŒ์ง€ (์š”์ฒญ์ด ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์ฒญ์ด ๋“ค์–ด์™€๋„ ๊ณ„์† ๋‚จ์•„์žˆ๋Š”) 

์ƒํƒœ์œ ์ง€๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” scope, 

HttpSession

  • Application : ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ณ€์ˆ˜๊ฐ€ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ

ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ƒ์„ฑ๋˜์–ด ์ด๊ฒŒ ์†Œ๋ฉธ๋  ๋•Œ๊นŒ์ง€ 

ServletContext (์˜ˆ์‹œ ใ…‡)



2) page scope

Page Scope

  • PageContext ์ถ”์ƒ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • JSP ํŽ˜์ด์ง€์—์„œ pageContext๋ผ๋Š” ๋‚ด์žฅ ๊ฐ์ฒด๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. 

--> pageContext.setAttribute .getAttribute ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ

  • forward๊ฐ€ ๋  ๊ฒฝ์šฐ ํ•ด๋‹น Page scope์— ์ง€์ •๋œ ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์ชฝ์—์„œ ์š”์ฒญ์„ ๋ณด๋ƒˆ์„ ๋•Œ ํ•˜๋‚˜์˜ jsp๋“  ์„œ๋ธ”๋ฆฟ์ด๋“  ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๊ฑฐ๋ž€ ๋ง์ด์—์š” ์ด ํ•ด๋‹น ์š”์ฒญ์„ ๋ฐ›์€ ํŽ˜์ด์ง€ ํ•˜๋‚˜๋‹น pageContext๊ฐ€ ํ•˜๋‚˜์”ฉ ์ƒ๊ธฐ๋Š” ๊ฑฐ๋‹ค, ์ด ํŽ˜์ด์ง€๊ฐ€ ์ด์šฉ๋  ๋•Œ๊นŒ์ง€๋งŒ

  • ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ Application scope๋‚˜ Session scope, request scope์™€ ๊ฐ™๋‹ค. ์ด๊ฒŒ ๋ญ”๋ฐ?

  • ๋งˆ์น˜ ์ง€์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ Scope๋“ค๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

  • jsp์—์„œ pageScope์— ๊ฐ’์„ ์ €์žฅํ•œ ํ›„ ํ•ด๋‹น ๊ฐ’์„ ELํ‘œ๊ธฐ๋ฒ• ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์ง€์—ญ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ํ•ด๋‹น jsp๋‚˜ ์„œ๋ธ”๋ฆฟ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ์—๋งŒ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

 

pageContext๋ผ๋Š” ์ถ”์ƒํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. >> JSPํŽ˜์ด์ง€์—์„œ๋Š” pageContext๋ผ๋Š” ๋‚ด์žฅ๊ฐ์ฒด๋กœ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

์ฐจ์ด์ 

request๊ฐ์ฒด๋Š” ์š”์ฒญ์ด ๋“ค์–ด์™”์„ ๋•Œ request๊ฐ์ฒด๊ฐ€ ํ•œ๊ฐœ ์ƒ๊ธฐ๊ณ ,  ์š”์ฒญ์ด ๋๋‚  ๋•Œ ๊นŒ์ง€ ์œ ์ง€๋˜์ง€๋งŒ, pageContext๋Š” 1๋ฒ„์˜ ์š”์ฒญ์„ ๋ฐ›์•˜๋‹ค๋ผ ํ–ˆ์„ ๋•Œ ์š”์ฒญ ๋ฐ›์€ ํŽ˜์ด์ง€ ํ•˜๋‚˜๋‹น pageContext๊ฐ€ ํ•œ๊ฐœ์”ฉ ์ƒ๊ธด๋‹ค.(์ด ํŽ˜์ด์ง€๊ฐ€ ์ด์šฉ๋  ๋•Œ ๊นŒ์ง€๋งŒ)

>> forward๋˜๋Š” ๊ฒฝ์šฐ page scope์— ์ง€์ •๋œ ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

์ง€์—ญ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋‹ค๋ฅธ scope์™€๋Š” ๋‹ค๋ฅด๋‹ค.

 

 

3) request scope

Request Scope

  • http ์š”์ฒญ์„ WAS๊ฐ€ ๋ฐ›์•„์„œ ์›น ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์‘๋‹ตํ•  ๋•Œ๊นŒ์ง€ ๋ณ€์ˆ˜๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

  • HttpServletRequest ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • JSP์—์„œ๋Š” request ๋‚ด์žฅ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์„œ๋ธ”๋ฆฟ์—์„œ๋Š” HttpServletRequest ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (doGet doPost ๋ฉ”์„œ๋“œ ์•ˆ์— ์ธ์ž๋กœ ๋“ค์–ด์™”์—ˆ๋˜ ํ•ด๋‹น ๊ฐ์ฒด์— ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉ)

  • ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” request ๊ฐ์ฒด์˜ setAttribute()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ฐ’์„ ์ฝ์–ด ๋“ค์ผ ๋•Œ๋Š” request ๊ฐ์ฒด์˜ getAttribute()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • forward ์‹œ ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ ์ž ์‚ฌ์šฉํ•œ๋‹ค.

  • ์•ž์—์„œ forward์— ๋Œ€ํ•˜์—ฌ ๋ฐฐ์šธ ๋•Œ forward ํ•˜๊ธฐ ์ „์— request ๊ฐ์ฒด์˜ setAttribute() ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ’์„ ์„ค์ •ํ•œ ํ›„, ์„œ๋ธ”๋ฆฟ์ด๋‚˜ jsp์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜์˜€๋Š”๋ฐ ์ด๋ ‡๊ฒŒ ํฌ์›Œ๋“œ ๋˜๋Š” ๋™์•ˆ ๊ฐ’์ด ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด Request scope๋ฅผ ์ด์šฉํ–ˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

4) session scope

Session Scope

  • ์›น ๋ธŒ๋ผ์šฐ์ €๋ณ„๋กœ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ„์˜ ํƒญ ๊ฐ„์—๋Š” ์„ธ์…˜์ •๋ณด๊ฐ€ ๊ณต์œ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ๊ฐ์˜ ํƒญ์—์„œ๋Š” ๊ฐ™์€ ์„ธ์…˜์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. (๋‹ค๋ฅธ ์ฐฝ์ด์ง€๋งŒ ๋กœ๊ทธ์ธ ์ •๋ณด๋Š” ์œ ์ง€๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ)

  • HttpSession ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • JSP์—์„œ๋Š” session ๋‚ด์žฅ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์„œ๋ธ”๋ฆฟ์—์„œ๋Š” HttpServletRequest์˜ getSession()๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ session ๊ฐ์ฒด๋ฅผ ์–ป๋Š”๋‹ค.

  • ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” session ๊ฐ์ฒด์˜ setAttribute()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๋‹ค๋ฅธ ์Šค์ฝฅ ๋ชจ๋‘)

  • ๊ฐ’์„ ์ฝ์–ด ๋“ค์ผ ๋•Œ๋Š” session ๊ฐ์ฒด์˜ getAttribute()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.(๋‹ค๋ฅธ ์Šค์ฝฅ ๋ชจ๋‘)

  • ์žฅ๋ฐ”๊ตฌ๋‹ˆ์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž๋ณ„๋กœ ์œ ์ง€๊ฐ€ ๋˜์–ด์•ผ ํ•  ์ •๋ณด๊ฐ€ ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €๋‹ค. ํด๋ผ์ด์–ธํŠธ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๊ฐ์ฒด(๊ณต๊ฐ„)๋ฅผ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌ(์œ ์ง€)ํ•˜๋Š” ๊ฒƒ์ด ์„ธ์…˜.

์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

5) application scope

Application Scope

  • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹œ์ž‘๋˜๊ณ  ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ServletContext ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • jsp์—์„œ๋Š” application ๋‚ด์žฅ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•œ๋‹ค.

int value = (int)application.getAttribute("value");

value += 2;

application.setAttribute("value", value);

 

  • ์„œ๋ธ”๋ฆฟ์˜ ๊ฒฝ์šฐ๋Š” getServletContext()๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ application๊ฐ์ฒด๋ฅผ ์ด์šฉํ•œ๋‹ค.   

ApplicationScope01.java           

ServletContext application = getServletContext();

int value = 1;

application.setAttribute("value", value);

ApplicationScope02.java

ServletContext application = getServletContext();

try {

int value = (int)application.getAttribute("value");

value++;

application.setAttribute("value", value);

 

  • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ•˜๋‚˜๋‹น ํ•˜๋‚˜์˜ application๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. 

  • ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋Š” application๊ฐ์ฒด์˜ setAttribute()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๊ฐ’์„ ์ฝ์–ด ๋“ค์ผ ๋•Œ๋Š” application๊ฐ์ฒด์˜ getAttribute()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•  ๊ฐ’๋“ค์ด ์žˆ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

ํ”„๋กœ์ ํŠธ ํ•˜๋‚˜๋ฅผ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. firstWeb, exam25, exam31 ๊ฐ๊ฐ ํ•˜๋‚˜ ์”ฉ

 

 

 

์‹ค์Šต์ฝ”๋“œ

ApplicationScope01.java

 

package examples;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

* Servlet implementation class ApplicationScope01

*/

@WebServlet("/ApplicationScope01")

public class ApplicationScope01 extends HttpServlet {

   private static final long serialVersionUID = 1L;

     

   /**

    * @see HttpServlet#HttpServlet()

    */

   public ApplicationScope01() {

       super();

   }

   /**

    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

    */

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       response.setContentType("text/html; charset=UTF-8");

      

       PrintWriter out = response.getWriter();

      

       ServletContext application = getServletContext();

       int value = 1;

       application.setAttribute("value", value);

           

       out.println("<h1>value : " + value + "</h1>");

   }

}

 

 

ApplicationScope02.java

 

 

@WebServlet("/ApplicationScope02")

public class ApplicationScope02 extends HttpServlet {

   private static final long serialVersionUID = 1L;

     

   /**

    * @see HttpServlet#HttpServlet()

    */

   public ApplicationScope02() {

       super();

       // TODO Auto-generated constructor stub

   }

 

   /**

    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

    */

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       response.setContentType("text/html; charset=UTF-8");

      

       PrintWriter out = response.getWriter();

      

       ServletContext application = getServletContext();

      

      

       try {

           int value = (int)application.getAttribute("value");

           value++;

           application.setAttribute("value", value);

           out.println("<h1>value : " + value + "</h1>");

       }catch(NullPointerException ex) {

           out.println("value๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");

       } 

   }

}

 

applicationscope01.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

   pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<%

   try{

       int value = (int)application.getAttribute("value");

       value = value + 2;

       application.setAttribute("value", value);

%>

       <h1><%=value %></h1>

<%       

   }catch(NullPointerException ex){

%>

       <h1>์„ค์ •๋œ ๊ฐ’์ด ์—†์Šต๋‹ˆ๋‹ค.</h1>

<%       

   }

%>

 

</body>

</html>

 

'Spring > Boost Course Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

3.2 Spring Test  (0) 2020.11.19
3.1 Spring Core  (0) 2020.11.19
2.6 JSTL & EL  (0) 2020.11.19
2.4 JSP  (0) 2020.11.19
2.3 Servlet  (0) 2020.11.19
2.2 ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ •  (0) 2020.11.19