我有一個servlet,看起來是這樣的:如何在轉發到JSP時檢測Java Servlet中的URL?
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」。但是,如果我改變servlet來轉發到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(的價值),現在報告「whatever.jsp」,而不是「富」。
- 爲什麼在它被轉發到JSP之前發生了改變?
- 如何檢測用戶所尋找的URL?
編輯:以防萬一,這是在谷歌App Engine上。不要以爲它應該。
在第二種情況下,你是否在轉發請求之前或之後檢查getPathInfo?或者你在jsp文件中這樣做? – kgiannakakis 2009-06-23 06:14:25
我在做之前,我把評論。(/ /在這裏做一些事情來檢查request.getPathInfo()的值) – 2009-06-23 06:28:50