본문 바로가기
개발이야기/웹_백엔드

24) application scope

by 효우너 2020. 8. 12.
728x90
반응형

* 이 글은 부스트코스 웹 백엔드 강의 수강 바탕으로 작성되었습니다.

Application Scope

  • 웹 어플리케이션이 시작되고 종료될 때까지 변수를 사용할 수 있다.
  • ServletContext 인터페이스를 구현한 객체를 사용한다.
  • jsp에서는 application 내장 객체를 이용한다.
  • 서블릿의 경우는 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; 

/** * 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>"); 
	} 
}

 

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

 

applicationscope01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
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>
728x90
반응형

'개발이야기 > 웹_백엔드' 카테고리의 다른 글

23) session scope  (0) 2020.08.12
22) request scope  (0) 2020.08.12
21) page scope  (0) 2020.08.12
20) scope란?  (0) 2020.08.03
19) JSP 내장객체  (0) 2020.08.03

댓글