初始化servlet中的两个init方法的区别
2017-02-15 18:28
471 查看
容器创建了Servlet实例后,它将调用实例的init(ServletConfig)方法初始化Servlet.该方法的参数ServletConfig对象包含了在WEB应用程序的部署描述文件中指定的初始化参数。在init(ServletConfig)调用完后,容器将调用init()方法,之后Servlet就被初始化了。
两者不同定义
voidinit(ServletConfig config) throwsServletException
public void init() throwsServletException
其原理如下:1.如果用户不需要设置一些初始化操作,那么init()方法的实现可有可无,因为可以从父类GenericServlet中继承得到.
2.如果用户需要servlet通过从web.xml中读取initializationparameters或者configuration data,那么就需要显式实现init()方法.
3.GenericServlet 提供两个overloaded形式的方法如下:
public void init() throws ServletException
public void init(ServletConfig) throwsServletException
4.Servletinterface只定义一个init(ServletConfig)方法,而且servlet加载时必须被调用,但只在第一次加载被调用一次.
5.GenericServlet实现了这个init(ServletConfig)方法,这个方法先保存ServletConfigreference,然后调用init()方法.
6.如果用户servlet实现init()方法并在其中填充自己需要初始化的信息,这个init()会被GenericServlet中的init(ServletConfig)方法调用.因为ServletConfigreference已经
被保存,所以你可以访问web.xml中的.
7.如果用户servlet实现init(ServletConfig),那么就覆盖了GenericServlet(父类)的init(ServletConfig)方法,因此,GenericServlet会调用子类的方法,而不会保存
ServletConfig reference,必须执行super.init(config);才能保存ServletConfigreference访问web.xml中的.
8.所以你有两种方法初始化,如下:
第一种方法是
public class LoginServlet extends HttpServlet {
public void init() throws ServletException {
}
//...Rest of Servlet
}
第二中方法是
public class LoginServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException{
super.init(config);
// ...Remainder of init()method
}
//...Rest of Servlet
}
9.servlet初始化正常结束,才能处理处理用户的请求,如果在初始化方法init()中出现错误,那么需要throw aServletException或者父类的UnavailableException.这会告诉
servlet容器初始化失败,不能处理任何请求.
两者不同定义
voidinit(ServletConfig config) throwsServletException
public void init() throwsServletException
其原理如下:1.如果用户不需要设置一些初始化操作,那么init()方法的实现可有可无,因为可以从父类GenericServlet中继承得到.
2.如果用户需要servlet通过从web.xml中读取initializationparameters或者configuration data,那么就需要显式实现init()方法.
3.GenericServlet 提供两个overloaded形式的方法如下:
public void init() throws ServletException
public void init(ServletConfig) throwsServletException
4.Servletinterface只定义一个init(ServletConfig)方法,而且servlet加载时必须被调用,但只在第一次加载被调用一次.
5.GenericServlet实现了这个init(ServletConfig)方法,这个方法先保存ServletConfigreference,然后调用init()方法.
6.如果用户servlet实现init()方法并在其中填充自己需要初始化的信息,这个init()会被GenericServlet中的init(ServletConfig)方法调用.因为ServletConfigreference已经
被保存,所以你可以访问web.xml中的.
7.如果用户servlet实现init(ServletConfig),那么就覆盖了GenericServlet(父类)的init(ServletConfig)方法,因此,GenericServlet会调用子类的方法,而不会保存
ServletConfig reference,必须执行super.init(config);才能保存ServletConfigreference访问web.xml中的.
8.所以你有两种方法初始化,如下:
第一种方法是
public class LoginServlet extends HttpServlet {
public void init() throws ServletException {
}
//...Rest of Servlet
}
第二中方法是
public class LoginServlet extends HttpServlet {
public void init(ServletConfig config) throws ServletException{
super.init(config);
// ...Remainder of init()method
}
//...Rest of Servlet
}
9.servlet初始化正常结束,才能处理处理用户的请求,如果在初始化方法init()中出现错误,那么需要throw aServletException或者父类的UnavailableException.这会告诉
servlet容器初始化失败,不能处理任何请求.
相关文章推荐
- servlet中两个init方法的区别
- 初始化Servlet两个init的区别
- getServletContext和getServletConfig都有getInitParameter的方法 区别
- Servlet中的两个init()方法
- Servlet中的两个init()方法
- GenericServlet为什么有两个init方法
- 解答上篇Servlet研究的问题(取初始化参数问题):context-param和init-param区别
- 两个init方法的区别
- java.Servlet.GenericServlet中为什么有两个init方法
- Servlet中的两个init()方法
- SERVLET中的doGet与doPost两个方法之间的区别
- Servlet的init()方法和service()方法的区别是什么
- 两个init方法的区别
- SERVLET中的doGet与doPost两个方法之间的区别
- java.Servlet.GenericServlet中有两个init方法
- Servlet中两个Init()的区别
- J2EE上API上两个init方法的区别
- 两个Init()方法的区别
- Servlet为什么有两个init()方法
- Servlet详解之两个init方法的作用