0

Javaを使用してWebアプリを作成しています。私はこれに非常に慣れておらず、次の質問があります。

  1. jspフロントエンド用のファイルがあります。これで、かさばるバックエンド関数を実行する必要があるときはいつでも、サーブレットを作成して jsp から get リクエストを実行するか、単純な Java オブジェクトを作成して jsp でインスタンス化し、それをバック関数に使用することができます。どちらが優れているのか、その理由は?

  2. 各バックエンド関数はデータベースに接続する必要があります。jspセッション全体とすべてのページで、ユーザーに対して1回だけ実行したい。それはどのように行われますか?

4

3 に答える 3

2
  1. それらの2つのどちらでもありません。MVC パターンについて読んでください。ブラウザからのすべてのリクエストをサーブレットに送信します。このサーブレットがバックエンドのサービスを呼び出し、リクエスト属性に格納されている Java Bean を設定します。次に、リクエストを JSP にディスパッチします。JSP の唯一の責任は、リクエスト内の Bean からデータを取得し、ページの HTML マークアップを生成することです (JSTL およびカスタム タグの助けを借りて。スクリプトレットはありません)。

  2. データベース接続は、単一のユーザーに予約しないでください。1000 人の同時ユーザーが 30 秒ごとに 1 つの要求を実行している場合、1000 の接続が必要になり、ほとんどの時間アイドル状態になります。これはデータベースがサポートできる数を超えており、これらの接続はいずれにしてもタイムアウトまたは失敗する可能性があります。接続プールについて読んで、それを使用してください: 接続を必要とする各リクエストは、プールから 1 つを取得し、そのジョブを実行してから接続を閉じます。これにより、実際には接続元のプールに戻り、別のリクエストを処理する準備が整います。

于 2012-09-20T06:05:19.203 に答える
0

質問 1 の場合:

サーブレットが必要ない場合、なぜそれを使用するのでしょうか? かさばる作業を単純な Java クラスで行うだけです。このようにして、ワークフローの依存関係が少なくなります。

質問 2 の場合:

現在、ほとんどのアプリ サーバーには、プールされた接続のサポートが組み込まれています。この機能を利用することを強くお勧めします。今、あなたが前進できる方法はたくさんあります。最も簡単でIMOの最良の方法は、接続のオープン/クローズを処理し、更新/削除/選択機能を実行し、アプリケーション全体でこれを利用するデータベース関連のオブジェクトを作成することです

于 2012-09-20T06:06:31.163 に答える
0

Springなどのフレームワークを選択すると(ここでチュートリアルのリストを見つけることができます)、よりクリーンな JSP ファイルとより構造化されたプロジェクトになると思います。春はまた、車輪の再発明を止めて、すべてをゼロから始める必要があります。

2 番目の質問に関しては、私はあなたの質問を理解できません。ユーザーごとに 1 つの接続を開きたい場合は、他のより便利なことに使用できるリソースを消費することになります。このようなシステムもスケールアップしません。このため、データベース トランザクションを管理するためにデータ アクセス レイヤー(MVC (Model View Controller) デザイン パターンの詳細についてはこちらを参照)で使用できるHibernateという別のフレームワークをお勧めします。

于 2012-09-20T06:07:32.267 に答える