1

web.xml以外のサーブレット(または少なくともサーブレットのマッピング)を有効または無効にする方法があるのだろうか。同じweb.xmlを使用する複数の種類のサーバーがあります(これを変更することはできません)。そのため、サーブレットを有効/無効にする別の方法が役立つでしょう。

ありがとう、テオ

4

5 に答える 5

1

サーブレット3.0以降でアノテーションを使用できますが@WebServlet、これが要件に対応するかどうかわからない場合は、これが希望どおりでない場合はコメントしてください。

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
// code code code
}
于 2012-08-03T07:50:56.787 に答える
0

Tomcat 7.x /サーブレット3.0を使用している場合は、プログラムでサーブレットフィルタを追加して、web.xmlファイルやアプリケーションコードに触れることなく、一部のサーブレットへのアクセスを動的に有効/無効にすることができます。

于 2012-08-03T08:30:16.383 に答える
0

ある種の構成を読み取り、特定の構成済みパスを通過またはリダイレクトするWebフィルターを作成するだけです。

もう1つのオプションは、セキュリティレイヤー(Spring Securityなど)のパスをブロックすることです(実際には、上記のようなものを使用します)。

于 2012-08-03T08:31:06.533 に答える
0

フィルタ(を実装するクラス)を作成してjavax.servlet.Filterから、xmlまたはpropertiesファイル、さらにはにdatabase、ユーザーがアクセスできる、またはアクセスできないサーブレットの名前を追加するのはどうでしょうか。

于 2012-08-03T08:32:14.527 に答える
0

私の知る限り、デプロイメント記述子以外にサーブレットをプログラムで無効にするようなことはありません。

私がそのような問題に取り組む方法は次のとおりです。

-各サーブレットのservice()メソッドに、次のようなアクセスを制御したいifステートメントを追加します。

if(MyCustomSecurity.isServletAccessible(request)){
  //here is your code that you have right now
}else{
  //redirect request to an error page maybe
}

-MyCustomSecurityクラスにこのメソッドisServletAccessible()を作成します。これは、ユーザーがサーブレットにアクセスできるかどうかに関係なく、ブール値を返します。

于 2012-08-03T08:23:37.400 に答える