Servlet中是哪个实例调用doGet()和doPost()方法

Servlet中doGet()和doPost()都是非静态的方法,正常来说应该写成对象名.doGet()来调用。但实际上经常会写成下面这样:publicvoiddoPos... Servlet中doGet() 和doPost()都是非静态的方法,正常来说应该写成 对象名.doGet() 来调用。但实际上经常会写成下面这样:

public void doPost (HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
doGet(request, response); /*为何这里不写成 对像名.doGet(request, response); ???*/
}

这里在调用 doGet() 方法时没有使用对像名,而是直接调用。经过测试,如果写成 this.doGet() 也是可以的。

想知道这里this实例究竟是哪个对像?开始一直以为是Servlet的实例,Servlet的实例初始化后调用service()方法,service()方法判断是请求类型是Get或Post,然后转向doGet()或doPost()方法。但把web.xml中Servlet实例名写进去,比如写成 DemoServlet.doGet() 是不对的。那么究竟对象是哪个呢?为何这里能省掉实例名或this而直接调用一个非静态的方法?
展开
 我来答
夜来雨早来晴
2015-11-10 · TA获得超过3.1万个赞
知道大有可为答主
回答量:9110
采纳率:60%
帮助的人:824万
展开全部
一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全。而且doGet方法只能提交256个字符。通常我们使用的都是doPost方法,你只要在servlet中让这两个方法互相调用就行了,例如在doGet方法中这样写
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request,response);
}

再把业务逻辑直接写在doPost方法中。servlet碰到doGet方法调用直接就会去调用doPost因为他们的参数都一样。而且doGet方法处理中文问题很困难,要写过滤器之类的。
百度网友1502360
2013-12-30 · TA获得超过545个赞
知道小有建树答主
回答量:75
采纳率:0%
帮助的人:72万
展开全部
首先Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口和类.在javax.servlet.http包中定义了采用HTTP通信协议的HttpServlet类.所以当你要使用Servlet框架时,必须创建一个继承了HttpServlet的实现类(即你在web.xml中设置的<servlet-class>接收http请求的处理类,如 DemoServlet);因为是HttpServlet抽象类,主要方法有 doGet, doPost, doPut, doDelete, doTrace等等请求处理的方法,同时也继承于GenericServlet,而GenericServlet 是implements了Servlet接口,所以他其中就有3个方法代表了Servlet的声明周期(init,service,destory);
综上所述:①:这些方法都不是静态方法,所以无论在那里都不能直接用该(类名)直接调用这些方法;②:而至于“this”,因为当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的“非静态方法”中使用,静态方法和静态的代码块中绝对不能出现this;③:而直接写“doGet()“,就更简单了,因为这些都是HttpServlet中存在的方法,当然可以直接在本类中直接使用了啊!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ballanfeng
2013-12-29 · TA获得超过424个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:222万
展开全部
同一个类中,是可以调用类里的方法的,this是指这个类本身,DemoServlet.doGet(),doGet()不是静态方法,不能直接通过类.方法名调用,你需要实例化DemoServlet
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式