Heim > Java > javaLernprogramm > Kann ich beim Laden einer Seite ohne HTML-Formular ein Servlet aus einer JSP aufrufen?

Kann ich beim Laden einer Seite ohne HTML-Formular ein Servlet aus einer JSP aufrufen?

Susan Sarandon
Freigeben: 2024-12-14 06:43:13
Original
510 Leute haben es durchsucht

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

Aufrufen eines Servlets aus einer JSP-Datei beim Laden der Seite ohne HTML-Formular

Frage:

Ist es möglich, a aufzurufen? Servlet aus einer JSP-Datei ohne Verwendung eines HTML-Formulars? Zum Beispiel, um Datenbankdaten beim Laden der Seite in einer HTML-Tabelle anzuzeigen.

Antwort:

Ja, es ist möglich, ein Servlet aus einer JSP-Datei ohne anzurufen HTML-Formular mithilfe der doGet()-Methode des Servlets. Mit dieser Methode können Sie eine Anfrage vorverarbeiten und an die JSP weiterleiten. Sie können dann die URL des Servlets anstelle der JSP-Links und der Adressleiste des Browsers angeben.

Implementierung:

Betrachten Sie das folgende Servlet:

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

}
Nach dem Login kopieren

Und ein Beispiel-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>
Nach dem Login kopieren

Beachten Sie, dass die JSP Die Datei wird im Ordner /WEB-INF abgelegt, um den direkten Zugriff durch Benutzer zu verhindern, ohne das Servlet aufzurufen.

Zusätzliche Hinweise:

  • @WebServlet ist verfügbar unter Servlet 3.0 und höher. Bei Verwendung einer früheren Version ist eine manuelle Servlet-Registrierung in web.xml erforderlich.
  • Auf das URL-Muster des Servlets kann direkt zugegriffen werden (z. B. http://localhost:8080/context/products).
  • Wenn im Servlet ein HTML-Formular vorhanden ist, kann es mit method="post" an dieselbe URL posten. Fügen Sie dem Servlet eine doPost()-Methode zur Nachbearbeitung hinzu.

Verwandte Links:

  • [Servlets Wiki](https:// wiki.java.net/bin/view/Javalin/servlets)
  • [doGet und doPost in Servlets](https://docs.oracle.com/javase/7/docs/api/javax/servlet/http/HttpServlet.html#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse))
  • [Vermeiden von Java-Code in JSP](https://www.ibm.com/developerworks/java/tutorials/j-jsp/j-jsp-avoidjava/)
  • [Servlet gibt HTTP-Status zurück 404](https://stackoverflow.com/questions/647016/java-servlet-returns-http-status-404-the-requested-resource-is-not-available-serv)

Das obige ist der detaillierte Inhalt vonKann ich beim Laden einer Seite ohne HTML-Formular ein Servlet aus einer JSP aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage