Ik loop tegen een probleem aan bij het forwarden naar een Servlet vanuit een JSP pagina.
Zodra ik vanuit mijn JSP pagina probeer te forwarden naar een relative URL waarop de Servlet gemapped is geeft Tomcat 5.5 de volgende error: "The requested resource is not available."
Wanneer ik vanuit de browser rechtstreeks naar die URL toe ga dan wordt de Servlet wel gevonden.
Even wat meer informatie over de situatie:
Servlet container:
Tomcat 5.5
Relevante Web.xml entries:
Relevante JSP statements:
De JSP pagina staat in de root van mijn webapplicatie.
De Servlet staat in %webapp%/WEB-INF/classes.
Wat mij opviel aan de error pagina van Tomcat is dat deze de Servlet op de volgende URL probeert te vinden:
Wanneer ik in mijn JSP pagina een / toevoeg voor de relatieve URL dan probeert ie het met de volgende URL:
Nu weet ik dat je alleen kan forwarden naar een pagina/servlet/whatever in dezelfde application context, maar dat is toch het geval hier? Ik heb het gevoel dat ik iets over het hoofd zie wat verschikkelijk eenvoudig is, maar ik staar mij al geruime tijd blind op dit probleempje.
Zodra ik vanuit mijn JSP pagina probeer te forwarden naar een relative URL waarop de Servlet gemapped is geeft Tomcat 5.5 de volgende error: "The requested resource is not available."
Wanneer ik vanuit de browser rechtstreeks naar die URL toe ga dan wordt de Servlet wel gevonden.
Even wat meer informatie over de situatie:
Servlet container:
Tomcat 5.5
Relevante Web.xml entries:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <!-- taglib en overige servlet enries --> <servlet> <servlet-name>SchemeAdapterServlet</servlet-name> <servlet-class>SchemeAdapterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SchemeAdapterServlet</servlet-name> <url-pattern>/SchemeAdapterServlet</url-pattern> </servlet-mapping> </web-app> |
Relevante JSP statements:
XML:
1
2
3
4
5
6
7
8
9
10
| <c:choose> <c:when test='${pageContext.request.scheme eq "https"}'> Secure! </c:when> <c:otherwise> <jsp:forward page="SchemeAdapterServlet" > <jsp:param name="scheme" value="https"/> </jsp:forward> </c:otherwise> </c:choose> |
De JSP pagina staat in de root van mijn webapplicatie.
De Servlet staat in %webapp%/WEB-INF/classes.
Wat mij opviel aan de error pagina van Tomcat is dat deze de Servlet op de volgende URL probeert te vinden:
code:
1
| http://localhost:8080/webapp/./SchemeAdapterServlet |
Wanneer ik in mijn JSP pagina een / toevoeg voor de relatieve URL dan probeert ie het met de volgende URL:
code:
1
| http://localhost:8080/webapp/webapp/SchemeAdapterServlet |
Nu weet ik dat je alleen kan forwarden naar een pagina/servlet/whatever in dezelfde application context, maar dat is toch het geval hier? Ik heb het gevoel dat ik iets over het hoofd zie wat verschikkelijk eenvoudig is, maar ik staar mij al geruime tijd blind op dit probleempje.
[ Voor 10% gewijzigd door Kwistnix op 09-05-2006 12:22 ]