[转]servlet中的service, doGet, doPost方法的区别和联系
2024-10-17 21:17:41
原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567
大家都知道在javax.servlet.Servlet接口中只有init, service, destroy方法
但是我们在继承HttpServlet的时候为何一般重写doGet和doPost方法呢
下面我们看一下Servlet源代码:
注意: JDK只是定义了servlet接口,而实现servlet接口的比如tomcat, jboss等服务器
下面我们找到tomcat源代码, 可以到官网下载, 目前最新版本是7.0.53
找到javax.servlet.http.HttpServlet类, 下面是service方法部分源代码:
可以很清楚的看到, 在tomcat的实现中, service方法只起到了类似调度的功能
所以我们平时只重写doGet或doPost方法后, 会自动按请求类型匹配执行
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { String method = req.getMethod(); if (method.equals(METHOD_GET)) {
...
doGet(req, resp);
... } else if (method.equals(METHOD_HEAD)) {
long lastModified = getLastModified(req);
maybeSetLastModified(resp, lastModified);
doHead(req, resp); } else if (method.equals(METHOD_POST)) {
doPost(req, resp); } else if (method.equals(METHOD_PUT)) {
doPut(req, resp); } else if (method.equals(METHOD_DELETE)) {
doDelete(req, resp); } else if (method.equals(METHOD_OPTIONS)) {
doOptions(req,resp); } else if (method.equals(METHOD_TRACE)) {
doTrace(req,resp); } else {
...
}
}
可见tomcat实现的service方法只是起到了调度请求的作用
如果我们重写了service方法, 父类HttpServlet中的service方法就会失效
所以收到的任何请求都会由我们自己覆写的service方法来处理
如果我们的servlet中只有service方法, 是没有问题的
但值得注意的是, 如果你同时重写了service和doGet, doPost方法
一定要在执行完自己代码后调用父类service方法, super.service;
否自你的doGet和doPost是不会被执行的
最新文章
- css面包屑导航编号
- Codeforces 722C. Destroying Array
- (转载)AppScan使用分享
- [LeetCode] Range Sum Query - Immutable &; Range Sum Query 2D - Immutable
- Add 1G to a LVM on VMware
- IE升级代码时邮件内容
- 服务器监控之 ping 监控
- 逗号"; , ";表达式
- Shell 脚本小试牛刀(番外) -- 捷报
- POPTEST培训:web自动化测试之DOM
- Jquery的入门学习
- Java系列2 --- 你真的知道Java的String对象么?
- VS2017 性能优化方法
- Cforeach的详细用法--【转】
- 简单透彻理解JSONP原理及使用
- 这可能是最详细的Python文件操作
- TX2-start 6 CPU kernel-开启高功耗模式
- [UE4]ChildActor组件
- android平台一些常用代码
- Android-自定义控件-继承View与ViewGroup的初步理解
热门文章
- MMORPG大型游戏设计与开发(客户端架构 part2 of vgui)
- NOIP2009pj道路游戏[环形DP 转移优化 二维信息]
- AC日记——计算多项式的导函数 openjudge 1.5 38
- Java之线程处理之二
- Eclipse 代码自动提示的设置
- 关于webpack.optimize.CommonsChunkPlugin的使用二
- DLL放在指定目录 以及设置dll调用路径
- .net混淆、反编译工具调查
- BZOJ 1066 【SCOI2007】 蜥蜴
- h1/title,b/strong,i/em 的区别