doGet与doPost的区别

转自:http://blog.csdn.net/luoweifu/article/details/7865243

目录(?)[-]

  1. 不同点一
  2. 不同点二
    1. 输入表单inputhtml
    2. Serlvlet类InputServletjava
  3. Get和post方式的应用

在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get。可在<form>中的method属性中指定提交的方式。如:<formaction="inputForm"method="get">,如果不指定method属性,则会默认该属性为”get”方式。

Get和post都能够提交数据,那么他们有什么不同呢?

不同点一:

通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;而post方式没有数据大小的限制,理论上传送多少数据都可以。

不同点二:

通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的;而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。

下面举一个例子来说明:

1.输入表单input.html

[html] view plaincopy

  1. <html>
  2. <head>
  3. <title>表单输入</title>
  4. </head>
  5. <body>
  6. <form action="inputForm"  method="post">
  7. name:<input type="text"name="name"><br>
  8. sex:<input type="radio"value="男" name="sex" checked="checked">男
  9. <input type="radio"value="女" name="sex">女<br>
  10. <input type=submitvalue="提交" name="submit"><br>
  11. </form>
  12. </body>
  13. </html>

2.Serlvlet类InputServlet.java

[java] view plaincopy

  1. packagecn.edu.jxau.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. importjavax.servlet.ServletException;
  5. importjavax.servlet.http.*;
  6. public class InputServletextends HttpServlet{
  7. @Override
  8. protected void doGet(HttpServletRequest req, HttpServletResponseresp)
  9. throws ServletException, IOException {
  10. String name =req.getParameter("name");
  11. String sex = req.getParameter("sex");
  12. PrintWriter out =resp.getWriter();
  13. out.println("<html>");
  14. out.println("<head><title>Servlet展示页</title></head>");
  15. out.println("<body>name:" + name + "<br/> sex: " + sex +"</body>");
  16. out.println("</html>");
  17. }
  18. @Override
  19. protected void doPost(HttpServletRequest req, HttpServletResponseresp)
  20. throws ServletException, IOException {
  21. String name =req.getParameter("name");
  22. String sex =req.getParameter("sex");
  23. PrintWriter out =resp.getWriter();
  24. out.println("<html>");
  25. out.println("<head><title>Servlet展示页</title></head>");
  26. out.println("<body>name:" + name + "<br/> sex: " + sex +"</body>");
  27. out.println("</html>");
  28. }
  29. public static void main(String args[]) {
  30. System.out.println("test");
  31. }
  32. }

3.xml 配置

[html] view plaincopy

  1. <servlet>
  2. <servlet-name>input</servlet-name>
  3. <servlet-class>
  4. cn.edu.jxau.servlet.InputServlet
  5. </servlet-class>
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>input</servlet-name>
  9. <url-pattern>/inputForm</url-pattern>
  10. </servlet-mapping>

在浏览器中地址栏中输入:http://localhost:8080/WebTest/input.html

在表单中填写内容后点”提交”,可以看到如下:

图1

如果将input.html中的<formaction="inputForm" method="post">换成<formaction="inputForm" method="get">则,可以看到如下结果

图2

注意地址栏的变化,图2中”?”后面跟了表单名和对应的值,而图1中没有。

Get和post方式的应用

作为web应用的用户,并不太愿意让自己提交的数据被别人看到,而如果用get方式,则可以通过地址栏的历史记录被别人看到。所以在web开发中,表单的提交一般用post方式,而不用get方式。

是不是说get方式就没有用武之地了呢?不是的,例如在网页上指定<a href=””>、<frame src=””>的时候,实际上都是默认通过get方式去服务器上取得资源。Get方式的一个优点在于,可以很方便地控制链接的目标地址。

注:当然,现在很多的web程序开发人员都喜欢一种”偷懒”的做法。如果需要同时实现doGet 和doPost方式的Servlet,通常会只在doGet方法中实现处理过程,二在doPost方法直接调用doGet方法。如将InputServlet.java改成如下:

