栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Servlet的继承结构分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Servlet的继承结构分析

最开始的servlet接口
public interface Servlet {
public void init (ServletConfig config) throws ServletException;
public void service (ServletRequest req, ServletResponse res) throws ServletException, IOException;
public void destroy ();
public String getServletInfo ();
public ServletConfig getServletConfig ();
}
有这五种方法,但是有个问题是我们在用servlet接口的时候,要重写这五个方法,但实际上我们最常用的还是init(),service(),destroy()这三个方法,于是我们发展出了GenericServlet抽象类,用于用于包装Servlet接口,其中提供了很多Servlet接口的默认实现,这样我们实现Servlet的时候,就不必实现Servlet接口的所有方法,只重写核心方法即可。
GenericServlet抽象类,定义了一个通用的,不依赖于具体协议的servlet,给出了除了service()方法外的其余四个方法的实现。所以当我们写了一个类继承GenericServlet的话,只需要重写service方法,但由于GenericServlet不带有具体协议,只要浏览器有发送请求,GenericServlet不会区分出是什么请求,就会直接调用你重写的service方法,于是servlet又“升级”了一次,也就是HttpServlet,里面带有doGet(),doPost(),doPut()等等。这样就可以区分请求的类型。
我们现在自己编写的servlet应该继承HttpServlet,一般要覆盖doGet(),doPost()方法。
**总结:**在当前的Servlet 版本中,我们创建的Servlet 只需要继承HttpServlet 并复写 service 方法即可。但是本质上,我们应该是直接实现 Servlet 接口的。但是 Servlet 接口中提供了5个方法,而我们真正想实现的是 service 方法,所以呢我们使用抽象类 GenericServlet 实现Serviet 接口,并提供抽象方法 service。那么,这个时候我们去继承 GenericServletr 然后实现 service 方法即可,美滋滋。但是,又因为浏览器发起的请求是由方式的,我们又希望可以根据浏览器的请求的方式,来调用对用的逻银方法来处理请求,而 tomcat 一旦接受到请求后,就会调用 service 方法来处理,于是我们使用 HttpServlet 来解决这个问题。我们让 HttpServlet继承GenericServlet,并实现 service 方法,然后在 service 方法中根据
请求方式去调用对应的doxxx 方法来处理请求。所以,我们自己声明的 Servlet 类需要继承 HttpServlet,并提供 doxxX 方法或者直接重写 service 方法即可。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号