728x90
서블릿(Servlet) 생성과 생명주기
★ JSP == 서블릿 => Spring
- @WebServlet("/rollDice2) == @Controller + @RequestMapping
- 서블릿 : 늦은 초기화 :: 요청이 오면 객체를 만들고 초기화
loadOnStartup=1 하면 미리 객체를 만들어 놓고 초기화 한다.
Spring : 빠른 초기화 :: 미리 객체를 만들어 놓고 초기화
서블릿
HttpServlet : Servlet 인터페이스를 구현한 GenericServlet 추상 클래스를 상속받은 클래스
Servlet : HttpServlet 클래스를 상속받은 자바 클래스
doGet(), doPost() 메소드를 필수적으로 오버라이딩 해야함
doGet() 메소드
GET 방식으로 요청이 들어올 경우 처리할 로직 작성






package com.fastB.ch2;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
public void init() throws ServletException {
// 1. 서블릿이 초기화 될때 자동 호출되는 메서드
System.out.println("[HelloServlet] init() is called");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 입력 , 처리 , 출력
System.out.println("[HelloServlet] service() ");
}
@Override
public void destroy() {
// 뒷정리 작업 - 서블릿이 제거 될때 서블릿 컨테이너에 의해 단 한번만 자동 호출
System.out.println("[HelloServlet] is destroy");
}
}
[ Servlet - URL 매핑 ]
- 서블릿의 @WebServlet("/URL") 어노테이션을 사용한 매핑
- web.xml을 통한 매핑
★ @WebServlet("/URL")
http://localhost/ch2/login/hello.do
1. exact mapping : @WebServlet("/login/hello.do")
2. path mapping : @WebServlet("/login/*")
3. extension mapping : @WebServlet(".do")
4. @WebServlet("/")
5. 매핑이 안되는것은 DispatchServlet이 처리
@WebServlet("/URL")의 URL 주소로 접속하면
톰켓 서버의 컨테이너가 매핑된 서블릿을 찾아 실행해 줍니다.
서블릿 한 개에 여러개의 url 주소를 매핑하려면 아래 코드와 같이 배열 형태로 사용해주면 됩니다.
@WebServlet(urlPatterns = {"/main", "/test", "/join"})
public class Controller extends HttpServlet {

★ web.xml 환경설정 파일에서 직접 매핑
패키지가 있다면 "패키지명.서블릿 클래스 이름"으로 전체 path를 입력해야 합니다.
<servlet>
<servlet-name>Name</servlet-name>
<servlet-class>com.java.example.ClassName</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Name</servlet-name>
<url-pattern>/class</url-pattern>
</servlet-mapping>
web.xml 내용을 수정한 뒤에는 "publish"를 해줘야 실제 톰캣의 설정 파일과 동기화가 되어
"synchronized" 상태가 됩니다.

[ URL 매핑 주소에서 프로젝트명 생략하기 ]
URL을 매핑하면 "IP(또는 URL):포트/프로젝트 이름/지정한 URL" 형태로 입력할 경우 해당
서블릿 파일(또는 JSP파일)을 실행 합니다. 중간에 프로젝트 이름이 들어가는 것을 생략할 수 있습니다.
이클립스의 server 탭에서 톰캣 서버를 더블 클릭해 Modules 의 path를 /로 수정합니다
server.xml 파일 에서도
<Context docBase="test_project" path="/" reloadable="true" source="org.eclipse.jst.jee.server:back_project"/></Host> path를 수정합니다

728x90