-1
我探索編程添加servlet來的背景下,我不能完全得到之間的差異的Servlet 3.0功能:addservlet VS createservlet servlet上下文方法
考慮到:
- 方法(1)給出servlet的實例;方法(1)可能拋出異常,而方法(2)不會。
(1)有什麼用?
我在ServletContextListener
中使用(2),看起來一切正常,沒有問題。
我探索編程添加servlet來的背景下,我不能完全得到之間的差異的Servlet 3.0功能:addservlet VS createservlet servlet上下文方法
考慮到:
(1)有什麼用?
我在ServletContextListener
中使用(2),看起來一切正常,沒有問題。
爲createServlet
的原理是在Javadoc指出:
返回servlet實例可以進一步定製之前,它是 通過對 addServlet(字符串,Servlet的)的調用這個ServletContext的註冊。此方法反思了以下註釋的給定clazz:...此外,如果給定的clazz表示託管Bean,則此方法支持資源注入。
所以API允許你做到以下幾點:
// create a servlet, process annotations and do injections
MyServlet myServlet = context.createServlet(MyServlet.class);
// further customization
myServlet.runSpecialInit(someArg);
// register
context.addServlet("theName", myServlet);
或者你可以做以下
MyServlet myServlet = new MyServlet();
myServlet.runSpecialInit(someArg);
context.addServlet("theName", myServlet);
,但違背了第一個片段,這將不計算註釋和做注射。
而且你能想到的addServlet(String servletName, Class<? extends Servlet> servletClass)
作爲縮寫
Servlet servlet = createServlet(servletClass);
addServlet(servletName, servlet);