У меня есть ситуация, когда мне приходится генерировать много HTML, а затем возвращать его в виде строкового стиля JSONP. Таким образом, возможный HTTP-ответ на самом деле будет текстом javascript следующим образом:
myglobaljavascriptcallbackfunction('
');
Поскольку HTML сложен, единственный разумный способ его создания - это JSP. Поэтому я хотел бы взять вывод HTML JSP и передать его сервлету, который затем может обернуть HTML необходимым JavaScript.
Ниже мое лучшее предположение на данный момент. Не повезло - HTTP-ответ сервлета - myglobaljavascriptcallbackfunction('');
без HTML-кода JSP.
* JSP 1013 *
<%@ 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());
}