サーブレット3.0に導入された新しいプロパティの紹介(2)


@WebInitParam
@WebInitParam注記を使用して、サーブレットまたはfilterの初期パラメータを設定できます.もちろん@WebServiceまたは@WebFilterのinitParamプロパティを使用して初期パラメータを指定することもできます.@WebInitParamを使用した例を次に示します.

@WebServlet(name = "GetQuoteServlet", urlPatterns = {"/getquote"})
@WebInitParam(name = "default_market", value = "NASDAQ")
public class GetQuoteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String market = getInitParameter("default_market");
            String symbol = request.getParameter("symbol");
            out.println("<h1>Stock Price in " + market + " is</h1>" + StockQuoteBean.getPrice(symbol, market));
        } finally {
            out.close();
        }
    }
}

次に、initParamプロパティを使用する例を示します.

@WebServlet(name = "GetQuoteServlet",
            urlPatterns = {"/getquote"},
            initParams={@WebInitParam(name="default_market",  value="NASDAQ")}
           )
public class GetQuoteServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String market = getInitParameter("default_market");
            String symbol = request.getParameter("symbol");
            out.println("<h1>Stock Price in " + market + " is</h1>" + StockQuoteBean.getPrice(symbol, market));
        } finally {
            out.close();
        }
    }
}

@WebListener
@WebListener注釈はlistenerとしてwebアプリケーションイベントを傍受するクラスに適用されるので、@WebListenerは、サーブレットContextListener、サーブレットContextAttributeListener、サーブレットRequestListener、サーブレットRequestAttributeListener、HttpSessionListener、およびHttpSessionAttributeListenerインタフェースを実現するクラスに適用される.次の例では、このクラスはサーブレットContextListenerインタフェースを実装する.

@WebListener
public class QuoteServletContextListener implements ServletContextListener {
   public void contextInitialized(ServletContextEvent sce) {
   ServletContext context = sce.getServletContext();
context.setInitParameter(“default_market”, “NASDAQ”);
}
public void contextDestroyed(ServletContextEvent sce) {
}
}

@MultipartConfig
@MultipartConfig注記を使用して、サーブレットが要求するMultipart MIMEタイプを指定します.このタイプのMIME添付ファイルはrequestオブジェクトから読み込まれます.
The Metadata and Common Annotationsメタデータと共通の注釈
サーブレット3.0は、前述のサーブレット固有の注釈に加えて、JSR 175(Javaメタデータ仕様)およびJSR 250(Javaプラットフォーム共通注釈)で規定された注釈をサポートします.
    * @DeclareRolesや@RolesAllowedなどのセキュリティ関連の注釈
    * @EJBや@EJBsなどのEJBを使用した注記
    * @Resourcesや@Resourcesなどのリソース注入に関する注記
    * @PersistenceContext,@PersistenceContexts,@PersistenceContexts,@PersistenceUnit,@PersistenceUnitsなどのJPAを使用した注記
    * @PostConstructや@PreDestroyなどのライフサイクルの注記
    * @WebServiceRefand@WebServiceRefsなどのWebServiceRef参照の注記を提供
注記とweb.xmlのどちらが有効になりますか?
注記の導入によりweb.xmlがオプションになりました.しかし、web.xmlは使用できます.コンテナは、web.xmlのmetadata-complete要素の値に基づいて、web.xmlを使用するか、注釈を使用するかを決定します.要素の値がtrueの場合、コンテナは注釈を処理せず、web.xmlはすべての情報のソースです.要素が存在しない場合、またはその値がtrueでない場合、コンテナは注釈を処理します.
転載先 
開発者の空