Application scope

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

실습

// 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;

@WebServlet("/ApplicationScope01")
public class ApplicationScope01 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public ApplicationScope01() {
        super();
    }

	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
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;

@WebServlet("/ApplicationScope02")
public class ApplicationScope02 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public ApplicationScope02() {
		super();
	}

	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 e) {
		    out.print("value의 값이 설정되지 않았습니다.");
		}
	}
}
// applicationScope01.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta 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>
profile
Enjoy to study

0개의 댓글