概述
我们在写一个class 并 implement Servlet时,需要重写Servlet中的5个方法,但是大多时候都只用到 service 方法。
虽然中用到service方法,但其余的4个方法还得重写。
那我们能不能编写一个class,去继承或实现 Servlet 后,只用定义一个 service 方法就可以了。其他方法想有就有,不想有就没有?
这时候我们就要聊聊 Servlet 体系结构了。
Servlet 体系结构
Servlet
– interface,接口
↓|实现
GenericServlet
– 实现类,抽象类
↓|继承
HttpServlet
– 实现类,抽象类
做项目时,创建Servlet时候,推荐使用第三种方式:????继承HttpServlet????定义类继承HttpServlet???? 复写doGet/doPost方法
GenericServlet
- 将
Servlet
接口中的其他方法做了默认空实现,只将service()
方法作为抽象 - 将来定义
Servlet
类时候,可以继承GenericServlet
,实现service()
方法即可 - 其余四种方法, 若有需要,手动重写即可。
1 | @WebServlet("/demo2") |
HttpServlet
- 该抽象类是对 HTTP协议 的封装和描述,可以简化某些操作
- HTTP协议 有 7种 请求方式。现在,我们假设只是用最常用的两种请求方式GET和POST这两种请求方式。
service()
方法中 最先要干 的其中2件事????
- 将来不管怎么样,都得做这么一件事:“先判断请求方式????判断完后,要通过不同的请求方式,做出不同的代码逻辑“。
- 那么,这个过程是非常麻烦的。
- 同时,这个过程也是所有
service()
都该做的一个过程。 - 所以这个时候,官方针对这个过程,专门提供了一个class
HttpServlet
。 HttpServlet
已经帮程序员做好了这个过程,写好了相应的代码,就如上图的红色字体部分。集程序员不再需要去判断请求方式了。HttpServlet
内部定义了doGet(){}
和doPost(){}
这两个方法。并且在判断请求方式的if
中调用了这两个方法。- 这就是其基本的定义原理。就如下图????
若将来想要屏蔽这种GET或POST请求方式的处理逻辑:我们可以继承 HttpServlet,并且去重写
doGet(){}
和doPost(){}
这两个方法。因为将来都是调用
service()
方法 ,并且service()
会做一个方法分发:你是get就调用doGet()
,你是post就调用doPost()
。-
做项目时,创建Servlet时候,推荐使用第三种方式:????继承HttpServlet????定义类继承HttpServlet???? 复写doGet/doPost方法
步骤
- 定义 class 继承
HttpServlet
- 重写
doGet()
和doPost()
两个方法
1 | /* ServletDemo3.java */ |
注意
- 通过浏览器直接请求,是GET方式
- 现在掌握的知识,只能通过表单,完成POST方式
简单案例
- 新建login.html文件
1 | <!DOCTYPE html> |
- 重启服务,访问页面
- 将
method="post"
改为method="get"
- 再访问页面
注意:
使用get方式后,请求的参数会跟在url后。
后续阅读相关文章
1、GenericServlet和HttpServlet
2、GenericServlet 、Servlet和httpServler他们之间的关系
3、GenericServlet和HttpServlet有什么区别?
最后
以上就是危机音响为你收集整理的Servlet 体系结构Servlet 体系结构GenericServletHttpServlet后续阅读相关文章的全部内容,希望文章能够帮你解决Servlet 体系结构Servlet 体系结构GenericServletHttpServlet后续阅读相关文章所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复