Annotion @는 의미있는 주석이다.
원래 주석은 실행시 번역되지 않고 사라지는데 이 Annotation은 번역과정에서 사라지지 않는 metadata라고 할 수 있다.
지난번에 메모장을 직접 켜서 매핑을 했었는데 이번에는 이클립스를 통해 매핑을 해보겠다.
Java Resourtces 부분에 클래스 파일을 생성하여 코드를 작성한다.
public class MinJ2 extends HttpServlet{
protected void service(HttpServletRequest requst, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hi~ Servlet!");
}
}
이제 이 클래스를 매핑해야 한다.
WEB-INF에서 web.xml을 수정해야 하는데 없다면 직접 폴더에서 복사하여 이클립스에 붙여넣으면 된다. (꼭 이클립스 내에서도 WEB-INF폴더 안에 넣어줘야함)
<servlet>
<servlet-name>good</servlet-name>
<servlet-class>com.newlecture.web.MinJ2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>good</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
참고로 class부분에 패키지까지 모두 써줘야 한다.
이후에 실행하면 잘 된다^^
하지만 매번 이렇게 메모장에서 직접 타이핑할 수는 없는 노릇이다.
이때 편하게 매핑할 수 있는 방법이 바로 Annotation이다.
코드 윗줄에 @WebServlet 을 추가해준다.
위 Annotation의 의미는 접근시 사용할 URL이라는 뜻이다.
사용할 URL로 hello를 쳐보겠다.
@WebServlet("/hello")
@WebServlet("/hello")
public class MinJ2 extends HttpServlet{
protected void service(HttpServletRequest requst, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println("Hi~ Servlet!");
}
}
사용하려면 기존에 web.xml에 매핑해두었던 부분을 주석처리해주고
중요한 것은 metadata-complete="ture"를 "false"로 바꾸어야 한다.
저렇게 수정만 해주면 Annotation을 이용해 매핑을 할 수 있다.
기존 web.xml에 직접 타이핑을 쳐서 매핑하는 것보다 훨씬 수월하게 매핑이 가능하다.