ホームページ  >  記事  >  Java  >  Struts ユーザーおよび開発ガイド (序文 2)

Struts ユーザーおよび開発ガイド (序文 2)

黄舟
黄舟オリジナル
2016-12-17 10:55:141022ブラウズ

0.6 プロパティ (PROperties) ファイルとリソース バインディング (リソース バンドル)
多くの Java アプリケーション (Web アプリケーションを含む) は、プロパティ ファイルを通じて何らかの構成を実行することがよくあります。プロパティ ファイルは、Struts フレームワークがアプリケーションにメッセージ リソース リソース バインディングを提供するための基礎となります。

プロパティ ファイルの詳細については、次を参照してください:

「Java チュートリアル」の「プロパティを使用してプログラム属性を管理する」

Java リソース バインディングは、ユーザー ロケール (ロケール) サポートに基づいて、1 つ以上のプロパティ ファイルを通じてユーザーに国際化を提供します。 Struts は、当初からアプリケーションのローカリゼーションを適切にサポートしてきました。

ローカリゼーションとリソースバインディングの詳細については、以下を参照してください:

The Java TutorialのResourceBundleクラスについて

0.7 Java Servlet
Javaはオブジェクト指向プログラミング言語であるため、Java Servletプラットフォーム HTTPをオブジェクトに強制する-指向性のあるフォーム。この戦略により、Java 開発者は、HTTP メカニズムを扱う代わりに、独自のアプリケーションの機能を扱う時間を節約できます。

HTTP は、サーバーを拡張するための基本的なメカニズム、つまり Common Gateway Interface (CGI) を提供します。サーバーは CGI プログラムにリクエストを渡すことができ、CGI プログラムはレスポンスを返します。同様に、Java サーバーはリクエストをサーブレット コンテナに渡します。コンテナはリクエストに対して何らかの処理を行うことも、リクエストを HTTP サーバーに直接返すこともできます。リクエスト サーブレットを登録した後、コンテナはリクエストをサーブレットに転送します。

リクエストが届くと、コンテナはリクエストに登録されたサーブレットがあるかどうかを確認し、一致するサーブレットが見つかった場合はそのリクエストをそのサーブレットに渡します。

コンテナの責任は、サーブレットのライフサイクルを管理し、サーブレットを作成し、サーブレットを呼び出し、最後にサーブレットをリリースすることです。

一般に、サーブレットは [javax.servlet.http.HttpServlet] のサブクラスです。サーブレットは、コンテナが呼び出す必要がある 4 つのメソッドを実装する必要があります:

.public void init(ServletConfig config): サーブレット インスタンスが最初の場合。サーブレット コンテナは、作成時およびすべてのリクエストの実行前にこのメソッドを呼び出します。
.public void doGet(HttpServletRequest request, HttpServletResponse response) このメソッドは、HTTP GET プロトコルを使用してリクエストを処理し、対応する動的応答を生成するために使用されます。 public void doPost(HttpServletRequest request HttpServletResponse response) このメソッドは、HTTP POST プロトコルを使用してリクエストを処理し、対応する動的応答を生成するために使用されます。
.public void destroy() コンテナは、サーブレット インスタンスがサービスを終了するときにこのメソッドを呼び出します。 as when Web アプリケーションがアンデプロイされているとき、またはコンテナ全体がシャットダウンされているとき

Struts フレームワークは、アプリケーション用に既製のサーブレット [org.apache.struts.action.ActionServlet] を提供しています。 Struts アプリケーション開発者として、Struts フレームワークの ActionServlet インスタンスを使用する際、サーブレットの基本知識を理解し、Web アプリケーションでサーブレットが果たす役割を理解することも非常に重要です。

サーブレットの詳細については、次を参照してください。

.java.sun.com の Java Servlet Technology
java.sun.com の Servlet 2.2 および 2.3 の仕様
.Java Web Service Tutorial Java Servlet Technology ;
Java Web Service チュートリアルの Web アプリケーション;

0.7.1 Servlet と Thread

パフォーマンスを向上させるために、コンテナはマルチスレッド サーブレットをサポートしています。特定のサーブレットは 1 つのインスタンスのみを作成し、同じオブジェクトを通じてこのサーブレットに登録された各リクエストを処理できます。この戦略により、コンテナはシステム リソースを最大限に活用できるようになります。同時に、サーブレットの doGet および doPost メソッドのコーディングのスレッド セーフティの問題も考慮する必要があります。

サーブレットとスレッド セーフの詳細については、次を参照してください:

.Java Web サービス チュートリアルの共有リソースへの同時アクセスの制御http://java.sun.com/webservices/docs/1.0/tutorial/doc/ Servlets5 .Html#64386;

0.7.2 サーブレットコンテキスト (Context)

ServletContext インターフェース [javax.servlet.ServletContext] は、実行中のサーブレットが配置されている Web アプリケーションのコンテキスト (または環境) のビューを提供します。サーブレットには getServletConfig() メソッドを介してアクセスでき、JSP ページは暗黙の変数アプリケーション変数を介して取得できます。サーブレット コンテキストは、Struts Web アプリケーションを作成するときに非常に役立ついくつかの API を提供します。

Web アプリケーション リソースへのアクセス: サーブレットは、getResource() メソッドと getResourceAsStream() メソッドを通じて Web アプリケーション内の静的リソース ファイルにアクセスできます。.サーブレット コンテキスト属性: コンテキストは、Java オブジェクトを格納し、文字列値キーを通じてオブジェクトを識別するために使用できます。これらの属性は、Web アプリケーション全体に対してグローバルであり、getAttribute()、getAttributeNames()、および setAttribute() メソッドを使用できます。アクセスするために。 JSP ページの場合、サーブレット コンテキスト プロパティは「アプリケーション スコープ Bean」に相当します。

