Java Web(サーブレット+ JSP)についての話

質問1:サーブレットとjsp-jspとサーブレットの関係と違いは何ですか?

回答1:

1. JVMに関する限り、JVMはJavaクラスのみを認識でき、JSPコードは認識できませんWebコンテナは、JSPが認識できるJavaクラスにJSPコードをコンパイルしますしたがって、jspはコンパイル後にサーブレットになり、JSPの本質はサーブレットです。

2. 本質的に、サーブレットは完全なJavaクラスであり、JSPはサーブレットを単純化したものですサーブレットは完全なJavaクラスです。このクラスのServiceメソッドは、クライアントへの応答を生成するために使用されます。JSPは、サーブレットの簡略化です。Jspを使用する必要があるのは、プログラマがクライアントに出力する必要があるコンテンツを完成することだけです。JSPのJavaスクリプトについてはクラスに埋め込まれ、JSPコンテナーによって完成されているため、プログラマーは心配する必要がありません。

3. ページに関しては、jspはページの表示に優れ、サーブレットはロジック制御に優れています。

4、組み込みオブジェクトされ、サーブレットはない内蔵されているオブジェクト、JSPの9オブジェクトに内蔵、しかし、HttpServletResponseのオブジェクトが必要である、とのHttpServletRequestオブジェクトのHttpServletによって得られるないオブジェクト。

質問2:サーブレットとjsp-jspの組み込みオブジェクトは何ですか?役割は何ですか?

回答2:

JSPには9つの組み込みオブジェクトがあります。

request:GETまたはPOSTリクエストからのパラメーターを含むクライアントのリクエストをカプセル化します。

response:サーバーのクライアントへの応答をカプセル化します。

pageContext:このオブジェクトを通じて他のオブジェクトを取得できます。

セッション:ユーザーのセッションをカプセル化するオブジェクト。

アプリケーション:サーバーの動作環境をカプセル化するオブジェクト。

out:サーバー応答によって出力された出力ストリームオブジェクト。

config:Webアプリケーションの構成オブジェクト。

page:JSPページ自体(Javaプログラムではこれに相当)。

exception:ページによってスローされた例外をカプセル化するオブジェクト。

質問3:サーブレットとjsp-talkで、jspの4つのスコープについて教えてください。

Answer3:

JSPの4つのスコープには、具体的には、ページ、リクエスト、セッション、およびアプリケーションが含まれます。

ページは、ページに関連するオブジェクトと属性を表します。

requestは、Webクライアントが発行したリクエストに関連するオブジェクトと属性を表します。リクエストは複数のページにまたがり、複数のWebコンポーネントを含む場合があります。ページに表示する必要がある一時データをこのスコープに配置できます。

セッションは、ユーザーとサーバー間で確立されたセッションに関連するオブジェクトと属性を表します。ユーザーに関連するデータは、ユーザー自身のセッションに配置する必要があります。

アプリケーションは、Webアプリケーション全体に関連するオブジェクトと属性を表します。これは基本的に、複数のページ、要求、セッションを含むWebアプリケーション全体にわたるグローバルスコープです。

質問4:セッションとCookie-セッションとCookieの違いは何ですか?

Answer4:

HTTPプロトコルはステートレスプロトコルであるため、サーバーがユーザーの状態を記録する必要がある場合、サーバーは特定のユーザーを識別するメカニズムを使用する必要があります。このメカニズムはセッションです。ショッピングカートなどの一般的なシナリオ(注文ボタンをクリックしたとき) HTTPプロトコルはステートレスであるため、どのユーザーが操作しているかはわかりません。サーバーは、特定のユーザー用に特定のセッションを作成し、このユーザーの識別とユーザーの追跡に使用して、ショッピングカート内の数を把握する必要があります。本。このセッションはサーバーに保存され、一意の識別子を持っています。セッションをサーバーに保存するには、メモリ、データベース、ディスクファイルなど、さまざまな方法があります。クラスタリングする場合は、セッションの転送も考慮する必要があります。大規模なウェブサイトでは、通常、ユーザーセッションを保存するための専用のセッションサーバークラスタが存在します。現時点では、セッション情報はメモリに保存され、Memcachedなどの一部のキャッシュサービスが使用されます。是非、セッションを入れてください。

