读书人

Servlet3.1轨范翻译注解和可插拔性

发布时间: 2012-12-26 14:39:28 作者: rapoo

Servlet3.1规范翻译——注解和可插拔性

?

注解和可插拔性

@WebServlet(”/foo”)public class CalculatorServlet extends HttpServlet{//...}

@WebServlet(name=”MyServlet”, urlPatterns={"/foo", "/bar"})public class SampleUsingAnnotationAttributes extends HttpServlet{ public void doGet(HttpServletRequest req, HttpServletResponse res) { }}8.1.2 @WebFilter

代码示例 8-3 @WebFilter 注解示例@WebFilter(“/foo”)public class MyFilter implements Filter { public void doFilter(HttpServletRequest req, HttpServletResponse res) { ... }}8.1.3 @WebInitParam

@WebListenerpublic class MyListener implements ServletContextListener{ 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/*" }); }}8.1.5 @MultipartConfig

<web-fragment> <servlet> <servlet-name>welcome</servlet-name> <servlet-class> WelcomeServlet </servlet-class> </servlet> <listener> <listener-class> RequestListener </listener-class> </listener></web-fragment>

?

web-fragment.xml<web-fragment> <name>MyFragment1</name> <ordering><after><name>MyFragment2</name></after></ordering> ...</web-fragment>

web-fragment.xml<web-fragment>  <name>MyFragment2</name>  ..</web-fragment>
web-fragment.xml<web-fragment>  <name>MyFragment3</name>  <ordering><before><others/></before></ordering>  ..</web-fragment>?
web.xml<web-app>  ...</web-app>

在该示例中,处理顺序将是:

web.xml<web-app><absolute-ordering> <name>MyFragment3</name> <name>MyFragment2</name> </absolute-ordering> ...</web-app>

在该示例中,各种元素的顺序将是:

?

<after> <others/> <name> C </name></after>

<before> <others/></before>?

<after> <others/></after>

?

<before> <others/> <name> B </name></before>?

<after> <others/></after><before> <name> C </name></before>?

<before> <others/></before>?

<after> <others/></after>?

<before> <others/></before>?

<after> <name> B </name></after>

?

<before> <others/></before>?

<resource-ref> <resource-ref-name="foo"> ... <injection-target> <injection-target-class> com.foo.Bar.class </injection-target-class> <injection-target-name> baz </injection-target-name> </injection-target></resource-ref>??

<resource-ref> <resource-ref-name="foo"> .... <injection-target> <injection-target-class> com.foo.Bar.class </injection-target-class> <injection-target-name> baz </injection-target-name> </injection-target></resource-ref>?

<resource-ref> <resource-ref-name="foo"> ...</resource-ref>??

<resource-ref> <resource-ref-name="foo"> ... <injection-target> <injection-target-class> com.foo.Bar.class </injection-target-class> <injection-target-name> baz </injection-target-name> </injection-target></resource-ref>

?

<resource-ref> <resource-ref-name="foo"> ... <injection-target> <injection-target-class> com.foo.Bar2.class </injection-target-class> <injection-target-name> baz2 </injection-target-name> </injection-target></resource-ref>?

<resource-ref> <resource-ref-name="foo"> ....<injection-target> <injection-target-class> com.foo.Bar.class </injection-target-class> <injection-target-name> baz </injection-target-name> </injection-target> <injection-target> <injection-target-class> com.foo.Bar2.class </injection-target-class> <injection-target-name> baz2 </injection-target-name> </injection-target></resource-ref>?

<resource-ref> <resource-ref-name="foo"> <injection-target> <injection-target-class> com.foo.Bar3.class </injection-target-class> <injection-target-name> baz3 </injection-target-name> ...</resource-ref>?

<resource-ref> <resource-ref-name="foo"> ... <injection-target> <injection-target-class> com.foo.Bar.class </injection-target-class> <injection-target-name> baz </injection-target-name> </injection-target></resource-ref>?

<resource-ref> <resource-ref-name="foo"> ... <injection-target> <injection-target-class> com.foo.Bar2.class </injection-target-class> <injection-target-name> baz2 </injection-target-name> </injection-target></resource-ref>?

<resource-ref> <resource-ref-name="foo"> <injection-target> <injection-target-class> com.foo.Bar3.class </injection-target-class> <injection-target-name> baz3 </injection-target-name> <injection-target-class> com.foo.Bar.class </injection-target-class> <injection-target-name> baz </injection-target-name> <injection-target-class> com.foo.Bar2.class </injection-target-class> <injection-target-name> baz2 </injection-target-name> </injection-target> ...</resource-ref>?

@WebServlet(urlPatterns=”/MyPattern”, initParams={@WebInitParam(name="ccc", value="333")})public class com.acme.Foo extends HttpServlet { ...}?

<servlet> <servlet-class>com.acme.Foo</servlet-class> <servlet-name>Foo</servlet-name> <init-param> <param-name>aaa</param-name> <param-value>111</param-value> </init-param></servlet><servlet> <servlet-class>com.acme.Foo</servlet-class> <servlet-name>Fum</servlet-name> <init-param> <param-name>bbb</param-name> <param-value>222</param-value> </init-param></servlet><servlet-mapping> <servlet-name>Foo</servlet-name> <url-pattern>/foo/*</url-pattern></servlet-mapping><servlet-mapping> <servlet-name>Fum</servlet-name> <url-pattern>/fum/*</url-pattern></servlet-mapping>

?

<servlet> <servlet-class>com.acme.Foo</servlet-class> <servlet-name>com.acme.Foo</servlet-name> <init-param> <param-name>ccc</param-name> <param-value>333</param-name></servlet>

?

<servlet> <servlet-class>com.acme.Foo</servlet-class> <servlet-name>com.acme.Foo</servlet-name> <init-param> <param-name>aaa</param-name> <param-value>111</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>com.acme.Foo</servlet-name> <url-pattern>/foo/*</url-pattern> </servlet-mapping>?

<servlet> <servlet-class>com.acme.Foo</servlet-class> <servlet-name>com.acme.Foo</servlet-name> <init-param> <param-name>aaa</param-name> <param-value>111</param-value> </init-param><init-param> <param-name>ccc</param-name> <param-value>333</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>com.acme.Foo</servlet-name> <url-pattern>/foo/*</url-pattern> </servlet-mapping>?

@HandlesTypes(WebService.class)JAXWSServletContainerInitializer implements ServletContainerInitializer { public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException { // 在此,使用JAX-WS 特定的代码来初始化运行库和设置mapping等。 ServletRegistration reg = ctx.addServlet("JAXWSServlet", "com.sun.webservice.JAXWSServlet"); reg.addServletMapping("/foo"); }}

?

servlet3还是不少好东西 5 楼 xiangdefei 昨天 异步servlet是3.1里面的吧。 6 楼 jinnianshilongnian 昨天 xiangdefei 写道异步servlet是3.1里面的吧。
3.0里新增的

读书人网 >软件架构设计

热点推荐