【发布时间】:2009-12-01 06:45:46
【问题描述】:
如何将servlet输出转发到jsp页面?
这意味着结果将显示在 JSP 页面中。
【问题讨论】:
如何将servlet输出转发到jsp页面?
这意味着结果将显示在 JSP 页面中。
【问题讨论】:
您通常不使用 servlet 来生成 HTML 输出。您通常为此使用 JSP/EL。使用 out.write 和 consorts 流式传输 HTML 内容被认为是不好的做法。更好地利用请求属性。
例如:
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
Object data = "Some data, can be a String or a Javabean";
request.setAttribute("data", data);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
}
在 web.xml 中将其映射到 <url-pattern> 上,例如 /page。将 JSP 放在/WEB-INF 中以防止直接访问。然后在 JSP 中你可以使用 EL (Expression Language) 来访问作用域属性:
<p>The data from servlet: ${data}</p>
通过http://example.com/context/page 调用servlet。就那么简单。通过这种方式,您可以在一个地方控制输出和呈现,即 JSP。
【讨论】:
getServletConfig().getServletContext()
.getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
是VOID类型,不能返回RequestDispatcherrd。
【讨论】:
要将请求/响应从 servlet 转发到其他东西(例如 JSP),您需要查看 RequestDispatcher 类。 ServletContext 类有一个获取调度程序的方法,可以在 servlet 中调用。
例如(在 servlet 的 doPost/doGet 方法中):
RequestDispatcher rd = getServletConfig().getServletContext()
.getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
【讨论】: