[Servlet] ServletContext

toget ㅣ 2023. 10. 5. 07:31

ServletContext

웹 애플리케이션의 전역 정보를 나타내는 객체로, 서블릿이 실행되는 환경에 대한 정보와 기능을 제공합니다.

웹 애플리케이션 내의 모든 서블릿과 JSP는 이 ServletContext 객체를 공유하게 됩니다.


ServletContext의 기능

공통 설정 정보나 객체 공유 : 전체 웹 애플리케이션에서 공유되어야 하는 데이터나 객체를 저장하거나 가져올 때 사용됩니다.
초기화 매개변수 조회 : 웹 애플리케이션의 설정 정보를 조회합니다.
리소스 접근 : 웹 애플리케이션 내의 특정 리소스(예: WEB-INF 내의 파일)에 접근하는 데 사용됩니다.
SetServletContext와 GetServletContext는 ServletContext 객체와 관련된 두 개의 서블릿 클래스입니다.

 

SetServletContext

이 서블릿은 주로 ServletContext에 데이터를 설정하는 데 사용됩니다.

doGet 메서드 내에서 ServletContext 객체를 얻어와 속성 (setAttribute) 을 설정합니다.

이렇게 설정된 속성(setAttribute)은 웹 애플리케이션의 다른 부분에서도 사용될 수 있습니다.

 

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		ServletContext context = getServletContext();
				List testArr = new ArrayList();
		testArr.add("아무거나");
		testArr.add(123);
		context.setAttribute("test", "내용");//String을 추가한 모습
		context.setAttribute("testArr", testArr);//ArrayList를 추가한 모습
		response.getWriter().print("입력 완료");//입력 완료시 print
        }

 

GetServletContext

이 서블릿은 ServletContext에서 데이터를 읽어와 클라이언트에게 표시하는 데 사용됩니다.
doGet 메서드 내에서 ServletContext 객체를 얻어와 앞서 설정한 속성(getAttribute) 값을 가져옵니다.
또한, ServletContext를 통해 WEB-INF 내의 특정 파일에 접근하고 그 내용을 읽어와 클라이언트에게 표시합니다.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.setContentType("text/html;charset=utf-8");
		ServletContext context = getServletContext();
		
        //변수로 사용하려면 형변환이 필요합니다.
		List testArr = (ArrayList) context.getAttribute("testArr");
		int temp = (Integer) testArr.get(1);
		
        //Stream을 사용하여 해당 경로 파일을 받아 출력
		InputStream is = context.getResourceAsStream("/WEB-INF/bin/test.txt");
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
		
        //문자 토큰(,)을 설정하고 문자기준으로 나눠서 받기
		StringTokenizer st = new StringTokenizer(br.readLine(), ",");
		
        //test 문자열을 받아 출력
		response.getWriter().print(context.getAttribute("test") + "<br />");
		//testArr의 값을 받아 출력
        response.getWriter().print(testArr.get(0) + "<br />");
		response.getWriter().print(((Integer) testArr.get(1)) + "<br />");
        
        //test_xml 파일의 Param정보를 받아 출력
		response.getWriter().print(context.getInitParameter("test_xml") + "<br />");
		
        //BufferedReader메서드로 문자열을 받아 출력
        response.getWriter().print(br.readLine() + "<br />");
       
        //StringTokenizer메서드로 문자 토큰(,) 기준으로 받아 출력
		response.getWriter().print(st.nextToken() + "<br />");
		response.getWriter().print(st.nextToken() + "<br />");
	}

 

요약

ServletContext는 웹 애플리케이션의 전역 정보와 기능을 제공하는 객체입니다. SetServletContext는 이 객체에 데이터를 설정하고, GetServletContext는 설정된 데이터를 가져와 표시하는 서블릿입니다. 이 두 서블릿은 ServletContext를 통해 웹 애플리케이션 전체에서 데이터를 공유하는 기능을 하는 서블릿입니다.