タイトルの通りなのですが、今更ながらJavaサーブレットがアノテーションで登録できるようになったことを知りました。
以前であれば(サーブレットバージョン2.5など)、サーブレットはWebアプリケーションの設定ファイルであるweb.xmlに登録することで動作させることができました。
以下のようにweb.xmlに設定を記載することで、サーブレットが使えるようになります。
<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping>
これをいちいち登録するのはかなり面倒なので、Tomcatであればinvoker Servletと呼ばれる機能があったり、楽にサーブレットを使うための方法もあったりました。
ですが、サーブレット3.0からサーブレットの登録にアノテーションを使うことができるようになっていました。以下のような感じです。
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; @WebServlet("/HelloServlet") public class HelloServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getWriter(); out.println("hello"); } }
サーブレットを定義するためのお決まりのHttpServeltの継承とdoGetメソッドなどの実装はそのままですが、クラスに「@WebServlet」アノテーションが付与されています。
なんとこれだけで、http://localhost/sample/HttpServletとかでアクセスしてサーブレットを動作させることができるようになったのです。web.xmlに面倒なサーブレットの登録作業は不要になりました。因みに、今までの方法が使えなくなったわけではないです。単純にサーブレットの登録方法が増えたということですね。
他にも、サーブレットフィルタも同じような記法が用意されているようで、知らない間に色々と進んでいるなと思いました。
しかし、最近は素のサーブレットを触る機会もないと思うので必要な知識かと言えば微妙なところですが、暇さえあれば随時知識をUPDATEしていきたいところです(この機能が追加されたのも、少し調べてみたら10年くらい前でした。。できる限り早く情報をキャッチアップしてないと遅れてしまいますね。。)。
今回はこの辺で。最後までお読みいただきありがとうございました。