2017-06-14 22 views
0

基本上我有servlet命名爲forward。當一個請求時向它提出的,它把請求轉發到一個.html文件是這樣的:轉發在Java中的.html文件的servlet請求?

@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

回答我怎樣才能讓RequestDispatcher的與localhost/videos/forward.html迴應,而不是作爲localhost/com/videos/forward.html

回答

1

不,你不能。轉發是向servlet容器發出的請求,以便將控制權交給另一個在同一個servlet上下文中的另一個servlet。一個JSP頁面確實是作爲一個servlet實現的,但是HTML只是一個資源,所以你不能轉發它。

但你可以重定向它。重定向的工作原理是發送一個特殊的響應,告訴瀏覽器它應該轉到另一個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; 
    } 
} 
0

只要寫 response.sendRedirect是(pagename.html)