2013-05-20 2 views
0

서블릿을 만들려고하고 있는데 Tomcat 7을 사용하고 있습니다. 나는 웹 어플리케이션 폴더에 내 응용 프로그램에 대한 폴더를 추가는 다음과 같습니다서블릿 주소가 잘못되었습니다.

<servlet> 
    <servlet-name>add</servlet-name> 
    <servlet-class>add</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>add</servlet-name> 
    <url-pattern>/add</url-pattern> 
    </servlet-mapping> 

과 index.html을 포함 :

--[webapps] 
    --[agtel] 
     --[web-inf] 
      --[classes] 
       --add.class 
      --web.xml 
     --index.html 

web.xml을 포함

<FORM METHOD=GET ACTION="/add"> 

제출 버튼을 누르면 다음에 액세스하려고 시도합니다.

http://localhost:8080/add 

404 오류가 발생합니다. 내가

http://localhost:8080/agtel/add 

로 변경하는 경우 그러나 물론

그래서 내가

<FORM METHOD=GET ACTION="agtel/add"> 

하기 위해 HTML 파일의 URL을 변경하려하지만 그것을 액세스하려고 애플릿을 실행합니다

http://localhost:8080/agtel/agtel/add 

왜 이제 이름을 두 번 추가합니까? 이것은 매우 혼란스럽고 나를 미치게합니다.

+1

당신은'ACTION = "add"', 또는'ACTION = "/ agtel/add"를 시도 했습니까? – Keppil

+0

'ACTION = "add"이며 서블릿 컨텍스트 루트가'/ agtel'이므로 URL은'/ agtel/add'입니다. –

답변

2

HTML에서 URL을 사용하는 경우 /를 사용하지 않으면 현재 URL과 관련이 있습니다. 선도/그들은 절대 :

<FORM METHOD=GET ACTION="/agtel/add"> 

또는

<FORM METHOD=GET ACTION="add"> 

당신이 원하는 것을 할 것입니다.

은 당신이 작업 경로 (JSP)에 dinamically 예를 들어 내부 컨텍스트를 추가하는 것이 좋습니다 : 당신이 당신의 파일을 이동하거나 복사 할 경우, 예를 들어, 경로를 변경해야하지 않습니다이와

<FORM METHOD=GET ACTION="${pageContext.request.contextPath}/add"> 

당신의 암호. 물론 index.jsp가 필요합니다.

0

이것은 "컨텍스트"경로입니다. 동일한 Tomcat (또는 응용 프로그램 서버)에서 여러 응용 프로그램을 실행하는 경우 해당 응용 프로그램 서버에 대한 액세스가 차별화됩니다. 경로를 "/ add"에서 "add"(슬래시 없음)로 변경하면 잘 작동합니다!

+0

그게 다야! 저는 예를 들어 슬래시 (slash)를 보았습니다 (그것은 효과가있었습니다). 고마워요! – Adrian