サーバーが特定の顧客をどのように識別するかについて考えますか?この時、クッキーが登場しました。HTTPリクエストのたびに、クライアントは対応するCookie情報をサーバーに送信します。実際、ほとんどのアプリケーションはCookieを使用してセッショントラッキングを実装しています。初めてセッションを作成するとき、サーバーはHTTPプロトコルでクライアントにセッションIDをCookieに記録する必要があることを通知します。セッションIDがサーバーに送信され、私はあなたが誰であるかを知っています。誰かが尋ねます、クライアントのブラウザがクッキーを無効にするとどうなりますか?通常、この場合、URL書き換えと呼ばれる手法がセッショントラッキングに使用されます。つまり、すべてのHTTPインタラクションで、URLにsid = xxxxxなどのパラメーターが追加され、サーバーはこれに基づいてユーザーを認識します。

Cookieは実際には、いくつかのユーザーフレンドリーなシナリオで使用できます。Webサイトに一度ログインしたことがあり、次回ログインするときにアカウント番号を再度入力したくないと想像してください。どうしますか?この情報はCookieに書き込むことができます。Webサイトにアクセスすると、Webサイトのページのスクリプトがこの情報を読み取ることができ、ユーザー名が自動的に入力されるので、ユーザーを容易にすることができます。これはCookie名の由来でもあり、ユーザーにとっては少し甘いです。

つまり、セッションはサーバーに保存されたデータ構造であり、ユーザーの状態を追跡するために使用されます。このデータは、クラスター、データベース、ファイルに保存できます。Cookieは、クライアントがユーザー情報を保存するためのメカニズムであり、記録に使用されます一部のユーザー情報は、Sessionを実装する方法でもあります。

質問5:セッションとCookieについて、セッションの仕組みについて教えてください。

回答5:

実際、セッションはサーバーに保存されているハッシュテーブルに似たファイルです。必要な情報が含まれており、必要なときに取り出すことができます。大きなマップと同様に、内部のキーにはユーザーのセッションIDが格納され、ユーザーはサーバーにリクエストを送信するときにこのセッションIDを取得します。このとき、対応する値を取り出すことができます。

質問6:セッションとCookie-クライアントがCookieを禁止している場合、セッションを使用できますか?

回答6:

Cookieとセッションは、一般に2つの別個のものと見なされ、Sessionはサーバー側で状態を維持するスキームを採用し、Cookieはクライアント側で状態を維持するスキームを採用します。しかし、Cookieを無効にすると、なぜセッションを取得できないのですか?セッションはセッションIDを使用して現在のセッションに対応するサーバーセッションを決定し、セッションIDはCookieを介して渡されるため、Cookieを無効にすることはセッションIDを失うことに相当し、セッションを取得できません。

Cookieが閉じているときに、つまり、Cookieを使用してセッションIDを渡さずにユーザーがセッションを使用すると想定すると、次のメソッドを使用してセッションIDを渡すことができます。

1. php.ini設定ファイルで「session.use_trans_sid = 1」を設定するか、コンパイル時に「--enable-trans-sid」オプションを開き、PHPがセッションIDをページ間で自動的に転送するようにします。

2.値をURLで手動で渡し、フォームを非表示にしてセッションIDを渡します。

3.セッションIDをディスクファイル、データベースなどの形式で保存し、クロスページプロセス中に手動で呼び出します。

質問7:strutsとspringmvc-strutsとspringmvcの違いは何ですか?

回答7:

インターセプトレベル、インターセプトの実装、ネットワークリクエスト、シングルトン、URL、受信パラメーター

Struts2はクラスレベルのインターセプトです
。Struts2インターセプトは独自のInterceptorメカニズムを使用するため、Struts2の構成ファイルはSpringMVCよりも大きくなります。
各リクエストはアクションを作成し、すべての属性値インジェクションをロードする必要があります。パフォーマンスは低く、
アノテーションを使用できませんメソッドが属している他の方法を識別する方法は、複数のケースとしてのみ設計できます
。1つのアクションは1つの要求/応答コンテキストに対応し、1つのアクションの1つのメソッドは1つのURLに対応します。
クラス属性パラメーターは複数のメソッドを許可するため、パラメーターを受信すると、クラス属性を通じて受信されます共有されるため、クラス内のすべてのメソッドが要求と応答のデータを共有します。

