5

JSPとサーブレットを使用してWebアプリケーションを開発しています。

目的で開発しservlet filterました。Loginユーザーがログインしているかどうかを確認します。ユーザーがログインしている場合は、要求されたリソースへのアクセスを許可し、ログインしていない場合は要求を にリダイレクトしLogin pageます。そして、それは完璧に機能します。

フィルター

public class MyFilter implements Filter
{
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException 
    {
        //code here
    }
}

web.xml

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.myfilter.MyFilter</filter-class>
    <init-param>
        <param-name>PARAM_NAME_HERE</param-name>
        <param-value>PARAM_VALUES_HERE</param-value>
    </init-param>
</filter>

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

Loginこれで、 onという名前のこのアプリケーションをデプロイしましたTomcat 7。これservlet filterは、この Web アプリケーションのリソース (JSP、Servltes、.css、.js) に対して完全に機能します。

などのTomcat他のWebアプリケーションが. _ 他のアプリケーション リソースへのすべての要求が、私が開発した を通過する必要があることを意味します。ProfilesDistributionFilterLoginTomcatFilter

だから、どんな提案も大歓迎です!

編集1

Filterを含むパッケージを他のアプリケーションに入れたくありません。Tomcat サーバーには 10 を超えるアプリケーションがデプロイされており、さらにいくつかのアプリケーションがデプロイされるためです。したがって、 を含むパッケージをFilter他のすべてのアプリケーションに配置し、サーブレット マッピングを実行するとします。ただし、数日後に Filter に変更を加えたい場合は、すべてのアプリケーションを変更し、それらを再デプロイする必要があります。

4

2 に答える 2

3

あなた<filter><filter-mapping>定義を中に入れてください$CATALINA_HOME/conf/web.xml

これらの定義は、すべての Web アプリケーションで共有されます。

すべてのログイン関連のロジックを jar にパッケージ化して配置し、$CATALINA_HOME\libすべての Web アプリケーションからアクセスできるようにする必要があります。

于 2013-04-13T08:55:16.997 に答える
1

このコードを他の 2 つのアプリケーションの web.xml に追加します。

<filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.myfilter.MyFilter</filter-class>
    <init-param>
        <param-name>PARAM_NAME_HERE</param-name>
        <param-value>PARAM_VALUES_HERE</param-value>
    </init-param>
</filter>

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

フィルター

public class MyFilter implements Filter
{
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException 
    {
        //code here
    }
}
于 2013-04-13T08:25:19.910 に答える