AddServlet vs CreateServlet Servlet上下文方法



我正在探索servlet 3.0以编程性地添加servlet的功能,我无法完全得到以下区别:

  1. createServlet(class< t> clazz(
  2. addservlet(字符串ServletName,class<?

考虑:

  • 方法(1(给出了servlet的实例;
  • 方法(1(可能会抛出异常,而方法(2(则不。

(1(有什么用?
我在ServletContextListener中使用(2(,一切似乎都没有问题。

createServlet的理由在Javadoc中说明:

返回的servlet实例可以进一步定制 通过呼叫在此ServletContext注册 addservlet(字符串,servlet(。此方法在以下注释>:...此外,此方法支持资源注入如果给定的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);   

最新更新