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

 
 

在使用表单提交数据到服务器的时候有两张方式可共选择,一个是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

  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

  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 配置

  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改成如下:

  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. }

doGet与doPost的区别的更多相关文章

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

    doGet与doPost的区别 .Servlet接口只定义了一个服务方法--service .当发出客户端请求时,调用service方法并传递一个请求和响应对象 .使用时经常在doPost()中调用d ...

  2. doGet和doPost的区别

    1.doGet和doPost的区别,在什么时候调用,为什么有时doPost中套用doGet 2.提交的form     method=Post就执行DOPOST,否则执行GOGET 套用是不管meth ...

  3. servlet中doGet()和doPost()的区别

    1.生成方式 get方法有四种: ①直接在URL地址栏中输入URL ②网页中的超链接 ③form中method为get ④form中method为空时,默认是get提交 post只知道有一种:form ...

  4. 简单的Servlet结合Jsp实现请求和响应以及对doGet和doPost的浅析

    1.新建jsp,创建表单 <body> <form action="/MyfirstWeb/login"> username:<input type= ...

  5. servlet中的doGet()与doPost()以及service()的用法

    doget和dopost的区别 get和post是http协议的两种方法,另外还有head, delete等 1.这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能 ...

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

    转自:https://blog.csdn.net/qq_38963960/article/details/79468182 1.servlet中doGet()和doPost()的用法 一般来说我们是用 ...

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

    get和post是http协议的两种方法,另外还有head, delete等 这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串.post的参数是通过另外的 ...

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

    Servlet的doGet与doPost方法的区别与使用 2016年07月07日 13:05:13 阅读数:10222 一,区别 在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个 ...

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

    package com.sxt.in; import java.io.IOException; import javax.servlet.ServletException; import javax. ...

随机推荐

  1. #include <boost/function.hpp>

    为atoi取别名fun,fun实质上是函数指针 #include <iostream> #include <boost/function.hpp> void main() { ...

  2. MapReduce TotalOrderPartitioner 全局排序

    我们知道Mapreduce框架在feed数据给reducer之前会对map output key排序,这种排序机制保证了每一个reducer局部有序,hadoop 默认的partitioner是Has ...

  3. javascript 的对象

    所有事物都是对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 布尔型可以是一个对象. 数字型可以是一个对象. 字符 ...

  4. linux常用命令详解 (二)文件处理命令

    ◆ 文件处理命令:file.mkdir.grep.dd.find.mv.ls.diff.cat.ln: 系统信息存放在文件里,文件与普通的公务文件类似.每个文件都有自己的名字.内容.存放地址及其它一些 ...

  5. TCP/IP详解之:TCP

    第17章 TCP:传输控制协议 TCP提供了一种可靠的面向连接的字节流运输层服务 TCP的服务 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务. TCP通过下 ...

  6. C# C++ Java接口类型转换

    最近这几天做了一个兼职 ,主要是把C语言以及C#语言封装的dll,经过C++中转为Java语言支持的,主要其中的问题就是类型转换,在此列出常用类型的转换过程. #include "stdaf ...

  7. JS如何将UTC格式时间转本地格式

    Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, //month & ...

  8. Javascript获取当前时间戳的方法

    定义日期:   Date 对象用于处理日期和时间.   可以通过 new 关键词来定义 Date 对象.以下代码定义了名为 myDate 的 Date 对象:   var myDate=new Dat ...

  9. JavaScript的原型

    //回顾构造函数 function Box(name, age) { this.name = name; //实例属性 this.age = age; this.run = function() { ...

  10. Handle 消息机制

    android中Handle类的主要作用: 1.在新启动的线程中发送给消息 2.在主线程获取.处理消息 为什么要用Handle这样的一个机制: 因为在Android系统中UI操作并不是线程安全的,如果 ...