http://www.thinksaas.cn/group/topic/133101/

虽然说get 与post 问题很老套了,但是作为web 开发人员来说对于这个的理解确实很有必要,其实说到get 和post,还可以有doGet 与doPost 和客户端跳转与服务端跳转的区别;

GET 与POST 的区别:

一、Get 是从服务器上获取 数据,Post 则是向服务器传送 数据;

二、Get 将表单中数据的按照variable=value 的形式,添加到action 所指向的URL 地址的后面 ,并且两者用“?” 连接,而各个变量之间使用“&” 连接。Post 是将表单中的数据放在form 的数据体中( 或者说把内容放在了http消息体里) ,按照变量和值相对应的方式,传递到action 所指向URL ;

所以从上第二点也可以得到另外两个结论:

1 、Get 传送的数据量较小 ,不能大于2KB ,这主要是因为受URL 长度限制。

Post 传送的数据量较大 ,所以在上传文件只能使用Post( 注意在文件上传时还要加上enctype="multipart/form-data" 作为上传文件的标识) 。一般被默认为不受限制。但理论上,IIS4 中最大量为80KB ,IIS5 中为100KB ;

2 、Get 安全性非常低 (因为用户可以通过URL 看到)

Post 安全性较高 (其所有操作对用户来说都是不可见的)。但是执行效率却比Post 方法要高点(优点造就了 其缺点);

总结:

a 、如果是包含机密信息的话,建议用Post 数据提交方式;

b 、当数据处理不改变数据模型的状态则推荐使用Get 方式,例如在做数据查询。而操作改变了数据模型的状态时,则建议使用Post 方式,例如数据添加、修改或删除,送电子邮件等;

三、Get 限制Form 表单的数据集的值必须为ASCII 字符;而Post 支持整个ISO10646 字符集,所以说在出现一些乱码时有时候可以将Get 请求换为Post 请求;

四、Get 是Form 的默认方法;

五、Get 方式提交来的数据在服务器端用Request.QueryString() 来获取,用Post 方式提交的数据用Request.Form() 来获取;

服务器端跳转与客户端跳转:

首先我们需要理解什么是服务器端跳转,什么是客户端的跳转。简单理解所谓服务器端跳转就是指地址栏内容不变(客户端浏览器的地址栏不会显示目标地址的URL ),而客户端跳转是指地址栏内容发生改变(客户端向服务器发请求偶,然后服务器再给客户端一个响应,然后客户端再根据服务器端给的响应中的URL 再向服务器发送请求,所以是两次请求,因此地址栏改变了显示最后一次请求地址);

Java 中服务器端跳转:

1 、request.getRequestDispatcher("success.jsp").forward(request,response) ,它是只要执行到此语句之后则立刻进行跳转,可以传递request 属性 ;

2 、<jsp:forward>, 这种跳转属于无条件跳转,它只能在栈内转,而sendREdirect 中则可以任意转,甚至可以输入baidu ;

客户端跳转:

1 、response.sendRedirect("fail.jsp") ,所有页面执行完之后再进行跳转, 不能传递request 范围的属性 ,但是可以通过地址重写的方式向跳转页传递参数,因为该方法执行完之后就相当于一次http request 的结束,这是服务器会向客户端发送302 状态码和新的url ,告诉客户端重新发送request 请求到新的url ,然后客户端照此执行,执行即新的请求响应流程开始,服务器再重新创建HttpServletRequest 对象和HttpServletResponse 对象,此时两个请求已经不在一个线程了,所以request 和response 对象都不是开始的那个了;

2 、response.setHeader("refresh","2;URL=index.jsp"),2 秒后跳转到其他页面;

3 、<a href="http://www.baidu.com"> 百度</a> ,超链接;

4 、表单提交;

通过以上可以得知,如果现在一个页面中使用了JDBC ,则应该在forward 跳转之前关闭数据库链接,而使用respose则可以在任意的位置处关闭;

注意:

1 、客户端跳转“/ ”代表服务器路径webapps ,即服务器根路径,服务器端跳转“/ ”代表站点根路径,即应用程序根路径;