[java] view plaincopy

  1. package cn.edu.jxau.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletException;
  5. import javax.servlet.http.*;
  6. public class InputServlet extends HttpServlet{
  7. @Override
  8. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  9. throws ServletException, IOException {
  10. String name = req.getParameter("name");
  11. String sex = req.getParameter("sex");
  12. PrintWriter out = resp.getWriter();
  13. out.println("<html>");
  14. out.println("<head><title>Servlet 展示页</title></head>");
  15. out.println("<body> name:" + name + "<br/> sex: " + sex + "</body>");
  16. out.println("</html>");
  17. }
  18. @Override
  19. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  20. throws ServletException, IOException {
  21. doGet(req, resp);
  22. }
  23. public static void main(String args[]) {
  24. System.out.println("test");
  25. }
  26. }
时间: 2024-10-15 12:05:22

doGet与doPost的区别的相关文章

doGet和doPost的区别

doget和dopost的区别 get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传. 在servlet开发中,以doGet()和doPost()分别处理get和post方法. 首先判断请求时是get还是post,如果是get就调用doGet(), 如果是post就调用doPos

【Servlet】doGet()与doPost()的区别

1 doGet与doPost的区别 2 3 1.Servlet接口只定义了一个服务方法--service 4 2.当发出客户端请求时,调用service方法并传递一个请求和响应对象 5 3.使用时经常在doPost()中调用doGet()方法,所以创建servlet时可以不要都Post()方法, 6 4.doGet()只有一个流,参数附加在URL后,大小个数有严格限制且只能是字符串 7 doPost()的参数是通过另外的流传递的,不能通过URL,所以可以很大,也可以传递二进制数据,如文件的上传

Servlet之doGet()和doPost()方法区别和联系【入门版,初学者必看】

Servlet 中 重写的doGet(),doPost()方法,分别代表get请求和post请求 其实不管get请求,还是post请求,处理方式类似 所以一般习惯在doGet()中调用一下doPost ()或者 在doPost()里面调用doGet() 版权声明:本文为博主原创文章,未经博主允许不得转载.

servlet中doGet()和doPost()的用法

转自:https://blog.csdn.net/qq_38963960/article/details/79468182 1.servlet中doGet()和doPost()的用法 一般来说我们是用不到doGet方法的,doGet方法提交表单的时候会在url后边显示提交的内容,所以不安全.而且doGet方法只能提交256个字符(1024字节),而doPost没有限制,因为get方式数据的传输载体是URL(提交方式能form,也能任意的URL链接),而POST是HTTP头键值对(只能以form方

SERVLET中的doGet与doPost两个方法之间的区别

get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传. 在servlet开发中,以doGet()和doPost()分别处理get和post方法. 首先判断请求时是get还是post,如果是get就调用doGet(), 如果是post就调用doPost().都会执行这个方法. 1.

Servlet的doGet与doPost方法的区别与使用

Servlet的doGet与doPost方法的区别与使用 2016年07月07日 13:05:13 阅读数:10222 一,区别 在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get.可在<form>中的method属性中指定提交的方式.如:<form action="inputForm"method="get">,如果不指定method属性,则会默认该属性为"get"方式. Get和post都能

Servlet的Service方法和doget 和 dopost方法的区别,常见的错误解析

package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Service方法和doget 和 dopost方

doGet和doPost区别

doGet:处理GET请求 doPost:处理POST请求 当发出客户端请求的时候,调用service 方法并传递一个请求和响应对象.Servlet首先判断该请求是GET 操作还是POST 操作.然后它调用下面的一个方法:doGet 或 doPost.如果请求是GET就调用doGet方法,如果请求是POST就调用doPost方法.doGet和doPost都接受请求(HttpServletRequest)和响应(HttpServletResponse). 1.大小 get只有一个流,参数附加在ur

android doGet和doPost

doGet和doPost的差别 get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的差别,get仅仅有一个流,參数附加在url后.大小个数有严格限制且仅仅能是字符串. post的參数是通过另外的流传递的.不通过url.所以能够非常大,也能够传递二进制数据,如文件的上传. 在servlet开发中,以doGet()和doPost()分别处理get和post方法. 首先推断请求时是get还是post,假设是get就调用doGet(), 假设是post就调用d