0

私はjsp/サーブレットが初めてで、jspページを作成する正しい方法を見つけようとしています。ここで、スクリプトレットはそれほど優れた手法ではなく、避けるべきだと言っている別のスレッドを読みました。他の回答を読んだことがあり、少し混乱しているため、jsp をサーブレットに置き換える完全な例を見つけようとしています。

実際、私のホームページには、私のデータベースからすべての製品 (名前、モデル、価格、メーカー) を表示するためにスクリプトレットが使用されている product.jsp にリダイレクトするリンク タグ (製品) があります。

これをサーブレットに変換したい場合、どうすればよいですか? HttpServlet を拡張して doGet を使用するクラスを作成することは承知しています。何かのようなもの:

public class IndexController extends HttpServlet {
    ListProducts listProducts;
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("products", listProducts.getproducts());
        req.getRequestDispatcher("/index.jsp").forward(req, resp);
    }

}

それ以外にListProducts、データベース接続を行うクラスと、getProducts内部の製品のリストを返す関数が必要ですか? または、何か不足していますか?また、サーブレット内の URL からパラメーターを渡して特定の製品を取得したい場合はどうすればよいでしょうか?

どんな助けでも本当に感謝しています。

4

2 に答える 2

0

まあ、これはあなたが目指している (Model View Controller) MVCアーキテクチャに似ていますが、これは良いことです。

サーブレット (コントローラー) は既に作成されています。

ここで、 Modelとして機能するListProductsというクラスが必要です。

ビューは、結果を表示する jsp になります。

ListProductsクラスには、製品のリストを保持するためのリスト ( の場合もあります)と、リストを返すgetProductsArrayListメソッドが 1 つあります。

このListProductsクラスは、データベース接続を作成してクエリを実行できる別のクラスを使用できます。ListProductsクラスは、DB 接続を作成し、製品のリストを取得して自身を更新するクラスのメソッドの 1 つを呼び出す必要があります。

この後、サーブレットはListProducts calssからこのリストを取得し、いくつかの jsp に表示できます。

例:

class HandleDBConnections{

    ArrayList listOfProducts;

   makeQuery(String param);

   ArrayList getList(String yourParameterForSpecificProduct) {
       listOfProducts = makeQuery(yourParameterForSpecificProduct);
       return this.listOfProducts;
   }
}


class ListProducts {
    ArrayList list;
    getProducts() {
        // get list from DB handlers above

        return this.list; // return the list
    }
}

サーブレットからパラメータを渡して特定の製品を取得することもできます。yourParameterForSpecificProductも同じ目的です。パラメータを渡したくない場合は、パラメータなしで同じ名前のメソッドをもう 1 つ持つことができます。

于 2013-11-13T09:12:17.127 に答える