doGet()、doPost() 、service()之间关系

立志做一名优秀的开源社区程序员。					---老洋

主题:doget()、doPost()、service()关系

1、首先:先明白Servlet体系结构

一、Servlet 接口
二、GenericServlet 抽象类
	 1、实现了:Servlet接口
	 2、将Servlet接口中其他的方法:默认做了(空实现),只将service()方法作为抽象
	 3、如何实现它?
	 	定义:Servlet类时, 可直接继承GenericServlet,实现service()方法即可
	 
三、HttpServlet 抽象类
	1、孙子类(继承了:GenericServlet)
	2、HttpServlet:是对http协议的一种封装,简化操作
	3、如何使用它?
		定义类继承:HttpServlet
		复写doGet/doPost方法
		service:会根据,method是:get或post等类型,自动调用
  • 层次图
image-20201219093810593

2、正题:它们内部的方法

  • Servlet(接口)

image-20201219094252855

  • GenericServlet(抽象类)

image-20201219095417792

  • HttpServlet(抽象类)

    • 拥有的方法

    image-20210102075552895

    • doGet方法()

    image-20201219113601254

    • doPost方法()

    image-20201219113816386

    • service方法()有两个

    image-20210102081155077

第一个:HttpServlet自己创建的protected修饰的service()

image-20201219114650852 image-20201219114736696

第二个:HttpServlet(继承父类)GenericServlet的, 但是这个service()方法,起源于Servlet接口

image-20201219115248023

3、总结:三者执行的顺序

一、当客户端发送请求:比如在游览器(提交表单)
二、服务器会接收到信息, 通过表单的action="定位servlet地址"  找到servlet
三、然后默认会去找:public修饰的service()方法:
	1、当重写了(父类)HttpServlet的public修饰的service方法时:
			只执行(重写的service方法的内容)
			
    2、当(没有)重写了(父类)HttpServlet的public修饰的service方法时:
    	会自动调用HttpServlet中的service()方法, 这个方法最终会调用:HttpServlert中的
    	protected service(HttpServletRequest req, HttpServletResponse resp)方法,
        进而会依次找doGet()、doPost()方法	
四、当提交表单时
	1、若使用get方式提交, 若没有重写doGet()方法, 那么会报错。
	2、若使用post方式提交,若没有重写doPost()方法,那么也会报错。

五、所以很多(老师)推荐:
		1、不去重写(父类public修饰的)service()方法,直接写doGet()、doPost()方法。
		2、因为(不重写)public修饰的service()方法,
				会(先调用)(HttpService抽象类的) public的service()方法
				(在调用)其protected 修饰的 service()方法。	     			

调用顺序:如下图

image-20201219152630547

image-20201219152916682

image-20201219154859098

4、问题:联系方式

若有问题:请联系qq2560055298 						---老洋
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫漫求

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值