URL Mapping : 서블릿을 동작시키기 위해서 실제 자바 클래스 이름 대신에 사용하는 문자열, 즉 그 문자열을 부르면 맵핑된 해당 서블릿이 호출 된다.
New → Servlet → 서블릿 클래스 이름 입력 → Next → URL mappings의 Add
import java.io.IOException;
import java.io.PrintWriter;
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 {
private static final long serialVersionUID = 1L; // 클래스를 구분하기 위한 값
/*
* 객체의 직렬화와 같이 객체에 저장된 데이터를 일렬로 입출력할 때 JVM은 같은 클래스 이름과 버전 ID를 가진 객체를 출력한다.
* JVM은 버전 ID가 다른 객체의 직렬화된 형태와 연결하는 것을 거부한다.
* 클래스는 명시적으로 serialVersionUID 필드를 정의해 클래스 버전에 따른 고유 번호를 포함하기 때문
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 클라이언트에게 응답할 페이지 정보를 셋팅한다.
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.print("<html><body><h1>");
out.print("Hello Servlet");
out.print("</h1></body></html>");
/*
* 서블릿은 실행 결과를 클라이언트에게 HTML 문서로 응답해 주기 때문에 response로 부터 얻어온
* 출력 스트림인 out 객체의 출력 메소드인 print에 일일이 하드코딩한 HTML 태그를 기술해야 한다.
*/
out.close(); // 출력 스트림과 같은 자원들은 사용이 끝나면 이를 안전하게 닫아야 한다.
}
}
서블릿을 요청하기 위한 URL은 다음과 같다.
http://localhost:8181/web_2/hello
- http://localhost : 웹 서버에 접속하기 위한 IP주소
- 8181 : 톰캣을 설피하면서 지정한 포트 번호
- web_2 : 컨텍스트 패스
- hello : 서블릿 요청 URL 패턴
즉 http://localhost:8181 : 톰캣 서버에 접속하겠다는 의미
우리가 작성하는 웹 애플리케이션은 톰캣 서버에 의해서 클라이언트에 서비스가 되는 것이다. 각각의 서비스는 개별적인 웹 애플리케이션으로 작성해야 하며 웹 애플리케이션 하나당 하나의 프로젝트를 생성한다. 이클립스에서 생성하는 하나의 프로젝트는 하나의 웹 애플리케이션이 되는데 http://localhost:8181까지 입력후 웹 서버까지 접근했다면 어떤 서비스를 받을지에 따라 그 이후에 기술되는 내용이 달라지는데 이후에 기술하는 문자열을 컨텍스트 패스라고 부른다.
컨텍스트 패스(Context path) : 웹 서버에서 제공하는 다양한 웹 애플리케이션을 구분하기 위해서 사용하는 것
ex)
http://localhost:8181/school : 학교관리 애플리케이션에 접근하기 위한 컨텍스트패스
http://localhost:8181/restaurant : 식당관리 애플리케이션에 접근하기 위한 컨텍스트패스
톰캣 서버에서 클라이언트에게 웹 애플리케이션을 서비스해 주기 위해서는 톰캣 서버에 웹 애플리케이션을 등록해야하는데 톰캣 서버의 server.xml 파일의 <Context> 태그를 사용하여 컨텍스트 패스를 추가한다.
<Context docBase="web_2" path="/web_2" reloadable="true" source="org.eclipse.jst.jee.server:web_2"/>
<Context> 태그에 path 속성이 바로 서블릿을 요청할 때 지정할 URL에 기술할 가상 패스이다.
이클립스는 컨텍스트 패스를 프로젝트 단위로 자동으로 생성해주기 때문에 신경쓸 필요가 없다.
'JSP' 카테고리의 다른 글
[JSP&Servlet] 서블릿의 데이터 통신, 쿼리 스트링 (0) | 2020.10.01 |
---|---|
[JSP&Servlet] 서블릿의 동작 원리, 서블릿의 라이프 사이클 (0) | 2020.10.01 |
[JSP] 서블릿 클래스의 구조 (0) | 2020.10.01 |
[JSP] 서블릿과 JSP 기초 개념 (0) | 2020.09.23 |
[JSP] 웹 프로그래밍 (0) | 2020.09.23 |