SpringMVCはメソッドレベルのインターセプトです
。SpringMVCは独立したAOPメソッドを使用します。
すべてのリクエストはコントローラを作成するだけで、メソッドパラメータインジェクションをロードするだけで済みます。パフォーマンスは高くなります。
アノテーションなどのメソッドを使用して、単一として設計されたメソッドを特定できますたとえば、処理結果は最終的にModelMapを介してフレームワークに返されます
。1つのメソッドは要求と応答のコンテキストに対応し、1つのメソッドはURLに対応します。
パラメータを受信すると、メソッドパラメータは各メソッドに固有であるため、各メソッドは各メソッド排他的な要求と応答のデータ。

基礎となるフレームワークと初期化のタイミング

Struts2の最下層は、フィルター(StrutsPrepareAndExecuteFilter)によって実装されます。フィルターは、コンテナーの開始後に初期化され、サービスのクラッシュが停止します
。SpringMVC(DispatcherServlet)最下層は、サーブレットによって実装されます。コンテナーが呼び出されると、サーブレットが初期化され、サービスの破棄が停止します。
サーブレットの初期化はフィルターの初期化よりも早いため、SpringMVCの呼び出しはStruts2の呼び出しよりも早くなります。

Springとの統合

Struts2がSpringに統合されている場合、Struts2のアクションBeanはデフォルトでプロトタイプモードです。
SpringMVCがSpringに統合されている場合、SpringMVCのコントローラーBeanはデフォルトでシングルトンであるため、デフォルトでは、すべてのリクエストに対して1つのコントローラーのみが作成されます。共有プロパティがないため、スレッドセーフです。デフォルトのスコープを変更する場合は、 、変更する@Scopeアノテーションを追加する必要があります。

Springの子コンテナとして、SpringMVCはSpringとシームレスに統合され、プロジェクト全体の管理とセキュリティもStruts2よりも高くなっています。

Struts2 SpringMVC
傍受レベル クラスの傍受 メソッドのインターセプト
傍受の実装 Struts2には独自のインターセプターメカニズムがあるため、構成ファイルは大きくなります SpringMVCは独立したAOPメソッドを使用するため、構成ファイルは小さくなります
ネットワークリクエスト リクエストごとにアクションが作成され、パフォーマンスの低いすべての属性インジェクションをロードする必要があります すべてのリクエストはコントローラを作成するだけで、メソッドパラメータインジェクションを1回ロードするだけでよく、パフォーマンスが向上します
シングルトン アノテーションやその他の方法は、方法を識別するために使用することはできず、複数のケースとしてのみ設計できます アノテーションやその他のメソッドを使用してメソッドを識別し、それをシングルトンとして設計し、最後に処理結果をModelMapを介してフレームワークに返すことができます。
url アクションは要求と応答のコンテキストに対応し、アクションのメソッドはURLに対応します 1つのメソッドは1つの要求/応答コンテキストに対応し、1つのメソッドは1つのURLに対応します
受信パラメータ パラメータを受信するときは、クラス属性パラメータを介して受信します。これは、クラス属性パラメータが複数のメソッドによって共有されるため、クラス内のすべてのメソッドが要求/応答データを共有するためです。 パラメータを受信する場合、メソッドパラメータは各メソッドに排他的であるため、各メソッドは要求データと応答データを排他的に要求するため、メソッドパラメータを介して受信します。
基礎となるフレームワークと初期化のタイミング フィルタ サーブレット、サーブレットの初期化はフィルターの初期化よりも早いため、SpringMVCの呼び出しはStruts2の呼び出しよりも早い
春の統合 Spring統合中、Struts2のアクションBeanはデフォルトでプロトタイプモードプロトタイプ Spring統合中、Spring MVCのコントローラーBeanはデフォルトでシングルトンモードSingletonになり、SpringMVCはSpringの子コンテナーであり、Spring統合はシームレスです
207の元の記事を公開 80を賞賛 120,000ビュー

おすすめ

転載: blog.csdn.net/qq_36963950/article/details/105554813