Servlet3.0 Spec Early Draft
どうやらダウンロード可能になってるみたいですね。
ちょっくらチェケラしてみますw
(追記)
Spec読むなら、8.1.あたりからかな。
アノテーション関連の追記はここだけですね。
@Servletアノテーションの付いたPOJOクラスをどのように見つけるかは
あんまり言及されてなくて、
- WEB-INF/classes以下
- jarになってりゃWEB-INF/lib
- アプリケーションクラスパスのどっか
を探すぜとしか書いてない。
metadata-complete属性がweb-appタグにつくので、それをfalseにしないと
アノテーション探しに行ったりとか、web.xmlの断片を読み込んだりしない仕様な模様。
デフォルトはfalseみたいだね。
<web-app metadata-complete="false"><!-- これで探しにいく --> </web-app>
Servletはこんなん。
@Servlet(urlMappings={"/foo", "/bar"}) public class SampleUsingAnnotationAttributes { @GET public void handleGet(HttpServletRequest req, HttpServletResponse res) { } }
最低でもひとつの@HttpMethod(@GET、@POSTなどなど)をつけたメソッドがないといけない。
@HttpMethodがついたメソッドはHttpServletRequest、HttpServletResponseを引数にとらないといけない。
ServletFilterはこんな感じみたいだけど。こちらはdoFilterメソッドとかに制約は特に書いて無いけど???
なんかそのへんまだ決まってないのかな。
@ServletFilter @FilterMapping(“/foo”) public class MyFilter { public void doFilter(HttpServletRequest req, HttpServletResponse res) { ... } }
ServletContextListenerもこんなん。
@ServletContextListener public class MyListener { public void contextInitialized(ServletContextEvent sce) { ServletContext sc = sce.getServletContext(); sc.addServlet("myServlet", "Sample servlet", "foo.bar.MyServlet", null, -1); sc.addServletMapping("myServlet", new String[] {"/urlpattern/*" }); } }