Application Scope

    • 웹 애플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
    • ServletContext 인터페이스를 구현한 객체를 사용한다.
    • jsp에서는 application 내장 객체를 이용한다.
    • 서블릿의 경우는 getServletContext() 메서드를 이용하여 application객체를 이용한다.
    • 웹 어플리케이션 하나당 하나의 application객체가 사용된다.
    • 값을 저장할 때는 application객체의 setAttribute() 메서드를 사용한다.
    • 값을 읽어 들일 때는 application객체의 getAttribute()메소드를 사용한다.
    • 모든 클라이언트가 공통으로 사용해야 할 값들이 있을 때 사용한다.

    Application Scope 실습

    ApplicationScope01, ApplicationScope02 서블릿 2개 생성한다.

    applicationscope01.jsp 를 생성한다.

    ApplicationScope01 서블릿에서는 Application Scope로 "vallue"에 1값을 저장한다.

    ApplicationScope02는 Application scope로 저장된 "vallue"의 값에 2를 더한 후 그 결과를 출력한다.

    Application scope는 웹 어플리케이션을 사용하는 모든 브라우정서 같은 값을 사용하게 한다. 테스트를 위해

    서서 크롬과 인터넷 익스플로러를 사용하여 결과를 확인한다.

     

     

     

    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();
            // 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();
            int value = 1;
            application.setAttribute("value", value);
            
            
            out.println("<h1>value : " + value + "</h1>");
            
        }
    

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

    PrintWriter out = response.getWriter(); //응답결과 

    ServletContext application = getServletContext(); //application 객체생성

    int value = 1;

    application.setAttribute("value", value);  //값을 세팅한다. ApplicationScope02.java에 전달하기 위해 

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

     

     

    ApplicationScope02.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("/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가 설정되지 않습니다.");
            }
            
            
        }
    
    }

     response.setContentType("text/html; charset=UTF-8");
            PrintWriter out = response.getWriter(); //응답결과
            ServletContext application = getServletContext();
                  
            try {  //실행이 안된 상태라면 try catch를 사용해서 오류 잡아준다.
                int value = (int)application.getAttribute("value");
                value++;
                application.setAttribute("value", value); //값을 가져온다. ApplicationScope01.java 에서
                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>

    <%

    try{

    int value = (int)application.getAttribute("value");  //jsp에서는 객체생성할 필요가 없이 바로쓴다.

    value = value + 2;

    application.setAttribute("value", value); //값 불러오기

    %>

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

    <%

    }catch(NullPointerException ex){

    %>

    <h1>설정된 값이 없습니다.</h1>

    <%

    }

    %>

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading