티스토리 뷰

Servlet JSP

어노테이션 URL 매핑 @Annotation

Programmers 2021. 4. 20. 14:17
반응형

*참고: 어노테이션이란? 주석, 메타데이터를 의미!
*참고: 메타데이터란? 어플리케이션이 처리할 데이터가 아닌, 컴파일러가 어떻게 처리할지 도와주는 역할!

어노테이션을 이용하면 서블릿 매핑이 훨씬 수월하다.
이거건 서블릿 3.0 이상부터 가능하다고 한다.

먼저 사용을 위해서 web.xml 파일을 수정해주어야 한다.

수정전 코드 web.xml 코드

<?xml version="1.0" encoding="UTF-8"?>

<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>na</servlet-name>
	<servlet-class>com.newlecture.web.Nana</servlet-class>
  </servlet>
  
  <servlet-mapping>
	<servlet-name>na</servlet-name>
	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
 
 <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

</web-app>

수정 후 코드 web.xml

<?xml version="1.0" encoding="UTF-8"?>

<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="false">
 
 <display-name>Welcome to Tomcat</display-name>
  <description>
     Welcome to Tomcat
  </description>

</web-app>

먼저 서블릿 코드들은 이제 필요없으니 지우고~
metadata-complete="true" -> "false"로 수정 해주어야한다.
true -> 모든 xml설정이 이 안에 있다고 설정되는거라 다른 곳의 설정을 찾지 못한다.
false -> 여기 외에도 다른 곳에 어노테이션 설정을 한게 있으니깐 찾아봐라.(어노테이션 설정을 읽어와라)

자 이제 Nana.java에서 어노테이션 코드를 입력해주자!

package com.newlecture.web;

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 Nana extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		PrintWriter out = resp.getWriter();
		out.println("Hello ???");
	
	}
	
}

@WebServlet("hello")라는 어노테이션을 추가!
이렇게만 해주면 web.xml에서 저 코드에서 찾아서 바로 매핑해준다!

어노테이션 URL 매핑 출력화면

이 아름다운 ... 코드 몇줄로 간단하게 된다.
이전의 서블릿 코드들이 필요가 없다 이제!
당연히 이렇게 어노테이션을 사용하는게 편리할 뿐만 아니라 업무 효율성이 좋아진다.
xml에서 여러 코드들을 나열하거나 하는 것 뿐만아니라 각각의 코드들에 개별성을 가질 수 있기 때문?일꺼다.

반응형
댓글
공지사항