我有一个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