How to forward the servlet output to jsp page?
That means the result will be displayed in the JSP page.
How to forward the servlet output to jsp page?
That means the result will be displayed in the JSP page.
To forward a request/response from from a servlet to something else (e.g. JSP) you'll want to look at the RequestDispatcher
class. The ServletContext class has a method to get a dispatcher, which can be called from within a servlet.
For example (within a servlet's doPost
/doGet
method):
RequestDispatcher rd = getServletConfig().getServletContext()
.getRequestDispatcher("/jsp/myfile.jsp").forward(request,response);
You normally don't use a servlet to generate HTML output. You normally use JSP/EL for this. Using out.write
and consorts to stream HTML content is considered bad practice. Better make use of request attribtues.
For example:
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);
}
Map this in web.xml on an <url-pattern>
of for example /page
. Place the JSP in /WEB-INF
to prevent direct access. Then in the JSP you can use EL (Expression Language) to access scoped attributes:
<p>The data from servlet: ${data}</p>
Call the servlet by http://example.com/context/page
. Simple as that. This way you control the output and presentation at one place, the JSP.