2012-07-12 2 views
2

, 내가 가진 클래스를 주석 한@WebServlet 주석과 서블릿 매핑 차이 내 서블릿 클래스에서

http://localhost:8080/forwardingProxy/OnlinePostListener/testFromAnnotation 

하지만 : 나는 URL에 액세스

http://localhost:8080/forwardingProxy/OnlinePostListener/testFromWebXML 

@ WebServlet의 어노테이션과 서블릿 매핑의 차이점은 무엇입니까? 이 URL 패턴에 대해 서블릿 매핑이 작동하지 않는 이유는 무엇입니까?

답변

2

Servlet 사양에서는 web.xml에 정의 된 매핑이 주석에 정의 된 매핑을 추가하지 않고 무시해야하기 때문에. 그 이유는 주석이 없으면 주석에 정의 된 매핑을 비활성화 할 방법이 없기 때문입니다.

+0

난 항상 때문에 사양에 서블릿 매핑이 있어야 이해합니다. 그러나 서블릿 매핑에 포함 된 URL은 주석이 수행되는 동안 작동하지 않습니다. –

+1

죄송합니다. 질문을 잘못 읽었습니다. 인용 한 두 번째 URL이 web.xml의 내용과 일치하지 않습니다. URL 패턴에서/OnlinePostListener가 누락되었습니다. –

+0

답변을 읽은 후에도 나도 만족스럽지 못했습니다. 내 대답을 게시하기 전에 댓글을 읽지 않았습니다. – KNU

5

잘못된 URL을 사용하여 이후의 경우 서블릿을 가져 오기 때문입니다.

http://localhost:8080/forwardingProxy/testFromWebXML 

ERROR :

올바른 URL을 사용하여 나중에 경우 추가/OnlinePostListener을 사용했다. 지정된 서블릿

첫 번째 경우에

에게 매핑 된 URL은 "/OnlinePostListener/testFromAnnotation"은 따라서 당신이 http://localhost:8080/forwardingProxy에 URL을 추가로이 문자열을 사용했지만 나중에 경우에 당신이 /testFromWebXML (AND NOT /OnlinePostListener/testFromWebXML)에 서블릿을 매핑 한 것입니다.

는 경우, 그러나, 당신은 당신이 다음과 같이 변경한다 web.xml 파일을 이용하기 위해 URL http://localhost:8080/forwardingProxy/OnlinePostListener/testFromWebXML을 사용하여 주장 :

<servlet-mapping> 
    <servlet-name>OnlinePostListener</servlet-name> 
    <url-pattern>/OnlinePostListener/testFromWebXML</url-pattern> 
</servlet-mapping>