将jsp响应作为servlet中的字符串获取 [英] get jsp response as a string inside servlet
本文介绍了将jsp响应作为servlet中的字符串获取的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有办法从jsp文件中获取响应作为servlet内的String。类似
Is there a way to get response from a jsp file as a String inside servlet. Something like
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
I'm using Servlet API 2.4 and java 1.4
推荐答案
更好的解决方案可能是使用另一个模板引擎,如freemarker或velocity,它们独立于servlet api,更适合基于文本的电子邮件。
A better solution might be to use another template engine like freemarker or velocity, which are independent of the servlet api and more suited for text-based emails.
但是,这可以通过包装 HttpServletResponse
并覆盖 getWriter $ c来实现。 $ c>方法。以下代码适用于glassfish。
However, this is possible by wrapping the HttpServletResponse
and overriding getWriter
methods. The code below works for me on 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>
这篇关于将jsp响应作为servlet中的字符串获取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文