국비 51-1

냐아암·2023년 7월 3일
0

국비

목록 보기
66/114

SCOPE (servlet/jsp 내장 객체와 범위)

  1. page scope : 현재 페이지
    -> 현재 Servlet 또는 현재 JSP 에서만 사용 가능
    (1페이지서만 값이 유지됨)

  2. request scope
    -> 요청 받은 Servlet/JSP + 요청 위임한 Serlvet/JSP
    (2페이지 이상에서 값이 유지됨)

  3. session scope
    -> 사이트에 접속한 브라우저당 1개씩 생성.
    같은 브라우저 끼리 공유.
    브라우저 종료 또는 세션 만료 시 소멸.
    브라우저가 종료되지 않거나 세션이 만료되지 않으면 계속 유지.

  • 원리 간단 설명 :
    클라이언트가 서버 접속
    -> 클라이언트 접속한 브라우저 당 session 1개 생성해서 저장
    -> 브라우저 종료 시 까지 session유지
  1. application scope
    -> 하나의 웹 애플리케이션 당 1개 생성.
    -> 서버 종료 전 까지 웹 애플리케이션 어디서든 사용 가능.
        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2. Servlet/JSP 내장 객체와 범위(scope)</title>
</head>
<body>

    <h1>Servlet/JSP 내장 객체와 범위(scope)</h1>
    
    <pre>
        Servlet / JSP에는 기본적으로 내장되어있는 객체가 존재함.

        총 4종류가 존재하며 각각 영향을 미칠 수 있는 범위가 다름.

        1. page scope : 현재 페이지
        -> 현재 Servlet 또는 현재 JSP 에서만 사용 가능
           (1페이지서만 값이 유지됨)

        2. request scope
        -> 요청 받은 Servlet/JSP  +  요청 위임한 Serlvet/JSP  
           (2페이지 이상에서 값이 유지됨) 

        3. session scope
        -> 사이트에 접속한 브라우저당 1개씩 생성.
           같은 브라우저 끼리 공유.
           브라우저 종료 또는 세션 만료 시 소멸.
           브라우저가 종료되지 않거나 세션이 만료되지 않으면 계속 유지.

        - 원리 간단 설명 : 
            클라이언트가 서버 접속 
            -> 클라이언트 접속한 브라우저 당 session 1개 생성해서 저장
            -> 브라우저 종료 시 까지 session유지

        4. application scope
            -> 하나의 웹 애플리케이션 당 1개 생성.
            -> 서버 종료 전 까지 웹 애플리케이션 어디서든 사용 가능.
    </pre>

    
    <!-- a태그를 이용한 페이지 전환도 요청(GET 방식)이다! -->
    <a href="EL/scope">내장 객체 범위 확인하기</a>
    
</body>
</html>

package edu.kh.jsp.controller;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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;
import javax.servlet.http.HttpSession;

@WebServlet("/EL/scope")
public class ScopeServlet extends HttpServlet {
	
	// a태그 요청은 모두 Get방식
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		/* Serlvet/JSP 내장 객체와 범위
	     * 
	     * (공통)  특정 값을
	     * 
	     * page : 현재 페이지(Servlet/JSP)에서만 사용 가능
	     * 
	     * request : 현재 Servlet + 요청 위임한 JSP에서 사용 가능
	     * 
	     * session : 현재 켜져있는 브라우저가 종료되기 전까지 어디서든 사용 가능
	     *          (ex. 로그인)
	     * 
	     * application : 배포한 웹 애플리케이션이 종료되기 전까지 어디서든 사용 가능
	     *              (서버가 꺼질 때 까지 유지)
	     * 
	     * */
		
		// 1. page (생략)
		
		// 2. request scope
		req.setAttribute("message", "request scope에 저장된 메세지 입니다.");
		
		// 3. session scope
		// 3-1) HttpSession 내장 객체 얻어오기
		HttpSession session = req.getSession();
		
		// 3-2) session 범위로 값 세팅(request와 방법 동일)
		session.setAttribute("sessionValue", "999");
		session.setAttribute("message", "session scope에 저장된 메세지 입니다.");
		
		// 4. application scope
		// 4-1) ServletContext 내장 객체 얻어오기
		ServletContext application = req.getServletContext();
		
		// 4-2) application 범위로 값 세팅(request와 방법 동일)
		application.setAttribute("appValue", "세미 프로젝트 파이팅");
		application.setAttribute("message", "application scope에 저장된 메세지 입니다.");
		
		// JSP로 요청 위임
		String path="/WEB-INF/views/el/scopeResult.jsp";
		RequestDispatcher dispatcher = req.getRequestDispatcher(path);
		
		dispatcher.forward(req, resp);
		
	}

}
profile
개발 일지

0개의 댓글