首页 > 试题广场 >

GenericServlet和HttpServlet有什么区

[问答题]
GenericServlet和HttpServlet有什么区别?

1.HttpServlet

1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制.

2). 在 service() 方法中直接把 ServletReuqest 和 ServletResponse 转为 HttpServletRequest 和 HttpServletResponse.
并调用了重载的 service(HttpServletRequest, HttpServletResponse)

在 service(HttpServletRequest, HttpServletResponse) 获取了请求方式: request.getMethod(). 根据请求方式有创建了
doXxx() 方法(xxx 为具体的请求方式, 比如 doGet, doPost)

3). 实际开发中, 直接继承 HttpServlet, 并根据请求方式复写 doXxx() 方法即可.

4). 好处: 直接由针对性的覆盖 doXxx() 方法; 直接使用 HttpServletRequest 和 HttpServletResponse, 不再需要强转.

 

 

2.GenericServlet

1). 是一个 Serlvet. 是 Servlet 接口和 ServletConfig 接口的实现类. 但是一个抽象类. 其中的 service 方法为抽象方法

2). 如果新建的 Servlet 程序直接继承 GenericSerlvet 会使开发更简洁.

3). 具体实现:

①. 在 GenericServlet 中声明了一个 SerlvetConfig 类型的成员变量, 在 init(ServletConfig) 方法中对其进行了初始化 
②. 利用 servletConfig 成员变量的方法实现了 ServletConfig 接口的方法
③. 还定义了一个 init() 方法, 在 init(SerlvetConfig) 方法中对其进行调用, 子类可以直接覆盖 init() 在其中实现对 Servlet 的初始化. 
④. 不建议直接覆盖 init(ServletConfig), 因为如果忘记编写 super.init(config); 而还是用了 SerlvetConfig 接口的方法,
则会出现空指针异常. 
⑤. 新建的 init(){} 并非 Serlvet 的生命周期方法. 而 init(ServletConfig) 是生命周期相关的方法.

发表于 2017-10-06 23:10:36 回复(1)
Genericservlet是httpservlet 的父类,提供了service方法,在实现时要实现service方法,httpservlet做了精简,提供了doget dopost 方法,更加适用与http协议,
发表于 2017-08-08 14:24:27 回复(1)
这种答案你们也复制黏贴,是一种习惯吗?
面试官听了不知道啥反应
发表于 2016-09-09 17:25:53 回复(3)
GenericServlet类实现了Servlet和ServletConfig接口。实现了除了service()之外的其他方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。
HeepServlet类继承了GeneriServlet类,为实际开发中大多数用Servlet处理 HTTP请求的应用灵活的方法。
发表于 2016-09-22 17:39:25 回复(0)
 GenericServlet
这是Java体系一惯的做法,给接口搭配一个抽象类,对一些通用的方法做实现,其余方法给出空的实现(必须由子类实现的方法除外),这样程序员开发时直接继承该抽象类,可以大大减少代码数量,避免了实现所有接口方法的呆板操作.

HttpServlet
针对HTTP请求, 再次对GenericServlet方法进行简化, 在service方法中把传入的 ServletReuqest 和 ServletResponse 转为 HttpServletRequest 和 HttpServletResponse,方便处理HTTP请求.
实际开发中, 直接继承 HttpServlet, 并根据请求方式复写 doXxx() 方法即可.
发表于 2019-03-25 15:19:28 回复(0)
GenericServlet是一个通用的协议无关的Servlet,它实现了Servlet和ServletConfig接口。继承自GenericServlet的Servlet应该要覆盖service()方法。最后,为了开发一个能用在网页上服务于使用HTTP协议请求的Servlet,你的Servlet必须要继承自HttpServlet。这里有Servlet的例子。
发表于 2015-10-29 12:10:42 回复(0)
Genericservlet类是servlet的实现类,它实现了除service方法外的其它方法,可以通过继承它来简化代码
编辑于 2020-11-09 14:42:28 回复(0)
genericservlet实现了servlet接口,实现了接口中除了service之外的方法,创建一个新的servlet可以直接继承genericservlet来重写service方法即可 ,而httpservlet就继承了genericservlet,将service方法进行了重写,并分为了do**的7种区分不同请求方法的方法
编辑于 2019-11-26 00:29:24 回复(0)

genericservlet是httpservlet的父类,不同点在于httpservlet是专门应对http的,他将里面的参数重写为httpservletrequest和*,并且里面有doget,dopost方法,更加适合处理网络协议

发表于 2019-08-16 16:10:19 回复(0)
GenericServlet类实现了Servlet和ServletConfig接口。实现了除了service()之外的其他方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。 HttpServlet类继承了GeneriServlet类,为实际开发中大多数用Servlet处理 HTTP请求的应用灵活的方法。
发表于 2019-05-05 15:40:05 回复(0)
GenericServlet类实现了Servlet和ServletConfig接口。实现了除了service()之外的其他方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。 HttpServlet类继承了GeneriServlet类,为实际开发中大多数用Servlet处理 HTTP请求的应用灵活的方法。
发表于 2019-05-02 11:46:33 回复(0)
GenericServlet类实现了Servlet和ServletConfig接口。实现了除了service()之外的其他方法,在创建Servlet对象时,可以继承GenericServlet类来简化程序的代码,但需要实现service()方法。HttpServlet类继承了GeneriServlet类,为实际开发中大多数用Servlet处理HTTP请求的应用灵活的方法。
发表于 2019-04-28 21:31:56 回复(0)
SSR头像 SSR
GenericServlet是一个通用的协议无关的Servlet,它实现了Servlet和ServletConfig接口。继承自GenericServlet的Servlet应该要覆盖service()方法。 为了开发一个能用在网页上服务于使用HTTP协议请求的Servlet,你的Servlet必须要继承自HttpServlet
发表于 2017-02-28 16:20:03 回复(0)
GenericServlet是一个通用的协议无关的Servlet,他实现了Servlet和ServletConfig接口。继承自GenericServlet的Servlet应该要覆盖service()方法。最后,为了开发一个能用在网页上服务于使用HTTP协议请求的Servlet,你的Servlet必须要继承自HttpServlet.
发表于 2016-06-16 23:11:37 回复(0)