반응형

HTTP 프로토콜은 서버-클라이언트 통신 시 stateless 방식으로 통신을 합니다. 즉, 브라우저에서 새 웹 페이지를 열면 기존의 웹페이지나 서블릿에 관한 어떤 연결정보도 새 웹페이지에서는 알 수 없습니다.

 

  정리하자면 HTTP 프로토콜은 각 웹 페이지의 상태나 정보를 다른 페이지들과 공유하지 않는 starteless 방식으로 통신합니다.

따라서 웹 페이지나 서블릿끼리 상태나 정보를 공유하려면 웹 페이지 연결기능, 즉 세션 트래킹을 이용해야 합니다.

반응형

'2020 > JSP SERVLET' 카테고리의 다른 글

URL Rewriting Session tracking  (0) 2019.12.04
hidden 태그로 session tracking  (0) 2019.12.03
load-on-startup  (0) 2019.12.03
ServletConfig annotation  (0) 2019.12.03
ServletContext 파일 입출력  (0) 2019.12.03
블로그 이미지

꽃꽂이하는개발자

,

load-on-startup

2020/JSP SERVLET 2019. 12. 3. 20:40
반응형

  서블릿은 브라우저에서 최초 요청시 init() 메서드를 실행한 후 메모리에 로드되어 기능을 수행합니다. 따라서 최초 요청에 대해서는 실행 시간이 길어질 수밖에 없습니다. 이런 단점을 보완하기 위해 이용하는 기능이 load-on-startup입니다.

 - 특징은 톰캣 컨테이너가 실행되면서 미리 서블릿을 실행합니다.

 - 지정한 숫자가 0보다 크면 톰캣 컨테이너가 실행되면서 서블릿이 초기화 됩니다.

 - 지정한 숫자는 우선순위를 의미하며 작은 숫자부터 먼저 초기화됩니다.

load-on-startup 기능을 구현하는 방법으로는 애너테이션을 이용하는 방법과 web.xml에 설정하는 방법이 있습니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

ServletConfig는 각 Servlet 객체에 대해 생성됩니다.

sInit2 또한 같이 출력됩니다.

반응형

'2020 > JSP SERVLET' 카테고리의 다른 글

Session Tracking이란?  (0) 2019.12.03
load-on-startup  (0) 2019.12.03
ServletContext 파일 입출력  (0) 2019.12.03
ServletContext 매개변수 설정/ web.xml매개변수 설정/context-param  (0) 2019.12.03
ServletContext binding  (0) 2019.12.03
블로그 이미지

꽃꽂이하는개발자

,
반응형

우선 해당 프로젝트의 WebContent/WEB-INF에 폴더를 하나 생성해주고 그 안에 init.txt 파일을 만들어 주었습니다.

init 파일 안에 이렇게 입력해 주고

이제 init.text에서 메뉴데이터를 읽어와 출력하는 기능을 구현해 보겠습니다.

프로젝트에

구현할 ContextFileServlet 클래스 파일을 만들어 주었습니다.

getServletContext()메서드로 ServletContext에 접근하여 getResourceAsStream() 메서드에서 읽어 들일 파일 위치를 지정한 후 파일에서 데이터를 입력 받습니다.

실행해 보겠습니다.

이렇게 파일을 불러와 브라우저로 출력이 완료 되었습니다.

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

대부분의 웹 애플리케이션에서 메뉴는 공통으로 사용하는 기능입니다. 따라서 web.xml에 설정해놓고 프로그램 시작 시 초기화할 때 가져와서 사용하면 편리합니다.

 

우선 WebContent / WEB-INF 안에 web.xml 파일을 만들어 줍니다.

<context-param> 태그안에 <param-name> 태그와 <param-value> 태그를 이용해 메뉴에 대한 하위 메뉴 항목을 설정합니다.

getServletContext() 메서드로 ServletContext 객체에 접근하여 getInitParameter()메서드의 인자로 각각 메뉴 이름을 전달 한 후 메뉴 항목들을 가져와 이를 브라우저로 출력합니다.

반응형

'2020 > JSP SERVLET' 카테고리의 다른 글

