Maison >Java >javaDidacticiel >Un servlet peut-il prétraiter le chargement d'une page JSP sans soumission de formulaire ?

Un servlet peut-il prétraiter le chargement d'une page JSP sans soumission de formulaire ?

DDD
DDDoriginal
2024-12-07 22:28:16513parcourir

Can a Servlet Preprocess a JSP Page Load Without a Form Submission?

Prétraitement des servlets pour le chargement de page JSP

Vous pouvez rencontrer un scénario dans lequel vous souhaitez afficher directement les résultats d'une base de données dans un tableau HTML lorsque une page JSP se charge. Cela soulève la question de savoir s'il est possible d'invoquer un servlet à partir d'un fichier JSP sans utiliser un formulaire HTML traditionnel.

Prétraitement avec la méthode doGet() de servlet

La réponse est affirmatif. En utilisant la méthode doGet() d'un servlet, vous pouvez prétraiter une requête et la transmettre ensuite au JSP. Cela implique de rediriger les liens et les barres d'adresse du navigateur vers l'URL du servlet au lieu de l'URL de la JSP.

Exemple de mise en œuvre

Considérez l'extrait de code suivant :

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

}

Dans le fichier JSP (/WEB-INF/products.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>

Considérations

  • Placez le fichier JSP dans le dossier /WEB-INF pour empêcher les accès par les utilisateurs.
  • Servlet 3.0 (Tomcat 7, etc.) est requis pour l'annotation @WebServlet soutien. Reportez-vous à l'annotation @WebServlet avec Tomcat 7 pour plus d'informations.
  • Pour les versions de servlet antérieures à 3.0, l'enregistrement manuel du servlet dans web.xml est nécessaire.

Ressources supplémentaires

  • Wiki des servlets page
  • doGet et doPost dans les servlets
  • Comment éviter le code Java dans JSP
  • La servlet renvoie "Statut HTTP 404 La ressource demandée (/servlet) n'est pas disponible"

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