HttpServlet的Service方法到底是怎么回事?

HttpServlet的Service方法到底是怎么回事?(视频下载) (全部书籍)

马克-to-win:谈到doGet,很多同学心中可能有疑问,为什么html的用户的GET的请求,会被Servlet的doGet方法处理呢?这就谈到了HttpServlet的Service方法。它的功能就是调用与HTTP请求的方法相对应的do功能。例如,如果HTTP请求方法为GET,则调用doGet() 。这样作为Servlet编写者的你,只需覆盖doGet方法。这也是我们迄今为止的做法。有 意思的是,假如用户有Get请求,但我们没有覆盖doGet的方法,会怎么样?HttpServlet的Service方法就会调用 HttpServlet的doGet方法,那个doGet方法什么也不做,所以也不会报错。(这时我们如果覆盖了doGet方法,我们的doGet方法会 被调用,请复习继承的语法)通常我们的做法是,不覆盖service方法,只覆盖相应的do方法就可以了。但有人就想覆盖service方法, service又什么都没干,那会发生什么?那样的结局就是,即使你也同时覆盖了do方法,你的do方法永远不会被调用。我们可以看看以下的实验,无论怎 么运行,输出的结果只有“service”,而“doGet”永远输出不了。

例:3.3.3.1

package com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

详情请见:http://www.mark-to-win.com/index.html?content=Jsp/jspUrl.html&chapter=Jsp/jsp1_web.html#ServiceHow

原文地址:https://www.cnblogs.com/mark-to-win/p/10114065.html

时间: 2024-10-11 20:40:25

HttpServlet的Service方法到底是怎么回事?的相关文章

HttpServlet Service方法

service() 方法是执行实际任务的主要方法.Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端. 每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服务.service() 方法检查 HTTP 请求类型(GET.POST.PUT.DELETE 等),并在适当的时候调用 doGet.doPost.doPut,doDelete 等方法. 下面是该方法的特征: public void s

为什么不应该重写service方法?

故事通常是这样开始的: 从前,有一个程序猿,他语重心长地对孙子说:"孩子,要是你以后写servlet,最好不要重写service方法啊" 孙子大为不解,程序猿又说:"听爷爷的,准没错,爷爷的爷爷就是这么说的--" --为什么不应该重写service方法呢? 如果你也曾思考过这个问题,但暂时无解,这篇文章或许可以给你一点启发. 先来看一个具体的例子: 当时我正在osc看红薯的一篇大作,只见我右手F12熟练的打开了chrome的开发者工具,左手迅猛的按了几下F5,然后看

Servlet中service方法

在学习Servlet的过程中,我们大多时候编码都是直接继承HttpServlet这个类,并且重写doGet ,doPost,但是查看Api时我们会发现Servlet接口 ,GenericSevlet抽象类 以及HttpServlet类中都有service方法,那么为什么我们继承HttpSevlet类时不要重写service 而要重写doGet doPost呢?service的作用是什么捏?? 正如上文中所说的,Servlet中,service方法是一直存在的,因为最高层的接口Servlet(像H

Servlet生命周期中的service方法分析

问题ServletLifeCycle中的service方法内,有super.service(request, response); 会执行this.doGet(HttpServletRequest request, HttpServletResponse response);没有super.service(request, response);,则不执行this.doGet(...). 是怎么实现的? 举一反三:一个子类,覆写的方法内,如果调用了父类的该方法,会执行子类内的另一个方法;覆写的方法

servlet的service方法吞异常问题

今天发现一个问题,编写代码向Servlet发送请求,接收响应报文,发出去之后"报服务器返回500"异常,然而从后台日志中没有发现异常记录.然后用浏览器发请求,发现日志中出现了异常记录. 思来想去,不知道怎么回事,之前也遇见过几个此种问题,但是都绕过去了,回头看代码,发现是IDE的问题. 之前的Servlet中的service方法在声明的时候都不会声明抛出异常,然而,如果用eclipse 的快捷键选择重写service方法的话,默认的会声明service方法抛出ServletExcept

Spring 事务 readOnly 到底是怎么回事?

Spring的事务经常会有这样的配置: 1 <tx:method name="search*" read-only="true" /> 或者这样的注记: 1 @Transactional(readOnly = true) 正好我正在做的项目中这样配置了,而且偶然发现配置了不生效,本着“不弄明白对不起祖国对不起人民”的精神,参考了不少帖子和文档,总结了网上形形色色的答案,稍有收获,规整如下,不正确请指出. 1 readonly并不是所有数据库都支持的,不同

创建服务factory和service方法的区别

factory方法返回的是对象,json或数组,而service方法返回的是字符串类型的数据 angular.module('myApp',[]).factory('服务名',function(){ return {uname:'kevin',pwd:'123'} }).controller('ctrlname',function('服务名',$scope){ }.directive('myDirective', function(){ return { template: '<button>

AngularJS中的provider,factory,service方法

使用$provide中的provider方法定义服务 前面已经知道了module的定义为angular.module(name,[requires],configFn);configFn参数是配置服务的.ng供服务的过程涉及它的依赖注入机制.AngularJS是用$provider对象来实现自动依赖注入机制的.$provide.provider是一种定义服务的方法.注入机制通过调用provider的$get方法,把得到的对象作为参数进行相关的调用. <!DOCTYPE html> <ht

Angularjs 自定义服务 provide 里 provider 方法 以及 factory、 service 方法以及 provider 供应商的概念

Angularjs 自定义服务 provide 里 provider 方法 以及factory. service 方法以及 provider 供应商的概念 学习要点:1. Angularjs 中的 provider 方法2. Angularjs 中的 factory 方法3. Angularjs 中的 service 方法4. provider 供应商的概念5. 研究 ionic 代码中的 services 当你初试 Angular 时,很自然地就会往 controller 和 scope 里堆