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에 기술할 가상 패스이다.

이클립스는 컨텍스트 패스를 프로젝트 단위로 자동으로 생성해주기 때문에 신경쓸 필요가 없다.

+ Recent posts