DD를 조작하여 서블릿에 정보를 전달하기 위한 용도의 인터페이스
1. ServletContext
하나의 context (application 범위) 내에서 다른 서블릿 간에 공유가 가능한 데이터
a. getServletContext()
ㄱ. jsp에서 사용할 시 : context를 받아오는 용도로 사용
(ex. ServletContext context = getServletContext(); )
ㄴ. MVC(model2)에서 사용할 시 : Controller의 인터페이스(서블릿의 인터페이스 - GenericServlet)을 받아 사용하게 됨
웹 어플리케이션의 절대 경로를 구하는 servletContext()를 구할 수 있음
(ex. String realFolder = context.getRealPath("upload")
b. request.getSerlvetContext() vs request.getSession().getServletContext() 차이
session이든 request든 간에 하나의 ServletContext 범위 안에서(하나의 웹 어플리케이션 영역)에 있음
=> 같은 ServletContext를 리턴하기 때문에 실질적인 둘의 차이는 없다
c. 서버의 물리적 경로 구하기
- 현재 서비스가 돌아가고 있는 서버의 웹서비스 디렉토리 물리 경로를 구할시 사용 (파일 업로드시)
ㄱ. 업로드 디렉토리가 웹서비스 디렉토리 하위에 위치한 경우
( ex. request.getSession().getServletContext().getRealPath("/") )
- 업로드 url : http://localhost\upload
- 업로드 디렉토리 물리적 경로 : C:\Web\WebContents\upload\
- 웹서비스 경로 : C:\Web\WebContents\
- 가장 일반적 방법. 현재 서비스가 돌아가고 있는 서블릿의 경로를 가져옴.
- 파일 업로드 위치가 실제 업로드 디렉토리 물리적 경로와 같이 서블릿 구동 경로 안에 있는 디렉토리에 포함되어 있을 경우 사용
ㄴ. 업로드 디렉토리가 별도 존재 => Tomcat 등의 Context로 추가한 경우
( ex. request.getSession().getServletContext().getContext("/upload").getPath("") )
- 업로드 url : http://localhost\upload
- 업로드 디렉토리 물리적 경로 : D:\upload\
- 웹서비스 경로 : C:\Web\WebContents\
- 업로드 디렉토리가 물리적으로 웹서비스 디렉토리에 포함되지 않고 별도로 존재함
- 해당 디렉토리는 WAS 상에서 Context 등을 통해 별도로 추가된 경우 사용
ㄷ. Properties 파일에 실제 저장될 물리적 경로 기입한 경우
- 최근 가장 많이 사용하는 방법
- WAS에 따라 처리하는 방식이 조금씩 다르기 때문에 편의성을 위해 사용
* ReadOnly : DD에서 config는 <servlet> 내에 있었지만, 개념적으로 Context가 더 상위이기 때문에 위치도 <servlet>보다
위여야 함
<coxntext-param>~</context-param> 에서 가져올 땐 getInitParam() 메소드를 사용함
ReadWrite : getAttribute(), setAttribute() 메소드를 사용하여 특정 scope 조정하여 데이터 공유 가능
2. ServletConfig
해당 서블릿에서 사용함
하나의 서블릿에 관련된 초기화 파라미터
=> 주로 그 서블릿의 초기화 파라미터 값들을 설정하고 저장할 수 있음 (파라미터 초기화 : DD 사용)
'BackEnd > Java' 카테고리의 다른 글
Java :: Reflection 리플렉션 (0) | 2016.12.18 |
---|---|
Java :: Exception 예외처리 (0) | 2016.12.15 |
Java :: Abstract vs Interface (0) | 2016.10.28 |
Java :: 간단한 JDBC 예제 (0) | 2016.10.18 |
Java :: 스레드(Thread) (0) | 2016.10.12 |