-
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