[英]get jsp response as a string inside servlet
有沒有辦法從jsp文件中獲取響應作為servlet內的String。 就像是
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String section1 = getResponseFromJSP();
// do something else ...
sendMailToUser(section1);
}
我正在使用Servlet API 2.4和java 1.4
更好的解決方案可能是使用另一個模板引擎,如freemarker或velocity,它們獨立於servlet api,更適合基於文本的電子郵件。
但是,這可以通過包裝HttpServletResponse
和覆蓋getWriter
方法來實現。 以下代碼適用於glassfish。
Servlet的:
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper(response) {
private final StringWriter sw = new StringWriter();
@Override
public PrintWriter getWriter() throws IOException {
return new PrintWriter(sw);
}
@Override
public String toString() {
return sw.toString();
}
};
request.getRequestDispatcher("test.jsp").include(request, responseWrapper);
String content = responseWrapper.toString();
System.out.println("Output : " + content);
response.getWriter().write(content);
}
}
JSP:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello world</title>
</head>
<body>
<h1><%= "Hello world from a JSP!" %></h1>
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.