servlet中的doGet()与doPost()是怎样工作的啊

doGet()与doPost()是对javax.servlet.http.HttpServlet类中方法的重写,doPost()可以调用doGet(),那么在调用方法时,是调用了子类的方法还是父类,若是子类,那doPost()与doGet()又有什么区别呢?若是父类,那子类的重写又有什么区别呢?

第一:你的servlet如果是继承自HttpServlet,就必须重写它里面的两 个虚方法doGet和doPost,也就是说,先不管别的servlet或jsp会去调用哪个方法,这两个方法都应该有。

第二:至于它调用哪个方法,就看提交方式
<form action="myServlet" method="get" >
method属性的值是get,它就去调用对应servlet的doGet方法。
同理,method属性的值是get,它就去调用对应servlet的doPost方法。

一般来说,不管采用那种提交方式,在servlet里要做的事情是一样的。所以,我们很多情况下,在一个方法里面调用另一个方法,这样随你那种方式提交的,都可以转去做一种处理。
eg:
public void doPost(HttpRequest request,HttpResponse response)throw ServletException,IOException {
doGet(request,response);
......
}

•如果请求是幂等的就可以使用GET
•所谓幂等是指多个请求返回相同的结果
•当改变服务器状态时应当使用POST方法
•GET请求的例子:
http://localhost/yourApp?firstName=Adam&middleName=Christopher
•采用POST方法向服务器发送命名参数时,与采用GET方法几乎一样的。
•区别:POST方法将参数串放在请求体中发送,而GET方法是将参数追加到URL中发送。
•如果数据处理不改变数据模型的状态,HTML使用规约理论上推荐采用GET方法,从这
可以看出,获取数据时应当使用GET方法。
•如果因为存储、更新数据,或者发送电子邮件,操作改变了数据模型的状态,这时建议使 用POST方法。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-05
他们的调用关系是这样的:
1、请求中,我们已经可以很明确的知道是get,还是post类型的请求。
即doPost()与doGet()本身的区别只是在对于请求中的相对应的调用。
2、根据类型进行调用相应的方法
3、如果你只是实现了某一个方法,那么你将在另外一个中去调用你实现的方法,此时就完成了方法间的调用。

并不存在父类与子类,因为我们不会应用它们本身,而会是我们自己的业务逻辑处理。

所以,这里就不会用到 super.doGet();,或者super.doPost();了,只会是方法的相互调用doGet();或者doPost();。

不知道这样的回答是否解除了你的疑惑呢?
第2个回答  2009-03-05
spacelishuai 正解,
如果走的是serlvet,而servlet里又没有显示的调用父类方法,这就必定是走子

类重载的doGet() doPost() 了,这两个方法没什么区别,要看你提交过来的方

式是什么方式,<form action="myServlet" method="get" > Form表单里的

method属性是get还是post,用get方法提交有字符限制,只能是255个字符,并

且在地址栏里不隐藏链接,也就是说你用get方式提交用户名密码的话在URL地址

栏里是可以完全的看到的,post提交没有提交大小限制,并且隐藏地址栏信息,

相对安全。

一般来说都会在doGet()方法里调用doPost()方法,参数是一样的参数,处理的结果也是一样的:
eg:
public void doPost(HttpRequest request,HttpResponse response)throw ServletException,IOException {
doGet(request,response);
......
}
第3个回答  推荐于2017-09-06
servlet中的doGet()与doPost()工作的方式如下:
1.doGet
GET调用用于获取服务器信息,并将其做为响应返回给客户端。当经由Web浏览器或通过HTML、JSP直接访问Servlet的URL时,一般用GET调用。GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来一些问题,比如用户登录,表单里的用户名和密码需要发送到服务器端,若使用Get调用,就会在浏览器的URL中显示用户名和密码。
例:
jsp页代码:
<form action="/doGet_servlet" method="get">
………
<input type="text" >
………
</form>
servlet代码:
public class doGet_servlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
request.setCaracterEncoding(“gb2312”);//汉字转码
PrintWriter out = response.getWriter();
out.println("The Parameter are :"+request.getParameter("name1"));
}
}
这样提交表单后,参数会自动添加到浏览器地址栏中,带来安全性问题。同时,get适合于发送少量数据。
2.doPost
它用于客户端把数据传送到服务器端,也会有副作用。但好处是可以隐藏传送给服务器的任何数据。Post适合发送大量的数据。
例:
jsp页代码:
<form action="/doPostt_servlet" method="post">
………
<textarea cols="50" rows="10"></textarea>
………
</form>
servlet代码:
public class doPostt_servlet extends HttpServlet {
public void doPost(HttpServletRequest request,HttpServletResponse esponse) throws IOException,ServletException {
request.setCaracterEncoding(“gb2312”);//汉字转码
PrintWriter out = response.getWriter();
out.println("The Parameter are :"+request.getParameter("name2"));
}
}
3.可以把方法写在doGet()方法中,在doPost()方法中调用执行,这样,无论你提交的是post还是get方法都可以执行
例如:
jsp页代码:
<form action="/servlet" method="post">
………
<input type="text" >
………
</form>
servlet代码:
public class servlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
request.setCaracterEncoding(“gb2312”);//汉字转码
PrintWriter out = response.getWriter();
out.println("The Parameter are :"+request.getParameter("name1"));
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
this.goGet(request,response);//调用doGet()方法
}
}
另外,HttpServlet处理客户端请求方式还有doPut、doDelete、doTrace、doHead、doOptions,但使用的比较少。

servlet中的doGet()与doPost()是怎样工作的啊
第一:你的servlet如果是继承自HttpServlet,就必须重写它里面的两 个虚方法doGet和doPost,也就是说,先不管别的servlet或jsp会去调用哪个方法,这两个方法都应该有。第二:至于它调用哪个方法,就看提交方式 method属性的值是get,它就去调用对应servlet的doGet方法。同理,method属性的值是get,它就...

请问servlet里的dopost 和doget分别是做什么的?
doGet:处理GET请求doPost:处理POST请求当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象。Servlet首先判断该请求是GET 操作还是POST 操作。然后它调用下面的一个方法:doGet 或 doPost。如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法。doGet和doPost都接受请求(HttpServletRequest)和响应(...

Servlet中的dopost()和doget()方法的作用,麻烦说的详细点~
当调用的是doget方法的时候就会在浏览器的地址拦的路径后面显示出来"?name=xy",这意味着用户也可以手动修改该参数的值,用dopost方法的时候就不会显示出来.用户是不知道参数的情况的,可以用来保护用户隐私,比如密码

java面试题:什么情况下调用doget()和dopost()?
在Java Servlet中,处理HTTP请求时调用doGet()和doPost()方法是关键的步骤。通常情况下,当客户端发送GET请求时,Servlet容器会调用doGet()方法;而当客户端发送POST请求时,则会调用doPost()方法。当客户端向服务器请求特定URL时,这通常意味着发送了一个GET请求。Servlet容器随后会自动调用Servlet的doGe...

servlet中的doGet()方法和doPost()方法嵌套调用有什么特殊用意吗?两...
doGet()是指请求是由get的请求类型提交至服务器的:例如 指定form提交,或者a连接等。doPost是请求由post请求类型提交至服务器:例如指定form提交,或者ajax使用post提交等。嵌套使用没有什么特殊的意义无非是将get请求交由post来处理或者反之 不是一样要同时调用,你在前台使用的什么提交方式后台就调用哪个...

Servlet中doGet与doPost的区别..
doGet是处理客户端发来的Get请求,doPost是处理客户端发来的Post请求,它们的区别可以从以下7个方面来说明:1、客户端(一般指浏览器)生成的方式 get:form中method属性为get时;或者直接在URL地址栏中输入URL,需要传递参数时,直接在URL后面拼接“?name=张三&age=18”这样的查询参数字符串;post:...

Servlet中doGet与doPost的区别..
doGet和doPost其实就是用来接收前端传过来的数据,本质上都是请求方法。因为servlet的请求类型有get和post两种类型。get调用,一般用于获取服务器信息,并将其作为响应返回给客户端。即当经由web浏览器、HTML、JSP直接访问servlet的url时,调用;post用于把客户端数据传送到服务器端,但也有不好的地方。当...

servlet的doGet()方法和doPost()方法
可以随意调用,这样写的好处就是可以完全将代码写在doPost()\/doGet()方法内。而不用去考虑是由post还是get方式提交过来servlet的。

servlet 生命周期及doget(),dopost()实现简单的登录注册功能
在 web.xml 文件中配置。无论 servlet 服务启动多少次,init() 初始化只运行一次。可以通过 getRemoteAddr() 方法获取访问主机的 IP 地址。myeclipse 创建项目时可能出现错误,由于 Java JDK 版本问题,通过右键项目 –> build path –> configure build path –> java build path –> libraries,修改...

3 doGet() 和 doPost() 的区别?
【答案】:doGet() 和 doPost() 接收两个参数:HttpServletRequest 请求和HttpServletResponse响应。HTTP 协议要么通过在 URL 中放置参数来向 Web 服务器传递信息,要么独立于 URL 传递信息。第一种称 作 GET 命令,而第二种称作 POST 命令。GET 命令的优点是,URL 包含了检索请求信息所需的所有信息...

相似回答