Maison >Java >javaDidacticiel >Puis-je appeler un servlet à partir d'un JSP lors du chargement d'une page sans utiliser de formulaire HTML ?

Puis-je appeler un servlet à partir d'un JSP lors du chargement d'une page sans utiliser de formulaire HTML ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 11:54:11747parcourir

Can I Call a Servlet from a JSP on Page Load Without Using an HTML Form?

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 :

  • [Page Wiki des Servlets](https://wiki.java.net/HowToWiki/Servlets)
  • [doGet et doPost dans les servlets](https://docs.oracle.com/javaee/5/tutorial/servlets/basicservlets004.html)
  • [Comment éviter le code Java dans JSP](https://stackoverflow.com /a/9701987/6776571)
  • [La servlet renvoie « HTTP Status 404 The Requested » La ressource (/servlet) n'est pas disponible"](https://stackoverflow.com/a/4288938/6776571)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn