将 Servlet 请求转发到 java 中的.html文件



基本上我有一个名为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);

最新更新