반응형

すべてのJ2EEウェブアプリケーションは、web.xmlというデプロイメントディスクリプタで設定される必要があり、これはJSFも同様です。
JSFの場合、FacesServletがメインのサーブレットであるため、web.xmlにFacesServletを登録する必要があります。

 

基本的に、servletタグでサーブレットを指定し、servlet-mappingでパターンを設定する形でJSFのマッピングを行います。
当然のことですが、指定したサーブレットに対するマッピングを行うため、<servlet>タグ内の<servlet-name>と<servlet-mapping>タグの<servlet-name>は同じでなければなりません。

<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>*.xhtml</url-pattern>
</servlet-mapping>

 

フィルタの場合、技術的にはサーブレットで実行できるすべての処理を実行できるため、<servlet-mapping>の代わりに<filter>タグでフィルタクラスを指定し、<filter-mapping>タグでマッピングすることもあります。

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.example.MyFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

 

もちろん、<servlet-mapping>と<filter-mapping>のそれぞれにパターンを設定して両方を使用することも可能ですが、この場合はフィルタが先に実行され、サーブレットが最終的に処理を行います。

 

 

JSFのマッピング可否について


JSFのマッピング <servlet-mapping> <filter-mapping> 備考
OK  
OK  
OK 処理順序:
フィルタ ⇒ サーブレット
NG  

 


原文はこちら JSF web.xml 서블릿, 필터 맵핑


記事の内容に誤りがあったり、追加したい内容がありましたら、コメントでお知らせください。学習の助けになります。
-- 記憶の有効期限は思ったより短い。 --

 

반응형