转自: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. 标准C++的vector使用

    原文:http://blog.csdn.net/pandy1110/article/details/5963908 C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现 ...

  2. java实现二叉树的相关操作

    import java.util.ArrayDeque; import java.util.Queue; public class CreateTree { /** * @param args */ ...

  3. Do Palapala (this)

    Description 伟大的中国人民有宝箱容量为S(0<=S<=20000),有m个物品(0<m<=30,每个物品有一个体积(正整数).任取若干个装入箱内,使箱子的剩余空间为 ...

  4. setTimeout的若干坑

    第一坑:作用域 首先,有一个关于this的面试题,是这样的: var fullname = 'John Doe'; var obj = { fullname: 'Colin Ihrig', prop: ...

  5. HTTP中的URL长度限制(资料整理)

    HTTP中的URL长度限制   首先,其实http 1.1 协议中对url的长度是不受限制的,协议原文: The HTTP protocol does not place any a priori l ...

  6. HTML特殊符号编码大全

    HTML特殊字符编码:往网页中输入特殊字符,需在html代码中加入以&开头的字母组合或以&#开头的数字.下面就是以字母或数字表示的特殊符号大全. ´ ´ © © > > µ ...

  7. WinCmd

    Q1:tracert Tracert (跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径. Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定 ...

  8. QT5中QString与char *的相互转换

    以例子说明: #include <QApplication> #include <QDebug> #include <QString> #include <Q ...

  9. jQuery事件对象的属性

    注:摘自<锋利的jQuery(第二版)> JQuery在遵循W3C规范的情况下,对事件对象的常用属性进行了封装,使得事件处理在各大浏览器下都可以正常运行而不需要进行浏览器类型判断. 1. ...

  10. gridview外边距

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区. 您需要 登录 才可以下载或查看,没有帐号?注册  x 本帖最后由 同舟 于 2013-9-30 11:44 编辑 最新项目需要个单行显示功能键 ...