2

サーブレットと JSP でしばらく過ごした後、私は JSF について何かを学ぼうとしています。基本を学び、いくつかの簡単な例を作成し、「ワークフロー」の基本的な考え方を理解しましたが、javax.faces.webapp.FacesServlet の内容をまだ理解できません。

<servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
  </servlet>
<servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>

「Faces Servlet」は XML の単なる「内部」名であり、クラス (この場合は javax.faces.webapp.FacesServlet) にバインドされることを知っています。しかし、とにかくこのクラスはどこですか?! 私はEclipseを使用しており、新しい動的プロジェクト、サーバーとしてGlassFish 4.0、構成としてJSF 2.0を作成し(ライブラリを選択していません)、jarもインポートしませんでした。どのように機能しますか?JBoss で同じことを実行しようとすると、javax.faces-2.2.2.jar ファイルをインポートする必要があります。

わかりました。ライブラリは GlassFish に既に含まれている可能性がありますが、別のサーバーにアプリをデプロイしようとすると問題が発生しますか? JBoss や Websphere のように。

一言で言えば、JSFテクノロジーを使用する際の前提条件は何ですか:)

ありがとうございました。

4

1 に答える 1

8

javax.faces.webapp.FacesServletServletインターフェイスを実装するクラスです。アプリケーションで認識されるようにするには、web.xml に .xml として追加する必要があります<servlet>。これは基本的に次の構成で行われます。

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

これで、 Faces サーブレット名を使用して web.xml ファイルでこのクラスを参照できます。次に行うことは、このサーブレットによって処理される URL を定義することです。これは、次の構成で行われます。

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>

したがって、 jsfサフィックスで終わるこのアプリケーション サーバーへの GET または POST 要求は、Faces サーブレットによって処理されます。サーブレット マッピングには他の URL パターンを使用できます。これについては、こちらで詳しく説明しています: JSF Facelets: URL が .jsf である場合もあれば、.xhtml である場合もあります。なんで?

アプリを別のサーバーにデプロイしようとすると、何か問題が発生しますか? JBoss や Websphere が好きですか?

アプリケーション サーバーが Java EE 5 準拠のサーバーである場合、JSF 1.2 形式の Mojarra 実装を使用して、このサーブレットにアクセスできます。Java EE 6 準拠のサーバーの場合、これは JSF 2.x の Mojarra 実装になります (正確なバージョンを知るには、アプリケーション サーバーのメモを確認してください)。現在、GlassFish 4 では、JSF 2.2 用の Mojarra を取得します。

アプリケーション サーバーが Java EE 準拠のサーバー (Tomcat など) でない場合は、ライブラリを Web アプリケーションの WEB-INF/lib フォルダーに手動で追加する必要があります。どのライブラリを追加しますか? JSF のバージョンとその要件によって異なります (詳細を参照)。

JSF テクノロジを使用する際の前提条件は何ですか?

これはStackOverflow JSF wikiでカバーされています。そこから取られた:

最小要件

  • JSF 1.0 および 1.1 には、少なくとも Servlet 2.4 / JSP 2.0 および Java 1.4 が必要です。
  • JSF 1.2 は Servlet 2.4 で動作しますが、Servlet 2.5 と連携する JSP/EL 2.1 が最低限必要なので、結局のところ Servlet 2.5 が必要です。デフォルトのビュー テクノロジとして JSP 2.1 を Facelets 1.x に置き換えると、Servlet 2.4 で JSF 1.2 を使用できます。Java 1.5 以上が必要です。
  • デフォルトで Facelets 2.x を使用する JSF 2.0 には、サーブレット 2.5 と連携する EL 2.1 が最低限必要であるため、結局のところサーブレット 2.5 が必要です。独自の EL 2.1 API/impl を提供する場合、理論上はサーブレット 2.4 で JSF 2.0 を実行できます。Java 1.5 以上が必要です。
  • JSF 2.1 は Servlet 3.0 固有の機能をいくつか使用しますが、Servlet 2.5 と下位互換性があります。これらの Servlet 3.0 機能はオプションです。
  • JSF 2.2 には、サードパーティ ライブラリを必要とせずに標準の Servlet 3.0 API を内部で使用する新しいファイル アップロード コンポーネントがあるため、少なくとも Servlet 3.0 が必要です。Java 1.6 以上が必要です。

サーブレット 2.4 コンテナーの例は、Tomcat 5.5.x、JBoss AS 4.x、および Sun Java Application Server です。

Servlet 2.5 コンテナーの例としては、Tomcat 6.0.x、JBoss AS 5.x、および GlassFish 2.x があります。

Servlet 3.0 コンテナーの例としては、Tomcat 7.0.x、JBoss AS 6.x および 7.x、GlassFish 3.x があります。

Servlet 3.1 コンテナーの例としては、Tomcat 8.0.x、WildFly 8.x、および GlassFish 4.x があります。

于 2013-08-12T19:20:31.393 に答える