2009-12-01 142 views

回答

2

喜歡這大概是:

<jsp:include page="/path/to/servlet" /> 

這裏更多:jsp docs

+0

這與OP所要求的完全相反。 – schlingel 2015-10-15 15:10:52

+0

看不到這是怎麼回事...... – inkredibl 2015-10-27 09:32:49

+0

問題:你在一個Servlet中,想渲染一個特定的JSP。 解決方案:在JSP中包含Servlet結果(什麼?) 但這不是我想要的。我想要在特定操作後將用戶發送到特定的JSP。這可能是相同的,或者他們可能在參數上有所不同(錯誤頁面,成功頁面等) – schlingel 2015-10-27 12:21:23

0

要轉發從一個servlet到別的東西(如JSP)的請求/響應你要看看RequestDispatcher類。 ServletContext類有一個獲取調度器的方法,可以從一個servlet中調用該調度器。

例如(servlet的doPost/doGet方法中):

RequestDispatcher rd = getServletConfig().getServletContext() 
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response); 
23

你通常不使用servlet來生成HTML輸出。您通常使用JSP/EL進行此操作。使用out.write和consorts來流式傳輸HTML內容被認爲是不好的做法。更好地利用請求的屬性。

例如:

protected void doGet(HttpServletRequest request, HttpServletResponse response) { 
    Object data = "Some data, can be a String or a Javabean"; 
    request.setAttribute("data", data); 
    request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response); 
} 

地圖這在web.xml中對例如/page<url-pattern>。將JSP放入/WEB-INF以防止直接訪問。通過http://example.com/context/page

<p>The data from servlet: ${data}</p> 

調用servlet:然後在JSP可以使用EL(Expression Language)來訪問作用域屬性。就那麼簡單。這樣你可以在一個地方控制輸出和表示,即JSP。

+0

比Q.it的工作 – pavan 2009-12-02 05:27:11

0
getServletConfig().getServletContext() 
    .getRequestDispatcher("/jsp/myfile.jsp").forward(request,response); 

VOID類型,它不能返回RequestDispatcher次。

+0

你是否正在回答其他一些問題? – SiKing 2014-12-08 17:04:23

+0

@SiKing這是上面回答http://stackoverflow.com/a/1824967/188107的註釋。 FWIW它甚至是一個非常有用的評論,儘管編輯會更合適。我試圖報告,但它有爭議... – musiKk 2014-12-09 07:22:25