基本上我有一个名为forward
的servlet。当向它发出请求时,它会将请求转发到.html文件,如下所示:
@WebServlet("/forward")
public class forward extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/videos/forward.html").forward(request, response);
return;
}
}
问题是,当我在 eclipse 上对此进行测试时,当向此 servlet 发出请求时,它会以链接作为localhost/videos/forward.html
但是当我使用名称部署它时 com.war
现在,当向它发出请求时,它会以localhost/com/videos/forward.html
如何使请求调度程序以localhost/videos/forward.html
而不是localhost/com/videos/forward.html
不,你不能。转发是对 servlet 容器发出的请求,用于将控制权传递给同一 servlet 上下文中的另一个 servlet。JSP页面确实是作为servlet实现的,但是HTML只是一个资源,所以你不能转发到它。
但是您可以重定向到它。重定向的工作原理是发送一个特殊的响应,告诉浏览器它应该转到另一个 URL。由于它在浏览器级别工作,因此您可以重定向到HTML页面甚至完全不同的站点。
您可以使用 HttpServletResponse
中的 sendRedirect
方法来启动从 servlet 重定向:
@WebServlet("/forward")
public class forward extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.sendRedirect("/videos/forward.html");
return;
}
}
写response.sendRedirect(pagename.html(
是的,你可以。用:
RequestDispatcher r = req.getRequestDispatcher(String arg);