サーブレット コンテキストの詳細については、次を参照してください。

The Java Web Services Tutorial の Web コンテキストへのアクセス http:// java.sun.com /webservices/docs/1.0/tutorial/doc/Servlets10.html#64724;

0.7.3 サーブレットリクエスト

サーブレットによって処理される各リクエストは、Java インターフェース、通常は HttpServletRequest インターフェース [javax.servlet.http. HttpServletRequest]。このリクエスト インターフェイスは、基になる HTTP リクエストに含まれるすべての情報にアクセスするための一連のオブジェクト指向メカニズムを提供します。リクエストに含まれる名前アクセス HTTP ヘッダーが渡されます。含まれるすべての HTTP ヘッダーの名前を列挙できます。 パラメータ: URL のクエリ文字列 (doGet) に含まれる名前、またはリクエストのコンテンツ (doPost) に含まれる名前によってアクセスできます。 GET または POST メソッドで使用されるプロトコル仕様 (「http」または「https」) など、HTTP リクエストのその他の特性を入力します。
リクエスト URI 情報: 元のリクエスト URL は getRequestURI( ) 方法 。さらに、サーブレット コンテナは、リクエスト URL を個別にアクセスできるいくつかのコンポーネント (contextPath、servletPath、および pathInfo) に解析します。
ユーザー情報: ユーザー管理のセキュリティを使用している場合は、認証されたユーザー名を検索して A を取得できます。現在のユーザーを表すプリンシパル オブジェクト、および現在のユーザーに特定のロールが許可されているかどうか。さらに、サーブレット リクエストは、前述のサーブレット コンテキストの属性と同様に、リクエスト属性 (JSP ではリクエスト スコープ Bean) もサポートします。リクエスト属性は、ビジネス ロジック層とビュー層の間で状態情報を通信するためによく使用されます。ビジネス ロジック層はこれらの状態情報を生成し、ビュー層はこの情報を使用して対応する応答を生成します。

サーブレットコンテナは、特定のリクエストがサーブレットによって別のスレッドで処理されることを保証するため、サーブレットによってリクエストされたプロパティにアクセスするときにスレッドの安全性の問題を心配する必要はありません。

サーブレット リクエストの詳細については、次を参照してください。

Java Web チュートリアルのリクエストから情報を取得するhttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets7.html#64433;

0.7.4 サーブレット応答

サーブレットの主な目的は、入力されたサーブレット要求 [javax.servlet.http.HttpServletRequest] を処理し、対応する応答を生成することです。応答を生成するプロセスは、サーブレット応答インターフェイス [javax.servlet.http.HttpServletResponse] の対応するメソッドを呼び出すことで完了します。 利用可能なメソッドは次のとおりです:

含まれる HTTP ヘッダー情報を設定できます。応答で。最も重要な HTTP ヘッダー情報は Content-Type で、応答本文にどのような種類の情報が含まれているかをクライアントに伝えます。通常、これを text/html タイプに設定することは HTML ページを意味し、text/xml タイプに設定することを意味します。 XML ドキュメントです。
.Set Cookies: 現在の応答に Cookie を追加できます。
.エラー応答を送信します。(通常のページ コンテンツの代わりに) sendErro() を使用できます。他のリソースへ: sendRedirect() メソッドを使用して、指定した他の URL リソースにクライアントをリダイレクトできます

サーブレット応答 API を使用する重要な原則は、ヘッダー情報と Cookie を維持するために呼び出されるすべてのメソッドが全体に存在する必要があることです。キャッシュされた応答コンテンツは、最初の更新がクライアントに提供される前に完了します。その理由は、この情報は HTTP 応答の最初の部分として送信されるため、ヘッダー情報が送信された後にヘッダー情報を追加しようとしても必然的に無駄になるためです。

モデル 2 アプリケーションのプレゼンテーション層を使用する場合、サーブレット応答 API を直接使用して応答を生成することはできません。これは通常、JSP ページを使用して行われ、JSP コンパイラによって JSP ページがサーブレットに変換されます。この JSP サーブレットには、JSP タグによって生成された動的な情報が含まれる場合があります。

Struts ツールの Velocity フレームワークなどの他のプレゼンテーション システムは、応答を生成するタスクを特殊なサーブレットに委任する場合がありますが、原理は同じです。テンプレートを作成すると、動的応答がテンプレートから動的に生成されます。

サーブレット応答の詳細については、次を参照してください:

.ConstrUCting Responses in The Java Web Tutorialhttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets7.html#64531;

0.7 .5 フィルタリング

バージョン 2.3 以降の仕様 (Tomcat 4.x など) のサーブレット コンテナを使用する場合は、新しいフィルタ API [javax.servlet.Filter] を使用して、いくつかのコンポーネントを組み合わせてリクエストを処理し、レスポンスを生成できます。フィルターは実際にはフィルター チェーンの集合であり、各フィルターはリクエストを処理して応答を生成し、処理能力を次のフィルターに渡し、最後にサーブレットを呼び出します。

Struts 1.x系(バージョン1.0、1.1など)はバージョン2.2以前のサーブレット仕様のサーブレットコンテナのみをサポートしているため、Struts自体はフィルターを使用しません。次世代の Struts (2.x シリーズ) は、Servlet2.3 以降の仕様に基づいています。 Struts バージョン 2.x ではフィルターを使用する場合があります。

フィルターの詳細については、次を参照してください:

.Filtering Requests and Responseshttp://java.sun.com/webservices/docs/1.0/tutorial/doc/Servlets8.html#64572;

0.7.6 Session (セッション

上記は Struts ユーザーおよび開発ガイド (序文 2) の内容です。その他の関連記事については、PHP 中国語 Web サイト (www.php.cn) を参照してください


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。