2 、尽量使用response.sendRedirect("fail.jsp") 而不去使用forward ,因为当服务器崩溃了,那么sendRedirect 则就会起很大的好处了。

[Java]Get与Post,客户端跳转与服务器端跳转的更多相关文章

  1. JSP中客户端跳转与服务器端跳转的区别

    转载自:https://www.cnblogs.com/memewry/archive/2012/08/21/2649988.html 客户端跳转时用HttPservletResopse对象的send ...

  2. Http客户端跳转和服务器端跳转的区别

    服务器端跳转:      服务器转发全程是没有客户端参与的,都在web container容器内部进行,没有任何服务器和客户端的通信,实际就是服务器内部的跳转. 这次forward, 服务器没有构建H ...

  3. Java Socket实现HTTP客户端来理解Session和Cookie的区别和联系

    HTTP协议本身是无状态的,即使是同一台电脑同一个浏览器打开同一个页面两次,服务器不知道这两次请求是同一个客户端发送过来的,两次请求是完全独立的.例如,第一次请求时已经登录了,第二次再请求服务器会“忘 ...

  4. JAVA服务器与C#客户端的通信技术调研

    JAVA服务器与C#客户端的通信技术调研 研究背景及目的: ARPG项目的需求:需要将现有的服务器从C++的编写平台换为java语言.在对需求进行分析的过程中,发现几点需要研究实现的问题 java与c ...

  5. SpringMvc的服务器端跳转和客户端跳转

    首先,找到 package org.springframework.web.servlet.view; public class InternalResourceViewResolver extend ...

  6. java 通过ip获取客户端mac地址

    java 通过ip获取客户端mac地址 package com.asppro.util; import java.io.BufferedReader; import java.io.IOExcepti ...

  7. java集成jpush实现客户端推送

    代码地址如下:http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 一.准备工作 开发环境: jdk1.6 Eclipse ...

  8. java websocket开发的客户端程序

    最近用java websocket开发的客户端程序,在和服务端链接通后,在数据传输完毕后,客户端自动关闭了链接,如何能保持链接不断开 这个是客户端的启动类,在循环完毕后,会自动断开和服务器的链接,开始 ...

  9. java版ftp简易客户端(可以获取文件的名称及文件大小)

    java版ftp简易客户端(可以获取文件的名称及文件大小) package com.ccb.ftp; import java.io.IOException; import java.net.Socke ...

随机推荐

  1. [转载]嵌入式C语言中的Doxygen注释模板

    http://blog.csdn.net/willerency/article/details/7083953 嵌入式C语言开发中通常使用Doxygen进行文档的生成.Doxygen支持多种格式,非常 ...

  2. Sortable.js

    拖拽的时候主要由这几个事件完成, ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上 ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此 ...

  3. MongoDB 之 Array Object 的特殊操作 MongoDB - 6

    相比关系型数据库, Array [1,2,3,4,5] 和 Object { 'name':'DragonFire' } 是MongoDB 比较特殊的类型了 特殊在哪里呢?在他们的操作上又有什么需要注 ...

  4. Android启动过程

    1.背景知识                                                          Init进程是Linux环境下非常重要的一个进程,而Zygote进程是J ...

  5. 设置adb server的端口号

    在操作系统的系统环境里面,加一个环境变量: ANDROID_ADB_SERVER_PORT,值为9999,看自己喜欢.

  6. js array数组检测方式

    typeof var arr = [1,2,3]; console.log(typeof arr);//'object' 数组的本质是一种特殊的对象,所以返回'object'.typeof运算符只能用 ...

  7. ecplise里的run as里只有run configurations是怎么回事?

    一.没有main方法 二.main方法所在的类不是在与文件名同名的类中

  8. Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: #coding:utf- from celery.task.schedules ...

  9. Java编程的逻辑 (68) - 线程的基本协作机制 (下)

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  10. #HTML 块级、内联、内联块级元素

    [常用的块级元素] div,form,p,table,h1~h6,hr,dl,ol,ul,pre等 [常用的内联元素] a,img,input,span,br,select,strong,em,tex ...