ホームページ > Java > &#&チュートリアル > HTML フォームを使用せずに、ページの読み込み時に JSP からサーブレットを呼び出すことはできますか?

HTML フォームを使用せずに、ページの読み込み時に JSP からサーブレットを呼び出すことはできますか?

Barbara Streisand
リリース: 2024-12-09 11:54:11
オリジナル
713 人が閲覧しました

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

ページのロード時に 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 に手動で登録します。

追加リソース:

  • [サーブレット Wikiページ](https://wiki.java.net/HowToWiki/Servlets)
  • [サーブレットの doGet および doPost](https://docs.oracle.com/javaee/5/tutorial/servlets/basicservlets004 .html)
  • [Java コードを回避する方法JSP](https://stackoverflow.com/a/9701987/6776571)
  • [サーブレットは「HTTP ステータス 404 要求されたリソース (/servlet) は利用できません」を返します](https://stackoverflow.com /a/4288938/6776571)

以上がHTML フォームを使用せずに、ページの読み込み時に JSP からサーブレットを呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート