ページのロード時に JSP ファイルからサーブレットを呼び出す
質問:
サーブレットを呼び出すことはできますか? HTML を使用せずに JSP ファイルから呼び出すことができます。フォーム?
答え:
もちろんです。これを実現するには、サーブレットの doGet() メソッドを利用してリクエストを前処理し、その後リクエストを JSP に転送します。これは、ブラウザのアドレス バーまたはリンクで JSP URL を指定しなくても実現できます。代わりに、サーブレット URL を指定します。
例:
次のコード スニペットを考えてみましょう:
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>
この例では、ProductsServlet の doGet() メソッドが製品のリストを取得し、それをリクエスト属性として設定します。その後、リクエストは products.jsp ページに転送され、リストが反復処理されて表に製品が表示されます。
注:
JSP ファイルがは、不正な直接アクセスを防ぐために /WEB-INF フォルダー内に配置されます。 Servlet 3.0 (またはそれ以降) は、サーブレット登録用の @WebServlet アノテーションをサポートします。ただし、アップグレードできない場合、または互換性の理由で web.xml を使用する必要がある場合は、サーブレットを web.xml に手動で登録します。
追加リソース:
以上がHTML フォームを使用せずに、ページの読み込み時に JSP からサーブレットを呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。