2012-05-31 3 views
0

서블릿이 corectly로 매핑되지 않은 이유를 알 수 없습니다.서블릿 URL 매핑 오류

이것은 web.xml의 일부이다

<servlet> 
    <servlet-name>InsertServlet</servlet-name> 
    <servlet-class>servlets.InsertServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>InsertServlet</servlet-name> 
    <url-pattern>/insert</url-pattern> 
</servlet-mapping> 

이 생성 : 로컬 호스트 : 8080/GestiuneSimpozioane/JSP/삽입 (I 데이터를 전송 형태가 JSP 폴더에 위치하기 때문에) 대신 localhost : 8080/GestiuneSimpozioane/insert

매핑을 어떻게 수정해야합니까? 감사합니다.

답변

0

문제점이 서블릿 맵핑에 없습니다. 문제는 HTML 양식에서 서블릿 URL을 지정한 방법입니다. 당신이 요청 된 HTML 페이지의 URL에 상대적으로 해결 될 것입니다 (즉, 사람이 계획 또는 /로 시작되지 않음) HTML에서

<form action="insert"> 

상대 URL을 사용하고 증상을 감안할 때 (브라우저의 주소 표시 줄에 표시) . 이것은 분명히 /jsp 하위 폴더에 있습니다. 브라우저는 물론 /jsp 폴더에있는 URL을 해석합니다.

대신 도메인 상대 URL을 지정해야합니다.

<form action="${pageContext.request.contextPath}/insert"> 

${pageContext.request.contextPath} 동적 컨텍스트 경로 따라서 HTML이 경우 다음과 같이 생성됩니다 인쇄됩니다 : 당신은 또한 <base> 태그로이를 달성 할 수

<form action="/GestiuneSimpozioane/insert"> 

합니다. this related answer을 참조하십시오.

당신이 정말로 대신 어떤 이유로 /jsp/insert에서 수신하는 서블릿을 필요 경우

후 바로 따라 <url-pattern>을 변경합니다. 이것을 HTML <form>에서도 고려해야합니다.

0

"그것이 무엇을 생성 할 것입니까?"

절대 경로가 아닌 상대 경로를 양식에 사용하십시오. 컨텍스트 등을 자동으로 포함하려면 JSTL의 <c:url> 태그를 사용해야합니다.