Appel d'un servlet à partir d'un fichier JSP lors du chargement de la page
Question :
Un servlet peut-il être invoqué à partir d'un fichier JSP sans utiliser de code HTML formulaire ?
Réponse :
Absolument. Pour ce faire, utilisez la méthode doGet() de la servlet pour prétraiter la requête et la transmettre ensuite au JSP. Ceci peut être réalisé sans spécifier l'URL JSP dans la barre d'adresse ou les liens du navigateur. Pointez plutôt vers l'URL du servlet.
Exemple :
Considérez l'extrait de code suivant :
Servlet (ProductsServlet.java) :
@WebServlet("/products") public class ProductsServlet extends HttpServlet { @EJB private ProductService productService; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<Product> products = productService.list(); request.setAttribute("products", products); request.getRequestDispatcher("/WEB-INF/products.jsp").forward(request, response); } }
JSP (products.jsp) :
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> ... <table border="1"> <c:forEach items="${products}" var="product"> <tr> <td>${product.name}</td> <td>${product.description}</td> <td>${product.price}</td> </tr> </c:forEach> </table>
Dans cet exemple, la méthode doGet() de ProductsServlet récupère une liste de produits et la définit comme attribut de requête. La demande est ensuite transmise à la page products.jsp, qui parcourt la liste et affiche les produits dans un tableau.
Remarque :
Assurez-vous que le fichier JSP est placé dans le dossier /WEB-INF pour empêcher tout accès direct non autorisé. Servlet 3.0 (ou version ultérieure) prend en charge l'annotation @WebServlet pour l'enregistrement des servlets ; cependant, si vous ne parvenez pas à effectuer la mise à niveau ou si vous devez utiliser web.xml pour des raisons de compatibilité, enregistrez le servlet manuellement dans web.xml.
Ressources supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!