转自: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. AS3: Socket 数据包 收 发

    AS3.0中使用Socket使用tcp服务器协议,它是一种流协议,不停的将分片传输给客户端,P作为流,发包是不会整包到达的,而是源源不断的. 它不同于UDP服务器协议,UDP作为数据包协议,整包到达. ...

  2. Android_Layout_xml布局

    本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/11840079 1.构建xml布局文件 使用android提供的xml ...

  3. LeetCode Day5——House Robber

    问题描述: 意思就是说:给定一个数组,寻找一种选取方法,使得在保证任何两个相邻元素不同时被选的条件下得到的数值总和最大. 1. 递归 设nums为数组首地址,numsSize为数组的大小,max[i] ...

  4. 《think in python》学习-8

    字符串 字符串是一个序列,可以用方括号操作符来访问字符串中的单独字符 fruit = 'banana' letter = fruit[1] 方括号中的表达式称为下标 下标从0 开始 任何表达式,包括变 ...

  5. css系列教程--color direction line-height letter-spacing

    css标签:colorcolor:用法color:指定文本的颜色color:red/#fff/unicode; direction:用法 direction:定义文本的方向.dirction:ltr/ ...

  6. Java生成PDF报表

    一.前言 前几天,做ASN条码收货模块,需要实现打印下载收货报表,经一番查找,选定iText--用于生成PDF文档的一个Java类库.废话不多说,进入正题. 二.iText简介 iText是著名的开放 ...

  7. Oracle的关于建表,约束,查询等的练习

    从建立一个简单表,到实现一些复杂查询的例子, DROP TABLE grade;DROP TABLE item;DROP TABLE sporter;CREATE TABLE sporter( spo ...

  8. 关于C语言指针几个容易混淆的概念

    前言: 大多数学习过C/C++或者正在学习的同学在对指针概念把握时,总是感觉不太明了,小弟我也不例外啊,于是翻开资料复习整理一下,并把自己的学习心得拿出来供大家分享,讨论. 基本概念掠过,主要来探讨一 ...

  9. zookeeper_02:zookeeper基础

    ZooKeeper基础概述 ZooKeeper维护一个小型的数据节点,这些节点被称为znode,采用类似于文件系统的层级树状结构进行管理. 针对一个znode,没有数据常常表达了重要的信息.比如,在主 ...

  10. hql中or的用法(代替union)

    hql中不支持union和unionAll关键字因为在查询出的结果集中无法进行排序.代替union起到相同作用的 是or关键字.在构造hql时考虑使用or代替union产生多个结果集的组合. 详解如下 ...