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