- 하루 정리 -
- Servlet 복습 및 정리
- 세미프로젝트 진행상황 정리
- 오늘 공부 내용 -
Servlet
- / : 최상위 디렉토리
- / contextroot 디렉토리 (/)가 있어야 하는 이유
- @WebServlet : 서블릿 클래스를 서블릿으로 등록하고 URL 주소를 매핑하기 위한 어노테이션(Annotation) ⇒ web.sml 파일의 servlet 엘리먼트 및 servlet-mapping 엘리먼트와 동일한 기능 제공
- 어노테이션 속성을 이용하여 서블릿 이름 또는 URL 주소에 대한 매핑 처리 등을 설정
- @WebServlet 어노테이션 속성을 이용하여 서블릿 이름 또는 URL 주소에 대한 매핑 처리등을 설정
- ⇒ name 속성 : 서블릿 이름을 속성값으로 설정 - name 속성을 생략하면 클래스명을 서블릿
- ⇒ value 속성 (필수) : 서블릿에 대한 요청 URL 주소를 속성값으로 설정 - 다른 속성이 없는 경우
- ⇒ 어노테이션 속성은 , 기호로 구분하여 나열 가능
- 서블릿은 단점이 있다. 브라우저에 출력할 문서를 직접 만들어줘야 하기 때문.
- webapp 폴더는 요청 불가 서버만 접근 가능 (보안을 요하는 정보나 파일들이 들어있음)
@WebServlet : 서블릿 클래스를 서블릿으로 등록하고 URL 주소를 매핑하기 위한 어노테이션(Annotation)
=> [web.xml] 파일의 servlet 엘리먼트 및 servlet-mapping 엘리먼트와 동일한 기능 제공
@WebServlet 어노테이션 속성을 이용하여 서블릿 이름 또는 URL 주소에 대한 매핑 처리 등을 설정
=> name 속성 : 서블릿 이름을 속성값으로 설정 - name 속성을 생략하면 클래스명을 서블릿 이름으로 자동 설정
=> value 속성(필수) : 서블릿에 대한 요청 URL 주소를 속성값으로 설정 - 다른 속성이 없는 경우 속성값만 설정 가능
=> 어노테이션 속성은 , 기호로 구분하여 나열 가능
@WebServlet("/first.itwill")
// 이름 생략 및 URL 주소 매핑 이렇게 하면 web.XML 파일의 mapping과 동일
서버에 저장된 이미지 파일의 시스템 경로를 반환받아 저장
HttpServletRequest.getServletContext() : ServletContext 인스턴스를 반환하는 메소드
ServletContext : 클라이언트가 요청한 컨텍스트 정보를 저장한 인스턴스
컨텍스트(Context) : 웹서버(WAS)에 의해 사용될 수 있는 자원 - HTML 문서, 이미지 파일 등
ServletContext.getRealPath(String contextFilePath) : 컨텍스트 파일의 시스템 경로를 반환하는 메소드
String filePath=request.getServletContext().getRealPath("/WEB-INF/Koala.jpg");
// 해당 경로의 이미지(파일)을 접근하여 변수에 저장
서블릿 요청 시 전달된 값 (사용자 입력 값)을 반환받아 저장
HTTPServletRequest.getParameter(String name) : 웹프로그램 요청 시 전달된 값을 얻어와 반환하는 메소드 - 전달값은 무조건 문자열(String 인스턴스)로 반환
=> GET : QueryString으로 전달된 값의 이름(식별자)을 이용하여 전달값 반환
=> POST : 입력태그의 name 속성값을 이용하여 전달값 반환
이름(name)에 해당하는 전달값이 존재하지 않는 경우 null 반환
=> GET 방식에서는 이름만 있고 Null String 반환
String id = request.getParameter("id");
//해당 id를 요청 시 전달된 값을 HTML에서 가져온다.
<tr>
<th bgcolor="44ff44"><font size="2">아이디</font></th>
<td bgcolor="white" width="300"><input type="text" size="10"
name="id" class="TXTFLD"></td>
</tr>
=> 요놈에서 가져옴
<!-- context-param : 모든 컨텍스트(웹프로그램)에게 필요한 값을 제공하기 위한 부모 엘리먼트 -->
<context-param>
<!-- param-name : 값을 제공하기 위한 이름(식별자)를 설정하는 엘리먼트 -->
<param-name>babico</param-name>
<!-- param-name : 제공할 값을 제공을 설정하는 엘리먼트 -->
<param-value>빠삐코</param-value>
</context-param>
서블릿(웹프로그램)은 클라이언트가 요청에 의해 WAS(Web Application Server)에 등록된 서블릿
클래스를 읽어 메모리에 저장하고 서블릿 인스턴스를 생성하여 service() 메소드르 호출해 요청에 대한 처리와 처리 결과를 클라이언트에게 전달(응답)
-> 서블릿 인스턴스가 이미 존재할 경우 인스턴스를 생성하지 않고 기존 서블릿 인스턴스로 service() 메소드 호출 -> 서블릿 인스턴스는 WAS가 종료되면 소멸.
-> WAS 프로그램의 주요 기능 중 하나는 서블릿 관련 인스턴스를 관리하는 컨테이너(Container) 기능
Container? 인스턴스의 생명주기(LifeCycle)를 관리(create, use, extinction) 하는 프로그램
생성자란?
생성자(Constructor) : 인스턴스를 생성하기 위한 특별한 메소드
=> 초기화 작업 : 필드 초기값 저장
=> 클라이언트 요청 시 WAS 프로그램에 의해 서블릿 클래스를 인스턴스로 생성할
init()?
init() : WAS 프로그램이 서블릿 인스턴스를 생성하고 가장 먼저 한번만 호출하는 메소드
=> 생성자 대신 init() 메소드로 필드 초기화 작업
생성자 대신 init() 메소드로 초기화 작업을 하는 이유는 ServletConfig 인스턴스를 매개변수로 제공받아 메소드를 호출하여 필요한 값을 필드값으로 저장 가능
ServletConfig : 컨텍스트 관련 환경정보를 저장한 인스턴스
=> [web.xml] 파일에 설정된 값을 제공받아 사용 가능 - 유지보수의 효율성 증가
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("### LifeCycleServlet 클래스의 init() 메소드 호출 ###");
// ServletCongig.getServletContext() : ServletContext 인스턴스를 반환하는 메소드
// ServiceContext.getInitParameter(String name) : [web.xml] 파일의 context-param
// 엘리먼트로 제공되는 값을 얻어와 반환하는 메소드
babico = config.getServletContext().getInitParameter("babico");
}
=>> init() 메소드 오버라이드 후 재정의
destroy()?
destroy() : WAS 프로그램이 서블릿 인스턴스를 소멸하기 전에 한번만 호출하는 메소드
=> WAS 프로그램 종료 시 서블릿 인스턴스는 WAS 프로그램에 의해 소멸
@Override
public void destroy() {
System.out.println("### LifeCycleServlet 클래스의 destroy() 메소드 호출 ###");
}
- 세미 팀플 -
> 각 페이지 크롤링 후 목요일까지 구글 ppt 공유 드라이브 이용해서 화면 정의서 만들게 시키기
> 소스 받은 거 import 시켜보기
- 스터디 내용 및 결과 -
=> configContext, ServletContext의 차이점 바로 알기
=> 웹 프로그램의 흐름에 대한 servlet의 역할 바로 알기
'레거시' 카테고리의 다른 글
2022.1.7의 기록 (0) | 2022.01.07 |
---|---|
2022.1.6의 기록 (0) | 2022.01.07 |
2021.1.4의 기록 (0) | 2022.01.04 |
2022.1.3의 기록 (0) | 2022.01.03 |
2022.1.2의 기록 (25살의 첫 일요일) (1) | 2022.01.02 |