GET 是名字所示,是”想拿到一个东西“,而 POST 如名字所示,是要”投递一份数据给服务器“。
因此当你提交数据时一般用POST,而 GET 虽然在 URL 上可以给参数来拿不同的数据,但它们在概念上还是有不同。
因此你用 doGet 得到一个表单时仅仅是这个表单是根据你提高的 GET URL 参数定制的一份表单,你填写完了表单之后依然是 POST 提交回来。
这里面存在先后顺序和请求数量的问题,先拿表单是一次请求,再提交表单是另一次请求。
你问这个问题就表示你没理解完成一个表单类型的Web程序的功能 都发生了什么HTTP通信过程,发生了几次通信,每次通信都做了些什么。你需要明白HTTP协议工作的基本过程才能很好地理解 JSP/Servlet 是怎么工作的。
要观察 HTTP 通信过程,可以在 Eclipse for j2ee developer 这个版本中打开 TCP/IP Monitor 监听本地的一个端口,例如:9090 然后转发到 localhost 8080 上,你再从浏览器上访问
http://localhost:9090/myapp/myform1.jsp 来测试你的程序,它会把数据提交到 TCP/IP Monitor 窗口中,你观察它的 request 和 response 各是什么样的。
以前的 1.7 以前的版本的 FlashGet 的日志窗口都能告诉我们这些 FTP/Http 通信过程,你可以下载一个老版本的 FlashGet 来体验一下下载一个 HTTP 的大文件,看看日志窗口都显示了通信过程中的哪些 HTTP HEAD。