HttpServlet 里的三个方法:service(HttpServletRequest req, HttpServletResponse resp) ,doGet(HttpServletRequest req, HttpServletResponse resp), doPost(HttpServletRequest req, HttpServletResponse res)的区别和联系:

    在servlet中默认情况下,无论你是get还是post 提交过来 都会经过service()方法来处理,然后转向到doGet

  1. 注意,sun只是定义了servlet接口,而实现servlet接口的就是类似于tomcat的服务器,所以我是在tomcat的安装目录下找到实现的类。
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException
    {
        String method = req.getMethod();
        if(method.equals("GET"))
        {
            long lastModified = getLastModified(req);
            if(lastModified == -1L)
            {
                doGet(req, resp);
            } else
            {
                long ifModifiedSince = req.getDateHeader("If-Modified-Since");
                if(ifModifiedSince < (lastModified / 1000L) * 1000L)
                {
                    maybeSetLastModified(resp, lastModified);
                    doGet(req, resp);
                } else
                {
                    resp.setStatus(304);
                }
            }
        } else
        if(method.equals("HEAD"))
        {
            long lastModified = getLastModified(req);
            maybeSetLastModified(resp, lastModified);
            doHead(req, resp);
        } else
        if(method.equals("POST"))
            doPost(req, resp);
        else
        if(method.equals("PUT"))
            doPut(req, resp);
        else
        if(method.equals("DELETE"))
            doDelete(req, resp);
        else
        if(method.equals("OPTIONS"))
            doOptions(req, resp);
        else
        if(method.equals("TRACE"))
        {
            doTrace(req, resp);
        } else
        {
            String errMsg = lStrings.getString("http.method_not_implemented");
            Object errArgs[] = new Object[1];
            errArgs[0] = method;
            errMsg = MessageFormat.format(errMsg, errArgs);
            resp.sendError(501, errMsg);
        }
    }
    从上面可以看出 这里的service是用来转向的,但是如果你在自己的servlet类中覆盖了service方法,比如说你的service是这样的:

  1. Java代码
  2. 1. public void service(ServletRequest req, ServletResponse res)
  3. 2.                    throws ServletException, IOException {
  4. 3.          res.getOutputStream().print(
  5. 4.          "image is <img src='images/downcoin.gif'></img><br>");
  6. 5.      }
  7. Java代码
  8. 1. <%@page contentType="text/html; charset=utf-8"%>
  9. 2. <html>
  10. 3. <head><title>选择</title></head>
  11. 4. <body>
  12. 5. 请选择你喜欢的水果:<br>
  13. 6. <form action = "Test" method = "post">
  14. 7. <input type="checkbox" name="fruit" value ="apple" >苹果<br>
  15. 8. <input type="checkbox" name="fruit" value ="orange">桔子<br>
  16. 9. <input type="checkbox" name="fruit" value ="mango">芒果<br>
  17. 10. <input type="submit" value="提交">
  18. 11. </form>
  19. 12. </body>
  20. 13. </html>
  21. 14.
  22. 15. 服务端servlet是:Test类
  23. 16.
  24. 17. import java.io.IOException;
  25. 18.
  26. 19. import javax.servlet.ServletException;
  27. 20. import javax.servlet.ServletOutputStream;
  28. 21. import javax.servlet.ServletRequest;
  29. 22. import javax.servlet.ServletResponse;
  30. 23. import javax.servlet.http.HttpServlet;
  31. 24. import javax.servlet.http.HttpServletRequest;
  32. 25. import javax.servlet.http.HttpServletResponse;
  33. 26.
  34. 27. /**
  35. 29. */
  36. 30. public class Test extends HttpServlet {
  37. 31.
  38. 32. public void service(ServletRequest req, ServletResponse res)
  39. 33.    throws ServletException, IOException {
  40. 34.             res.getOutputStream().print("This is the service");
  41. 35.
  42. 36. }
  43. 37.
  44. 38. protected void doGet(HttpServletRequest request,
  45. 39.     HttpServletResponse response) throws ServletException, IOException {
  46. 40.    doPost(request,response);
  47. 41.
  48. 42. }
  49. 43. protected void doPost(HttpServletRequest request,
  50. 44.     HttpServletResponse response) throws ServletException, IOException {
  51. 45.    ServletOutputStream out=response.getOutputStream();
  52. 46.    String[] args=(String[])request.getParameterValues("fruit");
  53. 47.   for(int i=0;i<args.length;i++){
  54. 48.     out.print(args[i]+"<br>");
  55. 49.    }
  56. 50.
  57. 51. }
  58. 52. }
  59. 所以,我们在写servlet的时候,一般都是重写doGet或doPost方法,不会管service方法。

