我有一種情況,必須生成大量HTML,然後將其作爲字符串JSONP樣式返回。所以,最終的HTTP響應實際上是JavaScript的文字是這樣的:如何將JSP響應鏈接到Servlet請求
myglobaljavascriptcallbackfunction('
< HTML這裏> ');
由於HTML是複雜的,唯一明智的方法來構建它是一個JSP。所以我想要做的就是獲取JSP的HTML輸出並將其傳遞給一個servlet,然後使用必要的javascript來包裝HTML。
以下是我目前爲止的最佳猜測。沒有運氣 - 來自Servlet的HTTP響應是myglobaljavascriptcallbackfunction('');
,沒有任何JSP的HTML。
JSP
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<jsp:forward page="/MyServlet" />
<div>
<span>Imagine some really complicated stuff here</span>
<div>
的Servlet
protected void doGet(...) {
String pre = "myglobaljavascriptcallbackfunction('";
String post = "');";
OutputStream out = response.getOutputStream();
out.write(pre.getBytes());
// transfer request to response
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int count = 0;
while ((count = in.read(buf)) > 0) {
out.write(buf, 0, count);
// TODO: escape single quote chars
}
out.write(post.getBytes());
}
這更接近,但它立即將HTML轉儲到ServletResponse。我需要能夠處理JSP的輸出之前,它被寫入到響應刪除空白和轉義某些字符,因爲HTML將被放入一個JavaScript字符串(順便說一句,我在這裏使用JSONP而不是XHR) – Lightbeard 2010-10-25 00:56:32
在Servlet中使用帶有空白三元素或者File或URLConnection的'Filter'來在本地打開JSP。閱讀「XHR」作爲「客戶」。請求源實際上並不重要。我只是期待JS/ajax(XHR)。 – BalusC 2010-10-25 01:05:28