1. サーブレットのライフサイクルについて話しますか?
(推奨されるその他の関連するインタビューの質問: Java インタビューの質問と回答)
サーブレットには、ロードとインスタンス化、初期化、リクエストの処理、サービスの終了など、明確に定義されたライフサイクルがあります。この有効期間は、javax.servlet.Servlet インターフェースの init()、service()、および destroy メソッドによって表されます。
サーブレットがサーバーによってインスタンス化された後、コンテナは init メソッドを実行し、リクエストが到着するとサービス メソッドを実行します。サービス メソッドは、サーバーがインスタンスを使用することを決定したときのリクエストなど。破棄されると、その destroy メソッドが呼び出されます。
Web コンテナがサーブレットをロードし、ライフサイクルが開始します。サーブレットの init() メソッドを呼び出してサーブレットを初期化します。これは、service() メソッドを呼び出すことで実現され、さまざまなリクエストに応じてさまざまな do***() メソッドが呼び出されます。サービスを終了するには、Web コンテナはサーブレットの destroy() メソッドを呼び出します。
2. サーブレット API の forward() と redirect() の違いは何ですか?
1. アドレスバーの表示から、
forward はサーバーがリソースを要求するときで、サーバーは対象アドレスの URL に直接アクセスし、その URL の応答内容を読み取り、送信します。コンテンツを再度ブラウザに送信する ブラウザには、サーバーから送信されたコンテンツがどこから来たのかがわからないため、アドレス バーは元のアドレスのままです。
リダイレクトとは、サーバーがロジックに基づいてステータス コードを送信し、そのアドレスを再度リクエストするようにブラウザに指示することを意味します。そのため、アドレス バーには新しい URL が表示されます。したがって、リダイレクトとは、クライアントがサーバーに 2 つのリクエストを送信することを意味します。二つ返事でも受け付けます。
2. データ共有の観点から見る
forward: 転送されたページと転送されたページはリクエスト内のデータを共有できます
redirect: データを共有できません
redirect は、現在のアプリケーションの他のリソースにリダイレクトできるだけでなく、同じサイト上の他のアプリケーションのリソースにリダイレクトしたり、絶対 URL
forward を使用して他のサイトのリソースにリダイレクトしたりすることもできます。同じ Web アプリケーション内のリソース間でのみリクエストを転送します。転送はサーバー内部の操作です。
リダイレクトは、サーバーがクライアントに通知し、クライアントがリクエストを再開始できるようにするときです。
したがって、次のようになります。リダイレクトは間接リクエストであると言えますが、「リクエストが転送に属するか、リダイレクトに属するか」を言うことはできません。
3. アプリケーションの観点から見る
forward: 一般的にユーザーがアクセスするときに使用されます。
リダイレクト: 通常、ユーザーがログアウトしたときにメイン ページに戻り、他の Web サイトにジャンプするために使用されます。効率 例:
forward:high.
redirect:low.
3. request.getAttribute() と request.getParameter() の違いは何ですか?
1. request.getParameter() は、post、get などのメソッドを通じて渡されたデータを取得するコンテナーの実装を通じて取得されます。
request.setAttribute() と getAttribute() は Web コンテナ内でのみフローし、リクエストの処理段階にのみ存在します。
2. getAttribute はオブジェクトを返し、getParameter は文字列を返します
3. getAttribute() は常に setAttribute() と一緒に使用されます。最初に setAttribute() で設定した後にのみ渡すことができます.getAttribute() を使用して値を取得すると、オブジェクト型のデータが渡されます。また、有効にするには、同じリクエスト オブジェクト内で使用する必要があります。 getParameter() は、フォームの get または post によって送信されたパラメーターを受け取ります。
(ビデオ チュートリアルの推奨事項:
java コース) 4. JSP 静的インクルージョンと動的インクルージョンの違い
1. <%@include file="xxx.jsp"%> は jsp のコンパイル命令です。そのファイルのインクルードは、jsp からサーブレットへの変換中に発生します。一方、
2. 静的インクルージョンを使用するとクラス ファイルが 1 つだけ生成されますが、動的インクルージョンを使用すると複数のクラス ファイルが生成されます
3. 静的インクルージョンを使用すると、包含ページと包含ページのリクエスト オブジェクトが生成されます。静的インクルージョンはインクルードされるページのコンテンツをインクルードされるページにコピーするだけであるため、同じオブジェクトです。一方、動的インクルージョンでは、インクルードされるページとインクルードされるページは同じページではなく、リクエストによって取得できるパラメーターの範囲は異なります。インクルードされたページのオブジェクトは比較的大きく、包含ページに渡されたパラメータを取得できるだけでなく、包含ページから渡されたパラメータも取得できます
5。 MVC の各部分を実装するにはどうすればよいですか? 実装方法は何ですか?
MVC は Model-View-Controller の略です。モデルはアプリケーションのビジネス ロジック (JavaBeans および EJB コンポーネントを通じて実装) を表し、ビューはアプリケーションのプレゼンテーション サーフェス (JSP ページによって生成)、コントローラーはアプリケーション (通常はサーブレット) のプロセス制御を提供します。アプリケーション ロジック、処理ロジック、および表示ロジックをさまざまなコンポーネント実装に分割します。これらのコンポーネントは対話して再利用できます。
6. jsp の組み込みオブジェクトとは何ですか? その機能は何ですか?
JSP には次の 9 つの組み込みオブジェクトがあります。 request クライアント リクエスト。このリクエストには GET/POST リクエストのパラメータが含まれます
2. 応答 Web ページは、クライアントからの応答を返します。
3. Web ページの pageContext プロパティは、ここで管理されます。
4. Session は、Web ページに関連するセッション期間です。リクエスト
5 実行されるアプリケーション サーブレットのコンテンツ
6 Out は応答出力の送信に使用されます
7 構成サーブレットのフレームワーク コンポーネント
8. ページ JSP Web ページ自体
9. 例外 エラー Web ページのキャッチされない例外
#7. Http の get メソッドと post メソッドの違い 1. Get はサーバーへのデータのリクエスト、Post はサーバーへのデータ送信のリクエストです。##2. Get は情報を取得することであり、情報を変更することではありません。データベースのクエリ関数と似ています。
#3. Get リクエストのパラメータを URL の後に渡し、リクエストのデータを URL に付加して URL を分割して送信します。 %XXのXXは16進数で表したASCII記号で、データが英字/数字の場合はそのまま、スペースの場合は変換して送信し、中国語/その他の場合は変換して送信します。文字列を BASE64 で直接暗号化します。 4. Get によって送信されるデータにはサイズ制限があります。GET は URL を通じてデータを送信するため、GET によって送信できるデータの量は URL の長さに直接関係します。異なるブラウザーURL の長さに関する要件が異なり、制限も異なります。 5. GET によって要求されたデータはブラウザによってキャッシュされ、ユーザー名とパスワードは URL に平文で表示されます。他の人が閲覧履歴の記録を確認できるため、データは安全ではありません。 サーバー側では、Request.QueryString を使用して、Get メソッドによって送信されたデータを取得します。 Post リクエストは、http メッセージの実際のコンテンツとして Web サーバーに送信されます。データは HTML ヘッダーに配置されて送信されます。Post は送信されるデータを制限しません。 Post は Get より安全です。データが中国語または非機密データの場合は、get を使用するとアドレスにパラメータが表示されるため、get を使用します。機密データや漢字以外のデータの場合は、post を使用します。 6. POST は、サーバー上のリソースを変更する可能性のあるリクエストを表します。サーバー側では、Post メソッドで送信されたデータは、Request.Form を使用してのみ取得できます。 8. Cookie とは何ですか?セッションとクッキーの違いは何ですか? #Cookie はセッション テクノロジであり、ユーザーの情報をブラウザ オブジェクトに保存します。
(関連する推奨事項:
)
違い: 1. Cookie データはクライアントのブラウザに保存され、セッション データはサーバーに配置されます。
2. Cookie はあまり安全ではありません。ローカルに保存された COOKIE は他のユーザーによって分析される可能性があります。 COOKIE Deception を実行する場合、セキュリティを主に考慮する場合は、セッション
#3 を使用する必要があり、セッションはサーバー上に一定期間保存されます。アクセスが増加すると、サーバーのパフォーマンスがより多く消費されます。サーバーのパフォーマンスの低下を主に考慮する場合は、COOKIE4 を使用する必要があります。クライアント上の 1 つの Cookie の制限は 3K です。クライアント上のサイト ストアの COOKIE を 3K にすることはできません。 結論: ログイン情報などの重要な情報はSESSIONとして保存し、その他の情報を保持する必要がある場合はCOOKIEに配置できます。 9. jspとサーブレットの違い、共通点、適用範囲は何ですか? JSP はサーブレット テクノロジの拡張であり、本質的にはサーブレットの単純な方法です。 JSP をコンパイルすると、「サーブレットのような」ものになります。 サーブレットと JSP の主な違いは、サーブレットのアプリケーション ロジックが Java ファイル内にあり、プレゼンテーション層の HTML から完全に分離されていることです。 JSP の場合、Java と HTML を .jsp 拡張子を持つファイルに結合できます。 JSP はビューに重点を置き、サーブレットは主に制御ロジックに使用されます。 Struts フレームワークでは、JSP は MVC デザイン パターンのビュー層に配置され、サーブレットはコントロール層に配置されます。 10. Tomcat コンテナはどのようにしてサーブレット クラス インスタンスを作成しますか?どのような原理が使用されていますか? コンテナは起動すると、webapps ディレクトリ内のすべての Web アプリケーションの web.xml ファイルを読み取り、xml ファイルを解析して、サーブレットの登録情報を読み取ります。次に、各アプリケーションに登録されているサーブレット クラスがロードされ、リフレクションによってインスタンス化されます。 (最初のリクエストでインスタンス化される場合もあります) サーブレットの登録時に以上がJava で頻繁に聞かれる基本的な面接の質問—(4)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。