我有一个看起来像这样的 servlet:
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”而不是“foo”。
- 为什么在转发到 JSP 之前就发生了变化?
- 如何检测用户正在寻找哪个 URL?
EDIT:以防万一,这是在 Google App Engine 上的。但不认为应该这样做。
这个问题是模糊且不明确的(servlet 是否在每次转发时再次调用自身?),但这听起来很像您需要的request.getAttribute("javax.servlet.forward.request_uri")
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)