J'ai un servlet qui ressemble à ceci:Comment détecter l'URL dans une servlet Java lors du transfert vers JSP?
public class ExampleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println(request.getPathInfo());
}
}
avec une cartographie web.xml comme:
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>com.example.ExampleServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>/example/*</url-pattern>
</servlet-mapping>
et il me donne exactement ce que je pense ... Si je vais à http://localhost:8080/example/foo il imprime "/ foo". Cependant, si je change le servlet de transmettre à un fichier JSP:
public class ExampleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// do something here to check the value of request.getPathInfo()
request.getRequestDispatcher("whatever.jsp").forward(request, response);
}
}
puis quand je vérifie la valeur de getPathInfo() il rend compte maintenant « whatever.jsp » au lieu de « foo ».
- Pourquoi cela a-t-il changé avant d'être transmis à la JSP?
- Comment puis-je détecter quelle URL l'utilisateur recherche?
EDIT: Juste au cas où cela est important, c'est sur Google App Engine. Ne pense pas que ça devrait cependant.
Dans le deuxième cas, vérifiez-vous getPathInfo avant ou après la demande de transfert? Ou vous faites cela dans le fichier jsp? – kgiannakakis
Je le fais avant, où je mets le commentaire dedans. (// fais quelque chose ici pour vérifier la valeur de request.getPathInfo()) –