2009-11-18 7 views
1

에 JSP하는 높은 디렉토리에 서블릿에서 나는 action="../update"을 서블릿앞으로 하위 폴더

root/logged/form.jsp 
root/servlet 
root/logged/form.jsp 

내가 JSP 페이지 logged/form.jsp이이 제출 양식을 가지고있다. 이제 요청을위한 매개 변수를 추가하고 logged/form.jsp으로 전달하고 싶지만 작동하지 않고 루트 컨텍스트 인 form.jsp 만 표시합니다 root/servlet. 내 요청을 전달해야하는 URL을 도와주세요. 요청 객체를 유지하기 위해 sendRedirect를 사용할 수 없습니다.

내 서블릿에서 앞으로 (logged/form.jsp) 및 전달 (/logged/form.jsp) 및 전달 (/form.jsp)을 시도

+0

일을 정리하려면 : 하나의 WAR (ROOT) 또는 2 개의 WAR (ROOT 및 기록)가 있습니까? 그리고 어떤 응용 프로그램을 사용하고 있습니까? Tomcat 6? – BalusC

+0

루트/로그가 있습니다 (내 루트 전쟁의 하위 폴더로 기록됨). tomcat6을 사용하여 – Chava

+0

나는 단일 루트 전쟁에서 모든 JSP를 가졌지 만, 일부 jsps tp 하위 폴더를 기록하고 그에 따라 변경했습니다. – Chava

답변

0

항상 컨텍스트 루트에 상대적으로 해석되는 (A /로 시작하는) 절대 경로를 사용하십시오.

0

/logged/form.jsp은 올바른 것이어야합니다. appserver 로그를 읽는 것이 좋습니다. 내부에 IllegalStateException: response already committed이있을 가능성이 큽니다.

잠깐, 잠깐만 기다려주세요. 따라서 방문자가 주소 표시 줄에 표시되는 URL을 변경하려고합니다.

그렇다면 포워드에서는 불가능합니다. 나는 그 다음에 다른 쪽에서 문제를 해결할 것을 제안 할 것이다. /WEB-INF 폴더에있는 form.jsp을 "숨기고"서블릿을 사용하여 양식을 가져 오거나 게시하십시오.

의사 :

protected void doGet(request, response) { 
    request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response); 
} 

protected void doPost(request, response) { 
    doYourSubmitThingHere(); 
    request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response); 
} 

지도 /logged/formurl-pattern에이 서블릿은 <form method="post" action="/logged/form"><form method="post" action="/servlet">를 교체하고 당신은 http://example.com/logged/form하여 호출/사용할 수 있습니다.

페이지 컨트롤러 패턴을 채택하고 요청 경로 (및 JSP 파일 경로)를 얻으려면 HttpServletRequest#getPathInfo()을 사용하여 한 단계 더 나아가 모든 JSP에 대해 새 서블릿을 비등시킬 필요가 없도록 할 수도 있습니다.

+0

web-inf에 로깅 된 폴더를 저장하는 이유.이 경우 원하는 o/p를 얻지 못하고 있습니다. http://example.com/index.html에서 로그인 할 때 http://example.com/looged/form.jsp로 이동하여 서블릿 (http://example.com/servlet)에 양식을 제출하고 싶습니다. 그런 다음 http://example.com/looged/form.jsp로 돌아가서 그게 가장 좋은 방법입니다. 내 루트 디렉토리에서 form.jsp를 "기록 된"폴더로 옮겼습니다. 서블릿에서 form.jsp로 다시 전달하는 기능이 작동하지 않습니다. forward ("/ looged/form.jsp") – Chava

0
req.getRequestDispatcher("../ïndex.jsp").forward(req,resp);