본문 바로가기

Servlet, JSP

Annotation(어노테이션)을 사용한 URL 매핑

반응형

 이전에 URL을 서블릿에 매핑하기 위해서는 다음과 같이 web.xml에 매핑 정보를 입력했습니다.

 

 ** 이클립스를 사용해 Hello Servlet 출력하기

 ** web.xml 경로는 {프로젝트 경로}\WebContent\WEB-INF\web.xml 입니다.

<servlet>
	<servlet-name>hello</servlet-name>
	<servlet-class>com.seung.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>hello</servlet-name>
	<url-pattern>/hello</url-pattern>
</servlet-mapping>

서블릿 2.* 에서는 web.xml 파일에서만 url 매핑이 가능했지만, 3.0이상에서는 어노테이션으로 매핑하는 것도 가능해졌습니다. 현재 저희는 4.0 버전을 사용하고 있습니다.

이번에는 매핑 정보를 servlet 클래스에서 할 수 있는 방법을 소개하겠습니다.

 

1. web.xml 파일에 metadata-complete 값을 false로 변경

현재 url 매핑 정보가 담긴 web.xml 파일입니다.

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">

  <servlet>
      <servlet-name>hello</servlet-name>
      <servlet-class>com.seung.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
  </servlet-mapping>

  <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

</web-app>

metadata-complete 값이 true로 되어 있는데 이것의 의미는 url 매핑을 포함한 메타 데이터 설정이 web.xml에 있다는 뜻입니다.

false는 url 매핑을 포함한 모든 메타 데이터 설정이 다른 파일에도 있다는 뜻입니다.

false로 바꿔줘야 어노테이션으로 url 매핑이 가능합니다.

 

다음으로 해당 매핑 정보를 지워줍니다.

<servlet>
	<servlet-name>hello</servlet-name>
	<servlet-class>com.seung.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>hello</servlet-name>
	<url-pattern>/hello</url-pattern>
</servlet-mapping>

 

 

2. 어노테이션 추가

url이 매핑될 정보를 @WebServlet("")에 추가하면 됩니다.

어노테이션이 추가된 자바 파일은 다음과 같습니다.

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
	@Override
	public void service (HttpServletRequest request
			, HttpServletResponse response) throws IOException, ServletException{
		OutputStream os = response.getOutputStream();
		PrintStream out = new PrintStream(os, true);
		out.println("Hello Servlet");
	}
}

 

 

3. 서버 재실행 및 결과 확인

서블릿에 매핑한 url 정보만으로 서블릿 실행이 된 것을 확인할 수 있습니다.

반응형