У меня есть сервлет, который выглядит примерно так:
public class ExampleServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println(request.getPathInfo());
}
}
с отображением web.xml:
<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>
и это дает мне именно то, что я ожидаю ... Если я перейду к http://localhost:8080/example/foo, он напечатает "/ foo". Однако, если я изменю сервлет для пересылки в файл 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);
}
}
затем, когда я проверяю значение getPathInfo (), теперь он сообщает «what.jsp» вместо «foo».
- Почему это изменилось до того, как оно было отправлено в JSP?
- Как узнать, какой URL ищет пользователь?
РЕДАКТИРОВАТЬ: На всякий случай, если это имеет значение, это на Google App Engine. Не думаю, что это все же.