1

web.xml ファイルの代わりに注釈を使用する場合、通常はServletConfigオブジェクトから読み取ることができるサーブレットの init/config パラメータをどうしますか? すなわち

@WebFilter("/sample")
public class MyServlet {

    public void init() throws ServletException {
        String value = getServletConfig().getInitParameter("key");
        // or
        value = getServletContext().getInitParameter("key");
    }
}

またはフィルターの場合:

public class MyFilter implements Filter {

    public void init (FilterConfig filterConfig) throws ServletException {
        filterConfig.getInitParameter("key");
    }

}

更新:注釈に構成パラメーターをハードコードできることは知っていますが、構成設定をコードにハードコードしたくありません。たとえば、次のサーブレットは 2 つのアプリケーション間で共有できませんでした。

@WebFilter("/sample", initParams = {@InitParam(name = "database_host", value = "blah.com")})
public class MyServlet {

    public void init() throws ServletException {
        String value = getServletConfig().getInitParameter("database_host");
    }
}
4

2 に答える 2

1
 @WebServlet(name = "TestServlet", urlPatterns = {"/test"},
 initParams = {@WebInitParam(name="key", value="value")})

 public class TestServlet extends HttpServlet {

   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        
      String key= getInitParameter("key");
   }
 }

編集:

更新された質問に答えるには、次の 2 つのオプションがあります。

  1. web.xmlベースの初期化パラメーターを使用する古いパターンを使用する

  2. 他のプロジェクトでサーブレットのダミー拡張機能 (サブクラス) を作成し、新しい初期パラメーターを割り当てるだけです。

于 2012-10-16T03:52:19.280 に答える
0

これがあなたの言いたいことだと思います

@Servlet(urlMappings={"/MyApp"}, initParams ={@InitParam(name="lang", value="english")})
public class MyServlet {

このAn Introduction To Servlet 3.0 を参照できます

于 2012-10-16T03:49:37.877 に答える