httpservlet的service()、doget()、dopost方法
HttpServlet里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletRequest req, HttpServletResponse resp), doPost(HttpServletRequest req, HttpServletResponse res)的区别和联系:
- 在servlet中默认情况下,无论你是get还是post 提交过来 都会经过service()方法来处理,然后转向到doGet
- 或是doPost方法,我们可以查看HttpServlet 类的service方法: 我在tomcat的lib目录下,解压servlet-api.jar,然后用反编译软件把lib\javax\servlet\http下的HttpServlet.class反编译,看里头的service()方法的原代码:查看源码发现,httpservlet继承genericservlet并实现了service方法,从实现来看service起到了调度的作用。因此自定义servlet继承httpservlet不需要覆盖重写service方法,只需覆盖重写doget或者dopost方法。
- 注意,sun只是定义了servlet接口,而实现servlet接口的就是类似于tomcat的服务器,所以我是在tomcat的安装目录下找到实现的类。
public abstract class HttpServlet extends GenericServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
- 从上面可以看出 这里的service是用来转向的,但是如果你在自己的servlet类中覆盖了service方法,比如说你的service是这样的:
- Java代码
- 1.publicvoid service(ServletRequest req, ServletResponse res)
- 2. throws ServletException, IOException {
- 3. res.getOutputStream().print(
- 4. "image is <img src='images/downcoin.gif'></img><br>");
- 5. }
- 那么这时service就不是用来转向的,而是用来处理业务的,现在不论你的客户端是用pos还是get来请求此servlet
- 都会执行service方法也只能执行servlet方法,不会去执行doPost或是doGet方法。
- 比如说:你的客户端代码是:
- Java代码
- 1. <%@page contentType="text/html; charset=utf-8"%>
- 2. <html>
- 3. <head><title>选择</title></head>
- 4. <body>
- 5. 请选择你喜欢的水果:<br>
- 6. <form action ="Test" method = "post">
- 7. <input type="checkbox" name="fruit" value ="apple" >苹果<br>
- 8. <input type="checkbox" name="fruit" value ="orange">桔子<br>
- 9. <input type="checkbox" name="fruit" value ="mango">芒果<br>
- 10. <input type="submit" value="提交">
- 11. </form>
- 12. </body>
- 13. </html>
- 14.
- 15. 服务端servlet是:Test类
- 16.
- 17.import java.io.IOException;
- 18.
- 19.import javax.servlet.ServletException;
- 20.import javax.servlet.ServletOutputStream;
- 21.import javax.servlet.ServletRequest;
- 22.import javax.servlet.ServletResponse;
- 23.import javax.servlet.http.HttpServlet;
- 24.import javax.servlet.http.HttpServletRequest;
- 25.import javax.servlet.http.HttpServletResponse;
- 26.
- 27./**
- 28. * 演示service方法
- 29. */
- 30.publicclass Testextends HttpServlet {
- 31.
- 32.publicvoid service(ServletRequest req, ServletResponse res)
- 33. throws ServletException, IOException {
- 34. res.getOutputStream().print("This is the service");
- 35.
- 36. }
- 37.
- 38.protectedvoid doGet(HttpServletRequest request,
- 39. HttpServletResponse response)throws ServletException, IOException {
- 40. doPost(request,response);
- 41.
- 42. }
- 43.protectedvoid doPost(HttpServletRequest request,
- 44. HttpServletResponse response)throws ServletException, IOException {
- 45. ServletOutputStream out=response.getOutputStream();
- 46. String[] args=(String[])request.getParameterValues("fruit");
- 47. for(int i=0;i<args.length;i++){
- 48. out.print(args[i]+"<br>");
- 49. }
- 50.
- 51. }
- 52. }
- 点击提交后:页面输出结果为“This is the service“;
httpservlet的service()、doget()、dopost方法的更多相关文章
- [转]servlet中的service, doGet, doPost方法的区别和联系
原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...
- servlet中service() doGet() doPost() 方法
HttpServlet 里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletReque ...
- servlet 中 service ,doGet , doPost 关系
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...
- doget,doPost在底层走的是service
doget,doPost在底层走的是service 因为在源码上 先执行service方法 然后再调用doget,doPost方法
- 自定义servlet重写doGet或者doPost方法时,405 method not allowed
自定义servlet public class TestServlet extends HttpServlet { @Override protected void doGet(HttpServlet ...
- 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 ...
- 关于HttpServlet和Servlet以及doPost和doGet关系
这两天在看Servlet和Jsp,spring太难了,还是先看看基础,只怪自己太弱了. Servlet是一个接口,本身定义的是一种网络服务,HttpServlet是已经实现了Servlet接口,也就是 ...
- HttpServlet中service方法的源码解读
前言 最近在看<Head First Servlet & JSP>这本书, 对servlet有了更加深入的理解.今天就来写一篇博客,谈一谈Servlet中一个重要的方法-- ...
随机推荐
- android菜鸟学习笔记10----Intent及<intent-filter>
关于Bundle: 注意到Activity的onCreate()方法的签名是protected void onCreate(Bundle savedInstanceState),其参数是一个Bundl ...
- S2S4H整合注意问题
整合过程中出现问题记录: 1.The import javax.servlet.http.HttpServletRequest cannot be resolved 解决办法:在tomcat的lib目 ...
- 九度OJ 1160:放苹果 (DFS)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:998 解决:680 题目描述: 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和 ...
- computed 计算属性
wepyjs - 小程序组件化开发框架 https://tencent.github.io/wepy/document.html#/?id=wepy%e9%a1%b9%e7%9b%ae%e7%9a%8 ...
- 远程服务器上的weblogic项目管理(四)filelock not found错误解决方法
重启weblogic时如果有残余进程没有kill,启动时便可能会造成filelock not found,文件锁未找到错误,解决方法如下: 删掉Domain下的*.lok文件:(如果不熟悉文件路径推荐 ...
- python cookbook第三版学习笔记六:迭代器与生成器
假如我们有一个列表 items=[1,2,3].我们要遍历这个列表我们会用下面的方式 For i in items: Print i 首先介绍几个概念:容器,可迭代对象,迭代器 容器是一种存储数据 ...
- 爬虫-Selenium -抱错ElementNotVisibleException: Message: element not visible
1.当使用Selenium IDE 完成了脚本的录制和回放通过后,想要将脚本转换为其他语言如java.Python等,首次使用时打开Options->Format发现没有可以转换的语言,如下: ...
- git 从远端拉取指定分支和推送本地某个分支到远端
如题,可以直接从远端拉取某个分支,也可以直接将本地某个分支推送到远端. 原文链接:https://www.cnblogs.com/hamsterPP/p/6810831.html
- Pandas一些小技巧
Pandas有一些不频繁使用容易忘记的小技巧 1.将不同Dataframe写在一个Excel的不同Sheet,或添加到已有Excel的不同Sheet(同名Sheet会覆盖) from pandas i ...
- 采集练习(十二) python 采集之 xbmc 酷狗电台插件
前段时间买了个树莓派才知道有xbmc这么强大的影音软件(后来我逐渐在 电脑.手机和机顶盒上安装xbmc),在树莓派上安装xbmc后树莓派就成为了机顶盒,后面在hdpfans论坛发现了jackyspy ...