How to Call a Servlet from JSP on Page Load
In certain scenarios, you may need to invoke a servlet from a JSP file without using an HTML form. For instance, to display database query results in an HTML table upon page load.
Solution Using doGet() Method
The doGet() method in a servlet allows for request preprocessing and redirection to the JSP. Here's how you can implement this:
Implement doGet() in Servlet:
@WebServlet("/products") public class ProductsServlet extends HttpServlet { ... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response); } }
Access Servlet Data in JSP:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <table> <c:forEach items="${products}" var="product"> <tr> <td>${product.name}</td> <td>${product.description}</td> <td>${product.price}</td> </tr> </c:forEach> </table>
By doing this, the JSP file can access the objects set by the servlet in its doGet() method, enabling dynamic content generation.
Preventing Direct JSP Access
For security reasons, the JSP file should be placed within the /WEB-INF folder, preventing direct access by users.
Note
The @WebServlet annotation requires Servlet 3.0 or higher. If you're using an older version, you must register the servlet manually in the web.xml file.
References
The above is the detailed content of How to Call a Servlet from a JSP on Page Load to Display Data?. For more information, please follow other related articles on the PHP Chinese website!