Servlet--04--doGet()与doPost()区别;Servlet常见错误;


 

 

 

 

Service 和 doGet 和 doPost 方法的区别:

1.Service 方法:
不管是 get 方式还是 post 方式的请求,如果 Servlet 类中有
service 方法,则优先调用 Service 方法。
2.doGet 方法:
在没有 service 方法的情况下如果是 get 方式的请求所调用
的处理请求的方法
3.doPost 方法:
在没有 service 方法的情况下如果是 post 方式的请求所调
用的处理请求的方法
4.源码分析:
我们看到,MyServlet最终实现的是Servlet接口,而Servlet接口只有5个抽象方法。

 

 

 

 

因此,Tomcat调用servlet时,除了一开始的init(),当创建线程时,调用的是service(),而不是什么doGet()doPost()!
 
所以如果 一个Servlet 类中有service 方法,则优先调用 Service 方法。并且,如果子类没有service(),则会call抽象父类——HttpServlet类的service()。

 

 

 

 

 

 
我们看到,抽象父类——HttpServlet的service方法会调用doget方法、doPost方法、doHead方法等等。
 
 
 
如果子类MyServlet有重写doGet方法、doPost方法,则会调用子类重写的方法,如果没有,就掉用本类的doGet方法、doPos方法。
不过,本类的doGet、doPost方法,都是用来报错的。
详情参见源码:

 

 

 
 

Servlet 的常见错误总结:

* Servlet的常见错误:

* 404错误:资源未找到

* 原因一:在请求地址中的servlet的别名书写错误。

* 原因二:虚拟项目名称拼写错误(也有可能是虚拟项目被删除)

 

* 500错误:内部服务器错误

*原因一:java.lang.ClassNotFoundException; com.bjsxt.servlet.ServletMothod

* 解决:在web.xml中校验servlet类的全限定路径是否拼写错误。

 

* 原因二:因为我们编写的servlet类中的service方法体中的业务逻辑处理代码有问题,导致执行错误。

* 解决:根据错误提示对service方法体中的代码进行错误更改。

 

* 405错误:请求方式不支持

* 原因:请求方式和servlet中的方法不匹配所造成的。

* 解决: 尽量使用 本类的service 方法进行请求处理,并且不要在 service 方法中调用父类的service——super.service(req,rep)。

posted @   Eric-Shen  阅读(753)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示