http get post 请求(转)

Form中的get和post方法,在数据传输过程中分别对应了HTTP协议中的GET和POST方法。二者主要区别如下: 
1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。 

2、 Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用 “&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。 

3、 Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。 Post的所有操作对用户来说都是不可见的。 

4、Get传输的数据量小,这主要是因为受URL长度限制(2048byte);而Post可以传输大量的数据,所以在上传文件只能使用Post(当然还有一个原因,将在后面的提到)。 

5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。 

6、Get是Form的默认方法。

 

 

 

接受post请求的一端,为了便于大家理解,就作为服务器吧,上面的代码则作为客户端好了。服务器这边我们需要写一个servlet,这个servlet是服务器启动,就立即启动的,这个是在web.xml文件里配置,我想大家是会的。服务器端的代码如下所示:

import java.io.IOException;
import javax.servlet.ServletException;

 


import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * Servlet implementation class GetRequestServlet
 */
public class GetRequestServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
 //private static final Logger log = Logger.getLogger(GetRequestServlet.class);
 /**
  * @see HttpServlet#HttpServlet()
  */
 public GetRequestServlet() {
  super();
  // TODO Auto-generated constructor stub
 }
 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  String file = request.getParameter("file");
  String sendTimeStr = request.getParameter("sendTime");
  long sendTime = Long.valueOf(sendTimeStr);
  response.setContentType("text/html;charset=utf-8");
  System.out.println(file);
  System.out.println("当前从发送到接受所用时间为:" + (System.currentTimeMillis() - sendTime));
  //PrintWriter out = response.getWriter();
  //out.println("hello world!" + file);
 }
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  doGet(request, response);
 }
}

 

大家运行会发现,如果读取的文件不大,是可以将读取的文件流输送到服务器的,但是一旦文件变大,就会出错。这一方面可能是post后缀的内容大小是被限定的吧,我是这么想的,如果有错误请纠正。

posted @ 2011-12-08 14:06  wtx  阅读(397)  评论(0编辑  收藏  举报