public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
..................
}
super.init(config); //问题是这个
this.config = config;//既然 后面已经设置了 this.config 可以不用写super.init(config) 了吗 this 指的是Test 如果是已经赋值了 为什么还要 继承父类的 init(config) 方法
写 super.init(config); 是有什么作用
如果在 Test{
……
//没有 super.init(config); 可以用下面的吗
config。getServletConfig() //还是其他用法
……
} 写 super.init(config); 是有什么作用 谢谢
public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException { //super.init(config); 不写这个
this.config = config;
init();//写这个。可以吗 还要写上面的那个吗? config 已经赋值了 难道还要赋值其他的吗?
}
..................
}
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
..................
}
super.init(config); //问题是这个
this.config = config;//既然 后面已经设置了 this.config 可以不用写super.init(config) 了吗 this 指的是Test 如果是已经赋值了 为什么还要 继承父类的 init(config) 方法
写 super.init(config); 是有什么作用
如果在 Test{
……
//没有 super.init(config); 可以用下面的吗
config。getServletConfig() //还是其他用法
……
} 写 super.init(config); 是有什么作用 谢谢
public class Test extends HttpServlet
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException { //super.init(config); 不写这个
this.config = config;
init();//写这个。可以吗 还要写上面的那个吗? config 已经赋值了 难道还要赋值其他的吗?
}
..................
}
调用
super。init(config) 是给父类的config 赋值吗?
1)重写
public void init() throws ServletException 方法,不建议重写:public void init(ServletConfig config) 方法.
2)要获取ServletConfig对象,随时使用:public ServletConfig getServletConfig()方法.
3)原因:
<A> 对于容器而言:只认识或调用public void init(ServletConfig config) 方法(这是Servlet接口中定义的方法)
,不认识或调用public void init() 方法(Servlet接口中没有定义这个方法)
<B>因此:理论上程序员应该重写public void init(ServletConfig config) 方法.但由于重写该方法时,必须记住首先要调用:super.init(config); 但程序员经常会忘记这一点,为此,在GenericServlet类的设计中,专门加上了一个:public void init() 方法,程序员只要自己任意重写这个方法主可以了(即:完全不必再忘记什么:super.init(....);了 )
<C>那么:这两人方法之间是什么关系?见代码我加的注解你就明白了
关系如下:(代码说话) public void init(ServletConfig config) throws ServletException {
//这个方法你就不用再操心了,由容器自己自动去调用它.这样:程序员就不用再去重写这个方法了,只管重写init()
this.config = config;
init();//自动调用init()
}
public void init() throws ServletException {
/* 你自己任意重写的代码 */
}