我有很多 JSP 页面,它们都调用同一个 servlet。
是否可以从该 servlet 中获取调用该 servlet 的 JSP 页面名称?
Servlet 是一个服务器端控制器,每当请求的 URL 与 web.xml 中定义的 servlet 的 url-pattern 或通过使用注释匹配时,它doGet
或doPost
方法都会从方法中调用。service
也就是说,servlet不知道也不应该知道通过发送 HTTP 请求调用它的 HTML 元素,就像单击链接会产生与<a>
触发它的元素无关的相同结果。
当然,您可以将该信息作为请求参数传递,然后通过调用在 servlet 的方法中检索该信息request.getParameter("name")
,其中 request 是描述发送方 URL 的参数名称HttpServletRequest
。name
不确定你想要什么。
JSP 不直接调用 Servlet(尽管在底层,它们是servlet)。
您应该将 URL 映射到 web.xml 中的 Servlet,然后将响应从 Servlet 中转发到 JSP。如果您想要请求 URL,请使用 request.getRequestURL();
如果您想要请求参数,请使用 request.getParameter("name");
转发到 JSP:
String nextJSP = "/searchResults.jsp";
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(nextJSP);
dispatcher.forward(request,response);