ServletConfig annotation  (0) 2019.12.03
ServletContext 파일 입출력  (0) 2019.12.03
ServletContext binding  (0) 2019.12.03
Jsp Servlet(ServletContext, 메서드, 특징, 기능)  (0) 2019.12.02
Jsp Servlet dispatch forward binding  (0) 2019.12.02
블로그 이미지

꽃꽂이하는개발자

,
반응형

getServletContext()메서드를 이용해 ServletContext 객체에 접근한 다음 ArrayList에 이름과 나이를 저장한 후 다시 ServletContext 객체에 setAttribute() 메서드를 이용해 바인딩합니다.

getServletContext()메서드를 이용해 ServletContext 객체에 접근합니다. 그리고 getAttribute() 메서드를 이용해 다른 서블릿에서 바인딩한 ArrayList를 가져와 회원 정보를 출력합니다.

http://localhost:8080/pro08/cget

http://localhost:8080/pro08/cset

확인합니다.

이처럼 ServletContext에 바인딩된 데이터는 모든 서블릿(사용자)이 접근할 수 있습니다. 따라서 웹 어플리케이션에서 모든 사용자가 공통으로 사용하는 데이터는 ServletContext에 바인딩해 놓고 사용하면 편리합니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

#ServletContext 클래스

  ServletContext 클래스는 톰캣 컨네이너 실행 시 각 컨텍스트(웹 어플리케이션)마다 한 개의 ServletContext 객체를 생성합니다. 그리고 톰캣 컨테이너가 종료하면 ServletContext 객체 역시 소멸됩니다. ServletContext 객체는 웹 어플리케이션이 실행되면서 애플리케이션 전체의 공통 자원이나 정보를 미리 바인딩해서 서블릿들이 공유하여 사용합니다.

 

#ServletContext 클래스의 특징

 - javax.servlet.ServletContext로 정의되어 있으며, 서블릿과 컨테이너 간의 연동을 위해 사용합니다

 - 서블릿끼리 자원(데이터)을 공유하는 데 사용하며, 컨테이너 실행 시 생성되고 컨테이너 종료 시 소멸됩니다.

 

#ServletContext가 제공하는 기능

 - 서블릿에서 파일 접근 기능

 - 자원 바인딩 기능

 - 로그 파일 기능

 - 컨텍스트에서 제공하는 설정 정보 제공 기능

 

#ServletContext 메서드

getAttribute(String name) 주어진 name일 이용해 바인딩된 value를 가져오고 name이 존재하지 않으면 null을 반환

getAttributeNames() 바인딩된 속성들의 name을 반환합니다.

getContext(String uripath) 지정한 uripath에 해당되는 객체를 반환합니다.

getInitParameter(String name) name에 해당하되는 매개변수들의 이름들을 String 객체가 저장된 Enumeration타입으로                                          반환, 매개변수가 존재하지 않으면 null을 반환

getMajorVersion() 서블릿 컨테이너가 지원하는 주요 서블릿 API버전을 반환

getRealPath(String path) 지정한 path에 해당되는 실제 경로를 반환합니다.

getResource(String path) 지정한 path에 해당되는 Resource를 반환합니다.

getServerInfo() 현재 서블릿이 실행되고 있는 서블릿 컨테이너의 이름과 버전을 반환합니다.

getServletContextName() 해당 어플리케이션의 배치 관리자가 지정한 ServletContext에 대한 해당 웹 애플리케이션의                                    이름을 반환합니다.

log(String msg) 로그 파일에 로그를 기록합니다.

removeAttribute(String name) 해당 name으로 ServletContext에 바인딩된 객체를 제거합니다.

setAttribute (String name, Object object) 해당 name으로 객체를 ServletContext에 바인딩합니다.

setInitParameter(String name, String value) 주어진 name으로 value를 컨텍스트 초기화 매개변수로 설정합니다.

 

 

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

redirect binding이 안되는 것을 알아보았습니다.

이번에는 dispatch를 이용한 binding을 해보겠습니다.

 

이번에는 화면에 정상적인 주소가 출력됩니다.

첫 번째 서블릿에서 두 번째 서블릿으로 전달되는 request가 브라우저를 거치지 않고 바로 전달되었습니다.

따라서 첫 번째 request에 바인딩된 데이터가 그대로 전달된 것입니다.

 

반응형
블로그 이미지

꽃꽂이하는개발자

,