- 웹 브라우저를 통해서 실행되는 Java 클래스이다.
- 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 Java 클래스이다.
javax.servlet.http.HttpServlet
클래스를 상속 받는다.- 일반 자바 클래스와 달리 단독적으로 실행되지 못하고 톰캣(Tomcat)과 같은 Jsp/Servlet 컨테이너에서 실행됨
- (main() 메소드 없어도 실행)
jsp
/servlet container
(톰캣)에 저장되기 때문에 동일한 이름의 서블릿을 2개 이상 만들 수 없다.
(저장하는 곳이 패키지단위가 아니고 서블릿 컨테이너라서 동일한 이름으로 저장이 불가능하다.)- 자바 클래스 내부에서 HTML 문서를 만들어서 클라이언트에게 응답(전송)할 수 있다.
- 서버 쪽에서 실행(Server Side)
(비동기요청(<a>
태그)로 요청하든 <form>
태그의 서브밋으로 요청하든 그걸 받아내는것은 ⇒ 서블릿이다.)
- 요청(request) : 클라이언트가 데이터를 서버로 전달한다.
- <파라미터를 보내는 두가지 방식>
- HTML 의 요청 :
<a>
태그를 이용한 단순요청과<form>
태그를 이용한 서브밋- javascript 요청 :
location.href
- 응답(response) : 서버에서 데이터를 클라이언트에게로 전달한다.
- 사용자 요청을 의미하는
HttpServletRequest
클래스의 슈퍼 클래스- 서버 응답을 의미하는
HttpServletResponse
클래스의 슈퍼 클래스
- 서블릿은 자바 클래스이므로 초기화/인스턴스생성/인스턴스소멸 등의 과정을 거침
- 각 과정별로 미리 약속된 메소드가 호출되는 콜백 메소드가 존재함
protocol://host:port/ContextPath/URLMapping
- 경로 작성
- ContextPath : 프로젝트 대표주소
- URLMapping : 서블릿(파일)
⇒ 어떤 프로젝트의 어떤 서블릿이냐는 의미
(Context Path = Context Root)
- 프로젝트가 실행될 때 가지는 기본 경로를 의미한다. (Context Root)
- 기본적으로 프로젝트이름과 컨텍스트패스는 동일함
- 수정 방법
프로젝트 속성(properties) - Web Project Settings
- 서블릿의 실행 경로를 의미한다. (URL Pattern)
- 수정 방법
@WebServlet
애너테이션- 프로젝트
src/main/webapp/WEB-INF/web.xml
- Servlet 클래스에서
@WebServlet
애너테이션 등록하기- web.xml 파일에
<servlet>
태그 등록하기
- 서블릿 생성할 때 호출된다. (가장 먼저 호출된다.)
- 서블릿 생성 후 자동으로
init()
메소드가 호출된다.
- 서블릿 환경 설정을 담당하는 메소드이다.
init()
메소드 호출 뒤 자동으로service()
메소드가 호출된다.
- 클라이언트가 요청할 때 자동으로 호출되는 메소드이다.
- 클라이언트로부터 요청을 받을 수 있고, 클라이언트에게 응답할 수 있다.
service()
메소드가 없으면doGet()
또는doPost()
와 같은 메소드가 요청 메소드에 따라서 자동으로 호출된다.
javax.servlet.http.HttpServletRequest
getParameter()
를 통해 받는다.
javax.servlet.http.HttpServletResponse
- GET 방식의 요청을 처리하는 메소드이다.
- 기본적으로 POST 방식의 요청도 처리하도록 구성되어 있다.
(<form>
태그에서method
를 생략하면 자동으로get 방식
으로 전달)
<a href="/ContextPath/URLMapping">
<form method="get" action="/ContextPath/URLMapping">
location.href = '/ContextPath/URLMapping'
window.open('/ContextPath/URLMapping', '', '')
$.ajax({ type: 'get', url: '/ContextPath/URLMapping', ... })
- POST 방식의 요청을 처리하는 메소드이다.
- 기본적으로 POST 방식의 요청이 오더라도 doGet()으로 처리를 이관한다.
<form method="post" action="/servlet/HelloServlet">
$.ajax({ type: 'post', url: '/servlet/HelloServlet', ... })
NewFile
을 클라이언트Java Package
를 서버로 봄JSP is very very IMPORTANT💐