Rumah >Java >javaTutorial >Bolehkah saya Memanggil Servlet daripada JSP pada Muatan Halaman Tanpa Borang HTML?

Bolehkah saya Memanggil Servlet daripada JSP pada Muatan Halaman Tanpa Borang HTML?

Susan Sarandon
Susan Sarandonasal
2024-12-14 06:43:13516semak imbas

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

Memanggil Servlet daripada Fail JSP pada Pemuatan Halaman tanpa Borang HTML

Soalan:

Adakah mungkin untuk menggunakan servlet dari fail JSP tanpa menggunakan borang HTML? Sebagai contoh, untuk memaparkan data pangkalan data dalam jadual HTML apabila halaman dimuatkan.

Jawapan:

Ya, adalah mungkin untuk memanggil servlet daripada fail JSP tanpa Borang HTML menggunakan kaedah doGet() servlet. Kaedah ini membolehkan anda mempraproses permintaan dan memajukannya kepada JSP. Anda kemudiannya boleh menentukan URL servlet dan bukannya JSP dalam pautan dan bar alamat penyemak imbas.

Pelaksanaan:

Pertimbangkan servlet berikut:

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

}

Dan contoh 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>

Perhatikan bahawa Fail JSP diletakkan dalam folder /WEB-INF untuk menghalang akses terus oleh pengguna tanpa memanggil servlet.

Nota Tambahan:

  • @WebServlet tersedia daripada Servlet 3.0 dan ke atas. Jika menggunakan versi yang lebih awal, pendaftaran servlet manual dalam web.xml diperlukan.
  • Corak URL servlet boleh diakses terus (cth., http://localhost:8080/context/products).
  • Jika borang HTML terdapat dalam servlet, ia boleh menghantar ke URL yang sama menggunakan method="post". Tambahkan kaedah doPost() pada servlet untuk pemprosesan pasca.

Pautan Berkaitan:

  • [Servlets Wiki](https:// wiki.java.net/bin/view/Javalin/servlets)
  • [doGet dan 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))
  • [Mengelakkan Kod Java masuk JSP](https://www.ibm.com/developerworks/java/tutorials/j-jsp/j-jsp-avoidjava/)
  • [Servlet Mengembalikan Status HTTP 404](https://stackoverflow.com/questions/647016/java-servlet-returns-http-status-404-the-requested-resource-is-not-available-serv)

Atas ialah kandungan terperinci Bolehkah saya Memanggil Servlet daripada JSP pada Muatan Halaman Tanpa Borang HTML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn