티스토리 뷰
반응형
ServletContext
- ServletContext 클래스는 톰캣 컨테이너 실행 시 각 컨텍스트(웹 애플리케이션)마다 한 개의 ServletContext객체를 생성한다. 그리고 톰캣 컨테이너가 종료하면 ServletContext 객체 역시 소멸된다.
- ServletContext객체는 웹 애플리케이션이 실행되면서 애플리케이션 전체의 공통 자원이나 정보를 미리 바인딩해서
서블릿들이 공유하여 사용한다.
ServletContext 클래스의 특징
- javax.servlet.ServletContext로 정의되어 있다.
- 서블릿과 컨테이너 간의 연동을 위해 사용한다.
- 컨텍스트(웹 애플리케이션)마다 하나의 ServletConext가 생성된다.
- 서블릿끼리 자원(데이터)을 공유하는 데 사용한다.
- 컨테이너 실행 시 생성되고 컨테이너 종료 시 소멸된다.
Servlet Context 제공 기능
- 서블릿에서 파일 접근 기능
- 자원 바인딩 기능
- 로그 파일 기능
- 컨텍스트에서 제공하는 설정 정보 제공 기능
ServletContext 메서드
메서드 | 기능 |
getAttribute(String name) | - 주어진 name을 이용해 바인딩된 value를 가져온다. - name이 존재하지 않으면 null을 반환 |
getAttibuteNames() | 바인딩된 속성들의 name을 반환한다. |
getContext(String uripath) | 지정한 uripath에 해당되는 객체를 반환한다. |
getInitParameter(String name) | - name에 해당되는 매개변수의 초기화 값을 반환한다. - name에 해당되는 매개변수가 존재하지 않으면 null을 반환 |
getInitParameterNames() | - 컨텍스트의 초기화 관련 매개변수들의 이름들을 String 객체가 저장된 Enumeration 타입으로 반환한다. - 매개변수가 존재하지 않으면 null을 반환한다. |
getMajorVersion() | 서블릿 컨테이너가 지원하는 주요 서블릿 API 버전을 반환 |
getRealPath(String path)( | 지정한 path에 해당되는 실제 경로를 반환 |
getResource(String path) | 지정한 path에 해당되는Resource를 반환 |
getServerInfo() | 현재 서블릿이 실행되고 있는 서블릿 컨테이너의 이름과 버전을 반환 |
getServletContextName() | 해당 애플리케이션의 배치 관리자가 지정한 ServletContext에 대한 해당 웹 애플리케이션의 이름을 반환 |
removeAttribute(String name) | 해당 name으로 ServletContext에 바인딩된 객체를 제거한다. |
setAttribute (String name, Object obj) |
해당 name으로 객체를 ServletContext에 바인딩한다. |
setInitParameter (String name, String value) |
주어진 name으로 value를 컨텍스트 초기화 매개변수로 설정한다. |
log(String msg) | 로그 파일에 로그를 기록한다. |
ServletContext 바인딩
- ServletContext 바인딩의 기능을 이용한다.
* SetServletContext.java
package servlet;
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;
/**
* Servlet implementation class SetServletContext
*/
@WebServlet("/cset")
public class SetServletContext extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @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 객체를 가져옴
ServletContext context = getServletContext();
List member = new ArrayList();
member.add("이순신");
member.add(30);
// ServletContext 객체에 데이터를 바인딩
context.setAttribute("member", member);
out.print("<html><body>");
out.print("이순신과 30 설정");
out.print("</body></html>");
}
}
* GetServletContext.java
package servlet;
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;
/**
* Servlet implementation class SetServletContext
*/
@WebServlet("/cget")
public class GetServletContext extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @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 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);
out.print("</body></html>");
}
}
- 코드 작성 후 톰캣을 재시작하고 브라우저에 localhost:[port]/[project_name]/cset 을 입력한다.
- 위 페이지에 접속 후 localhost:[port]/[project_name]/cget 에 접속한다.
- ServletContext에 바인딩된 데이터는 모든 서블릿들(사용자)이 접근할 수 있다. 따라서 웹 애플리케이션에서 모든
사용자가 공통으로 사용하는 데이터는 ServletContext에 바인딩해 놓고 사용하면 편리하다.
반응형
'Servlet' 카테고리의 다른 글
세션 트래킹 - 쿠키 (0) | 2024.08.12 |
---|---|
세션 트래킹 (0) | 2024.08.12 |
서블릿 - 바인딩 (1) | 2024.08.12 |
서블릿 포워드(Forward) (0) | 2024.08.12 |
서블릿 - 비즈니스 로직(회원 정보 삭제) (0) | 2024.08.11 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Binding
- 미들웨어
- Session
- 스프링
- 제이쿼리
- FMT
- httpServletRequest
- 세션
- Spring MVC
- Spring
- HTML
- 서블릿
- 내장객체
- JSP
- javaserverpage
- script element
- a 태그
- CSS
- CSS 속성
- Redux
- el
- html css
- Network
- react
- Servlet
- 네트워크
- Java Server Page
- nodejs
- 리액트
- 서브넷팅
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
글 보관함