ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9. ServletContext
    개발자 수업/JSP 2021. 12. 2. 18:05

    1. ServletContext 클래스
        1) 특징
            - javax.servlet.ServletContext로 정의되어 있음
            - 서블릿과 컨테이너 간의 연동을 위해 사용
            - 컨텍스트(웹 어플리케이션)마다 하나의 ServletContext가 생성됨
            - 서블릿끼리 자원(데이터)을 공유하는데 사용됨
            - 컨테이너 실행시 생성되고 컨테이너 종료시 소멸됨
        2) 제공하는 기능
            - 서블릿에서 파일 접근 가능
            - 자원 바인딩 기능
            - 컨텍스트에서 제공하는 설정 정보 제공 기능

    2. ServletContext 바인딩 기능
        1) ServletContext에 바인딩된 데이터는 모든 서블릿들(사용자)이 접근할 수 있음
        2) 웹 어플리케이션에서 모든 사용자가 공통으로 사용하는 데이터는 ServletContext에 바인딩한 후 사용함

    package kr.co.ezenac.servletcontext;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    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("/cset")
    public class SetServletContext extends HttpServlet {
    	
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		ServletContext context = getServletContext();	//ServletContext 객체 가져옴
    		
    		List member = new ArrayList<>();
    		member.add("이순신");
    		member.add(30);
    		
    		context.setAttribute("member", member);		//ServletContext 객체에 데이터를 바인딩함
    		
    		out.print("<html><body>");
    		out.print("이순신과 30 설정");
    		out.print("</body></html>");
    		
    	}
    }
    package kr.co.ezenac.servletcontext;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    
    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("/cget")
    public class GetServletContext extends HttpServlet{
    	
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		
    		ServletContext context = getServletContext();
    		List member = (ArrayList)context.getAttribute("member");
    		
    		String name = (String)member.get(0);
    		int age = (Integer)member.get(1);
    		
    		out.print("<html><body>");
    		out.print(name + "<br>");
    		out.print(age + "<br>");
    		out.print("</body></html>");
    	}
    }



    3. ServletContext의 매개변수 설정(web.xml)
        1) ServletContext 객체를 통해 접근하므로 모든 웹 브라우저에서 공유하면서 접근 사용할 수 있음

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
      <display-name>chap05_Servlet</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      <context-param>
      	<param-name>menu_member</param-name>
      	<param-value>회원등록 회원조회 회원수정</param-value>
      </context-param>
      <context-param>
      	<param-name>menu_order</param-name>
      	<param-value>주문조회 주문등록 주문수정 주문취소</param-value>
      </context-param>
      <context-param>
      	<param-name>menu_goods</param-name>
      	<param-value>상품조회 상품등록 상품수정 상품삭제</param-value>
      </context-param>
    </web-app>
    //web.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
      <display-name>chap05_Servlet</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      <context-param>
      	<param-name>menu_member</param-name>
      	<param-value>회원등록 회원조회 회원수정</param-value>
      </context-param>
      <context-param>
      	<param-name>menu_order</param-name>
      	<param-value>주문조회 주문등록 주문수정 주문취소</param-value>
      </context-param>
      <context-param>
      	<param-name>menu_goods</param-name>
      	<param-value>상품조회 상품등록 상품수정 상품삭제</param-value>
      </context-param>
    </web-app>


    4. ServletContext의 파일 입출력 기능

    package kr.co.ezenac.servletcontext03;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.util.StringTokenizer;
    
    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("/cfile")
    public class ContextFileServlet extends HttpServlet{
    	
    	@Override
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		ServletContext context = getServletContext();
    		
    		//해당 위치의 파일을 읽어들임
    		InputStream is = context.getResourceAsStream("\\WEB-INF\\bin\\init.txt");
    		BufferedReader buReader = new BufferedReader(new InputStreamReader(is));
    		
    		String menu = null;
    		String menu_member = null;
    		String menu_order = null;
    		String menu_goods = null;
    		
    		//콤마(,)를 구분자로 하여 메뉴 항목을 분리함
    		while((menu = buReader.readLine()) != null) {
    			StringTokenizer tokens = new StringTokenizer(menu, ",");
    			menu_member = tokens.nextToken();
    			menu_order = tokens.nextToken();
    			menu_goods = tokens.nextToken();
    		}
    		
    		out.print("<html><body>");
    		out.print(menu_member + "<br>");
    		out.print(menu_order + "<br>");
    		out.print(menu_goods + "<br>");
    		out.print("</body></html>");
    	}
    }
    //init.txt
    회원등록 회원조회 회원수정, 주문조회 주문등록 주문수정 주문취소, 상품조회 상품등록 상품수정 상품삭제

    '개발자 수업 > JSP' 카테고리의 다른 글

    11. 웹 페이지 연결 기능  (0) 2021.12.03
    10. ServletConfig  (0) 2021.12.03
    8. 서블릿 API 사용하기2  (0) 2021.12.02
    7. 서블릿 API 사용하기  (0) 2021.11.27
    6. 회원정보 등록, 삭제하기  (0) 2021.11.27

    댓글