GenericServlet类的实现接口中包括了ServletConfig接口,但是它自身的init(ServletConfig config)方法又需要外界给它传递一个实现ServletConfig的对象,就是说GenericServlet和ServletConfig的依赖关系既是继承关系,也是一种关联关系。
问:GenericServlet类中为什么要实现ServletConfig接口?如果没有实现这个接口,它依然能实现自己的功能,感觉他俩的关系好乱啊
求解
问:GenericServlet类中为什么要实现ServletConfig接口?如果没有实现这个接口,它依然能实现自己的功能,感觉他俩的关系好乱啊
求解
另外,getInitParameter之类的方法都能直接工作,而不依赖于子类的init(ServletConfig)的实现方式。
GenericServlet类中的init()方法是为了方便的,如果覆盖了init(ServletConfig config) 方法,还是应该调用super.init(conifg)方法的。GenericServlet实现ServletConfig接口,只是为了必须实现ServletConfig中的那几个方法?如果不实现ServletConfig接口,但在GenericServlet类中依然声明那几个方法,不是一样可以吗。
GenericServlet类中的init()方法是为了方便的,如果覆盖了init(ServletConfig config) 方法,还是应该调用super.init(conifg)方法的。GenericServlet实现ServletConfig接口,只是为了必须实现ServletConfig中的那几个方法?如果不实现ServletConfig接口,但在GenericServlet类中依然声明那几个方法,不是一样可以吗。是可以用,但是,有了这个通用的初始化方法,很多需要实现Servlet接口的class就不必每次都写一模一样的代码了。这个和java.util.ArrayList继承的java.util.AbstractList / AbstractCollection存在的道理其实差不多。没有这样的层次,代码一样能工作,只不过,你没实现一次,需要重复一些相同的代码而已
谢谢。
感觉这样的设计实在有点奇怪,GenericServlet实现ServletConfig接口,是不是多此一举。
不过仔细想想,貌似又有点道理,因为GenericServlet也要返回initParameter,servletContext等信息,起到了跟ServletConfig一样的作用,所以也可以迁就着看成GenericServlet is a ServletConfig吧。
谢谢你的回复,分不多,给你吧
ServletConfig接口允许Servlet接收web应用配置中的配置参数 还向Servlet中传入一个描述Servlet允许环境的类(ServletContext)