[JSP/Servlet] Resource not available bij jsp:forward

Pagina: 1
Acties:

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 22-02 14:25
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:
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 ]


Verwijderd

Het is een relatieve url die je opgeeft, dus waarschijnlijk gaat "../SchemeAdapterServlet" wel werken.

[ Voor 22% gewijzigd door Verwijderd op 09-05-2006 12:38 ]


  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 22-02 14:25
Verwijderd schreef op dinsdag 09 mei 2006 @ 12:37:
Het is een relatieve url die je opgeeft, dus waarschijnlijk gaat "../SchemeAdapterServlet" wel werken.
Dat heb ik zojuist geprobeerd en toen kreeg ik een NullPointerException.
Ik toen de jsp:param tag uit de pagina gesloopt en de Servlet code gewijzigd (anders gaat die onderuit, omdat ie wel een param verwacht).
De NullPointerException bleef. Daarna heb ik ../ weer weggehaald voor de relatieve url verwijzing in de JSP pagina en toen ging het wel goed! Schijnbaar zit het probleem dus in het meesturen van een parameter. Ik snap niet waarom :?


Edit:

Ik ben er uit hoor.
Het probleem zat helemaal niet in de forward of param in de JSP pagina.
De doGet() van mijn Servlet probeerde continue te forwarden naar een niet bestaande URL.
Bij het aanpassen van mijn Servlet code had ik die regel er ook even uit gecomment, vandaar dat ie het toen inneens wel deed. Bedankt voor het meedenken in ieder geval! :)
Ik ga maar eens sterke bak koffie halen ofzo...

[ Voor 37% gewijzigd door Kwistnix op 09-05-2006 13:24 ]