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
Libérer: 2024-12-09 11:54:11
original
694 Les gens l'ont consulté

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);
    }

}
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal