谁能详细的讲一下Servlet中doGet()和doPost()的作用和区别?

SmallBug2002 2002-12-08 05:31:13
谁能详细的讲一下Servlet中doGet()和doPost()的作用和区别?
...全文
983 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongzuochun 2010-06-14
  • 打赏
  • 举报
回复
以下是网上借鉴:
get只有一个流,参数附加在url后,地址行显示要传送的信息,大小个数有严格限制且只能是字符串。
post的参数是通过另外的流传递的, 不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。

1、安全

GET调用在URL里显示正传送给SERVLET的数据,这在系统的安全方面可能带来问题,例如用户名和密码等

POST就可以在一定程度上解决此类问题

2、服务器接收方式

服务器随机接受GET方法的数据,一旦断电等原因,服务器也不知道信息是否发送完毕

而POST方法,服务器先接受数据信息的长度,然后再接受数据

3、form运行方式

当form框里面的method为get时,执行doGet方法
当form框里面的method为post时,执行doPost方法

4、容量限制

GET方法后面的信息量字节大小不要超过1.3K,而Post则没有限制

###########最后说明的是:

你可以用service()来实现,它包含了doget和dopost ;service方法是接口中的方法,servlet容器把所有请求发送到该方法,该方法默认行为是转发http请求到doXXX方法中,如果你重载了该方法,默认操作被覆盖,不再进行转发操作!

service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet
中实现了这个接口, 而 doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的, javax.servlet.http.HttpServlet 是 javax.servlet.GenericServlet 的子类.

所有可以这样理解, 其实所有的请求均首先由 service() 进行处理, 而在 javax.servlet.http.HttpServlet 的 service() 方法中, 主要做的事情就是判断请求类型是 Get 还是 Post, 然后调用对应的 doGet/doPost 执行.


想了解更多java相关知识,请加入53587861高级java群,验证:阿春.共同探讨未来的新技术.
gongzuochun 2010-06-14
  • 打赏
  • 举报
回复
学习了。
l_walker 2002-12-17
  • 打赏
  • 举报
回复
学习
Duplicity 2002-12-17
  • 打赏
  • 举报
回复
doGet()速度快一点,不过外理数据量有限,可以在?后显示出来。
doPost()要对数据打包,不过安全性高一点。
SmallBug2002 2002-12-16
  • 打赏
  • 举报
回复
为什么在TOMCAT中执行Servlet时,默认调用DoGet()?
upc_chenli 2002-12-09
  • 打赏
  • 举报
回复
get可以处理小数量的数据.如:
http://127.0.0.1:8080/hello?name=chenli&age=25

post
可以从表单中提交.
classic1999 2002-12-08
  • 打赏
  • 举报
回复
doget 是通过url中可以显示,dopost是把数据进行打包
study_body 2002-12-08
  • 打赏
  • 举报
回复
如果浏览器发出get请求调用doGet
如果发出post请求,调用doPost()
zybing 2002-12-08
  • 打赏
  • 举报
回复
有没有分析过http中form的发送方式:
一种是get
另一种是post

doGet和doPost就是对应这2种方式
peppi 2002-12-08
  • 打赏
  • 举报
回复
在HTML中如果你的
<FORM method="post">
<input type="hidden" value="11111" name="aaa">
</form>
那么在SERVLET中,就在doPost()中处理
在HTML中,<FORM method="get">
<input type="hidden" value="11111" name="aaa">
</form>
在SERVLET中要用doGet()处理
SmallBug2002 2002-12-08
  • 打赏
  • 举报
回复
呵呵~~那到底有什么区别啊?
希偌 2002-12-08
  • 打赏
  • 举报
回复
同上,通常我们只需要写一个请求的具体方法,然后在另外一个请求的方法中调用,如:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
…………………………
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doGet(request,response);
}
fletcher 2002-12-08
  • 打赏
  • 举报
回复
是啊
study_body 2002-12-08
  • 打赏
  • 举报
回复
doGet()是接受get请求
doPost()是接受Post请求

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