转自: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. node.async.auto

    资料 GITHUB async ASYNC详解—from csdn nodejs的高性能与灵活性让服务端开发变得有了些乐趣,最近在看nodejs在服务端的一些应用,觉得其npm下的众多开源包让其虽没有 ...

  2. UVA10869 - Brownie Points II(线段树)

    UVA10869 - Brownie Points II(线段树) 题目链接 题目大意:平面上有n个点,Stan和Ollie在玩游戏,游戏规则是:Stan先画一条竖直的线作为y轴,条件是必需要经过这个 ...

  3. jQuery基础---Ajax基础教程

    jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax ...

  4. Android学习之sqlite与listview

    在android系统中使用的是sqlite数据库,前面的简易登录系统已经讲述了数据库的应用.本例的重点是实现数据库与listview的绑定.demo的数据是将个人的信息绑定到listview中,并存在 ...

  5. Silverlight学习(五)图形标绘

    Silverlight中进行图形标绘的方法太多了,这里的标绘和Arcgis中的标绘不同,这里大多是静态的标绘.标绘的方法主要有Path(路径标记法).直接标绘(Line等).几何标记(LineGeom ...

  6. RDLC报表系列(四) 矩阵

    继续接上一篇的内容,本文主要是讲矩阵的内容 用到的数据源如下: DataTable dt = new DataTable(); dt.Columns.Add("FiscalYear" ...

  7. android: ListView历次优化

    第一版: ListView一屏显示多少对象其内部就创建多少View对象.滑动时退出的缓存对象留给滑进去时调用getView传的convertView.因为如果每次都findViewById查找创建视图 ...

  8. 2015.01.06 JQuery

    jQuery是一个兼容多浏览器的javascript库.开发出来的JavaScript的脚本包.非侵入性的脚本. 下载地址:http://jquery.com/          (打不开网页需要翻* ...

  9. OC 数组

    /*---------------------------创建数组------------------------------*/ //NSArray *array = [[NSArray alloc ...

  10. 使用CRT定位内存泄漏

    1. 使能内存泄漏检测#define _CRTDBG_MAP_ALLOC#include <stdlib.h>#include <crtdbg.h>注1:语句顺序不能修改:注2 ...