更好的解决办法可能是使用另一种模板引擎FreeMarker的一样或速度,这是独立的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>
你为什么要这么做? –
您可以使用'java.net.URL'和'java.net.URLConnection'类来请求Web资源。 – adatapost
@AVD不能,jsp不能公开访问 – lolotron