[转]servlet中的service, doGet, doPost方法的区别和联系
原文地址: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是不会被执行的
[转]servlet中的service, doGet, doPost方法的区别和联系的更多相关文章
- servlet中service() doGet() doPost() 方法
HttpServlet 里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletReque ...
- Servlet的Service方法和doget 和 dopost方法的区别,常见的错误解析
package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax. ...
- service 方法和doGet、doPost方法的区别
Service方法和doGet和doPost方法的区别service: 可以处理get/post方式的请求,如果servlet 中有service方法,会优先调用service方法进行处理do ...
- Servlet的doGet与doPost方法的区别与使用
Servlet的doGet与doPost方法的区别与使用 2016年07月07日 13:05:13 阅读数:10222 一,区别 在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个 ...
- JSP、Servlet中get请求和post请求的区别总结
在学习JavaWeb最初的开始阶段,大家都会遇到HttpServlet中的doGet和doPost方法.前两天看<Head First Servlets & JSP>看到其中讲关于 ...
- 正则表达式中的exec和match方法的区别
正则表达式中的exec和match方法的区别 字符串的正则方法有:match().replace().search().split() 正则对象的方法有:exec().test() 1.match m ...
- IL角度理解C#中字段,属性与方法的区别
IL角度理解C#中字段,属性与方法的区别 1.字段,属性与方法的区别 字段的本质是变量,直接在类或者结构体中声明.类或者结构体中会有实例字段,静态字段等(静态字段可实现内存共享功能,比如数学上的pi就 ...
- servlet 中 service ,doGet , doPost 关系
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...
- servlet学习记录:Servlet中的service()方法
Servlet的生存时间是由init,service,destory方法构成,这里分析一下service这个方法 Servlet接口中定义了一个service()方法,而我们一般是使用HttpServ ...
随机推荐
- Beyond IT
Know Yourself <开讲啦> 20160306 潘建伟:探索的动机
- 实例变量和静态变量(或类变量static)
一个类通过使用运算符new可以创建多个不同的对象,这些对象将被分配不同的内存空间,准确的说法是:不同对象的实例变量将被分配不同的内存空间,如果类中有类变量,那么所有对象的这个类变量都被分配到同一处内存 ...
- Flex(flash)检测摄像头的3种状态(是否被占用,没安装摄像头,正常)
在视频程序的编写过程中,我们经常要使用摄像头,在使用摄像头前有必要对摄像头的现有状态做个检测: 1.被占用 2.没安装摄像头 3.正常 camera=Camera.getCamera(); ...
- bzoj2748[HAOI2012]音量调节(背包问题的方案)
Description 一个吉他手准备参加一场演出.他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量.在演出开始之前,他已经做好了一个列表,里面写着在每首歌开始之前他想要改 ...
- HTML DOM 属性 对象
HTML DOM 属性 对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 所有的都是 节点: 文档是文档节点 所有 HTML 元素是元素节点 所 ...
- 资料,来自HTML5前端开发学习⑤群
resource HTML5+CSS3视频教程:http://pan.baidu.com/s/1hsyOjze 密码:c3uw JavaScript视频教程:链接:http://pan.baidu.c ...
- 匹配字符串的KMP算法
其中next序列,表示子串的前后缀最大匹配长度. 例如对于字符串C[], next[i]表示子串c[0 .. i]中, 前缀与后缀的最大匹配长度. 举例如果子串是 abcuab, 其前缀是a, ab, ...
- JS常用自定义方法
1,JS生成随机数方法 getRandom(100),表示生成0-100的数 function getRandom(n){ return Math.floor(Math.random()*n+1) } ...
- Openjudge 1.13-40 提取数字串按数值排序
40:提取数字串按数值排序 查看 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用int 表示),按从 ...
- CentOS搭建socket5代理服务器
1.安装socket5依赖包 yum -y install gcc automake make pam-devel openldap-devel cyrus-sasl-devel 2.下载ss5并 ...