본문 바로가기
Backend/JAVA_WEB

11. JSP 내부객체 및 내부변수 (Scope의 종류)

by 개발개발빈이 2022. 8. 2.

○ JSP 내부객체 (참고 : JSP내부객체)

     - JSP페이지가 서블릿에서 변환될 때(.class) JSP컨테이너(Tomcat웹서버)가 자동으로 제공
     - JSP페이지 내에서 제공하는 특수한 레퍼런스(참조) 타입의 변수 
     - 객체 생성 없이 바로 사용할 수 있는 JSP의 객체

     - 내부객체 종류

        ① out

        ② pageContext : JSP페이지 자체의 Context 제공

        ③ request : 요청에 관한 정보 

        ④ response : 응답에 관한 정보

        ⑤ session : 요청에 관한 Context 제공

        ⑥ application : 서블릿 및 외부 환경 정보 Context 제공

 

○ Scope

    - 웹프로젝트에서 페이지들 간에 값을 공유하기 위해 사용

        ① pageContext : 현재 페이지 내에서만 유효, 기본값

         request : 부모페이지와 자식페이지에서만 유효

         session : 프로젝트의 모든 페이지에서 유효 (사용자 개별 접근, 시간)

         application : 프로젝트의 모든 페이지에서 유효 (모든 사용자 접근, 서버정보)

    - applicationsession : 웹프로젝트를 헬스장으로 본다면 application은 헬스장 공용공간, session은 개인사물함

 

○ JSP 내부변수

    - 내부변수 선언형식 : scope.setAttribute("변수명", 값)

pageContext.setAttribute("kor", 100);
request.setAttribute("eng", 200);
session.setAttribute("mat", 300);
application.setAttribute("uname", "손흥민");

 

    - 내부변수 값 가져오기 : scope.getAttribute("변수명"리턴값형식 Object

pageContext.getAttribute("kor");
request.getAttribute("eng");
session.getAttribute("mat");
application.getAttribute("uname");

 

    - 내부변수 삭제하기 : scope.getAttribute("변수명")

pageContext.removeAttribute("kor");
request.removeAttribute("eng");
session.removeAttribute("mat");
application.removeAttribute("uname");

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>scopeTest</title>
</head>
<body>

    <h3>내부객체 및 내부변수</h3>

<% 

    //각 내부변수에 값 올리기	
    pageContext.setAttribute("kor", 100);
    request.setAttribute("eng", 200);
    session.setAttribute("mat", 300);
    application.setAttribute("uname", "손흥민");	
	
    //내부변수 값 가져오기
    out.println(pageContext.getAttribute("kor"));
    out.println(request.getAttribute("eng"));
    out.println(session.getAttribute("mat"));
    out.println(application.getAttribute("uname"));
    out.print("<hr>");
		
    Object obj=pageContext.getAttribute("kor");  //리턴값 Object
    int kor=(int)obj                             //형변환하여 사용
    int eng=(int)request.getAttribute("eng");
    int mat=(int)session.getAttribute("mat");
    String uname=(String)application.getAttribute("uname");
	
    out.println("1)pageContxt 영역 : " + kor);
    out.println("2)request 영역 : " + eng);
    out.println("3)session 영역 : " + mat);
    out.println("4)application 영역 : " + uname);
    out.print("<hr>");	
	
    //내부변수 삭제
    pageContext.removeAttribute("kor");
    request.removeAttribute("eng");
    session.removeAttribute("mat");
    application.removeAttribute("uname");
	
    //null값 반환
    out.print("<p> SCOPE 영역 변수 삭제 후 </p>");
    out.println("1)pageContxt 영역 : " + pageContext.getAttribute("kor"));
    out.println("2)request 영역 : " + request.getAttribute("eng"));
    out.println("3)session 영역 : " + session.getAttribute("mat"));
    out.println("4)application 영역 : " + application.getAttribute("uname"));

%>

</body>
</html>

댓글