servlet中service() doGet() doPost() 方法的更多相关文章

  1. servlet 中 service ,doGet , doPost 关系

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2 ...

  2. [转]servlet中的service, doGet, doPost方法的区别和联系

    原文地址:http://m.blog.csdn.net/blog/ghyg525/22928567 大家都知道在javax.servlet.Servlet接口中只有init, service, des ...

  3. servlet中的doGet()与doPost()以及service()的用法

    doget和dopost的区别 get和post是http协议的两种方法,另外还有head, delete等 1.这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能 ...

  4. Java之通过反射机制选择servlet中的对应的方法

    此方法用于在对Javaee开发中的通过对应的名称而选择servlet中的对应的方法 注:主要代码如下 protected void doGet(HttpServletRequest req, Http ...

  5. servlet中service() 和doGet() 、doPost() 学习笔记

    Sevlet接口定义如下: 与Sevlet接口相关的结构图: service() 方法是 Servlet 的核心.每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要 ...

  6. SERVLET中的doGet与doPost两个方法之间的区别

    get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的参数是通过另外的 ...

  7. Servlet中Service方法

    doGet方法只能处理Get方式提交的请求,doPost则可以处理Post方式提交的请求, 一种既可以处理Get方式又可以处理Post方式的提交的请求,它就是Service方法. service方法用 ...

  8. Servlet中service()方法

    在学习Servlet的过程中,我们大多时候编码都是直接继承HttpServlet这个类,并且重写doGet ,doPost,但是查看Api时我们会发现Servlet接口 ,GenericSevlet抽 ...

  9. Servlet 小试牛刀(doGet,doPost)

    实验说明: 通过javax.servlet.http下的HttpServlet,HttpServletRequest,HttpServletResponse来完成一些常用Servlet实例 java代 ...

随机推荐

  1. 《从零开始学Swift》学习笔记(Day 37)——默认构造函数

    原创文章,欢迎转载.转载请注明:关东升的博客 结构体和类的实例在构造过程中会调用一种特殊的init方法,称为构造函数.构造函数没有返回值,可以重载.在多个构造函数重载的情况下,运行环境可以根据它的外部 ...

  2. VM安装之分区、自定义安装包

    一.分区 1.一般分为3个区:/root .swap./ 1)./root:引导分区.存放引导文件和Linux内核等. 启动文件:用于判断你需要启动哪个操作系统或者哪个内核: 内核:程序与硬件之间的桥 ...

  3. 001 unique string

    以后坚持每一个星期都写记到算法题,不论简单还是难,纯熟娱乐! 描写叙述: 实现一个算法来推断一个字符串中的字符是否唯一(即没有反复).不能使用额外的数据结构. (即仅仅使用主要的数据结构) 代码: # ...

  4. MySql存储过程、函数

    存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在MyS ...

  5. 1、Python request(爬虫-百度翻译)

    #encoding=utf-8 import requests def fanyi(): while True: context = input("请输入翻译的内容(退出q):") ...

  6. mysql大致学习路径

  7. centos7 yum安装MongoDB

    centos7 yum安装MongoDB   原文博客地址http://xgs888.top/post/view?id=64 centos7 yum安装mongodb: 1:创建仓库 vi /etc/ ...

  8. 001-web基本程序搭建

    一.IDEA创建项目 1.基本项目创建 1.1.基本步骤 1.Create New Project [File→New→Project]→New Project 2.maven→group.artif ...

  9. 剑指offer 面试13题

    面试13题: 题目:机器人的运动范围 题:地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子 ...

  10. cookie、Session工作原理

    一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于在服务器端保持状态的 ...