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

时间:2017-06-14 14:18:07

标签: java servlets

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

问题是当我在对这个servlet发出请求时在eclipse上测试它时,它会以localhost/videos/forward.html

的链接作为响应

但是当我使用名称com.war部署它时现在当请求它时,它会以localhost/com/videos/forward.html

响应

如何让requestDispatcher回复localhost/videos/forward.html而不是localhost/com/videos/forward.html

2 个答案:

答案 0 :(得分:1)

不,你不能。转发是对servlet容器的请求,用于将控制权传递给同一servlet上下文中的另一个 servlet 。 JSP页面确实实现为servlet,但HTML只是一个ressource,所以你不能转发它。

但您可以重定向。重定向的工作原理是发送一个特殊的响应,告诉浏览器它应该转到另一个URL。由于它在浏览器级别工作,您可以重定向到HTML页面甚至是完全不同的站点。

您可以使用sendRedirect中的HttpServletResponse方法从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;
    }
}

答案 1 :(得分:0)

写一下 response.sendRedirect是(pagename.html)