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. AngularJS入门基础——$provide.decorator 实例讲解

    <body ng-controller="OneController"> <script>  var Foobar = function() {      ...

  2. JavaScript编写风格指南 (二)

    七:注释 // 频繁的使用注释有助于他人理解你的代码// 1.代码晦涩难懂// 2.可能被误认为是错误的代码// 3.必要但不明显的针对特定浏览器的代码// 4.对于对象,方法或者属性,生成文档是有必 ...

  3. Windows bat 学习(高级)

    有一种叫做 Command Processor Extensions 的东西,即命令处理器扩展.他会使命令更加高级,功能更多. 在 cmd 里可以使用 ECHO %CMDEXTVERSION% 查看当 ...

  4. springboot整合rabbitmq客户端连接报超时异常问题解决:An unexpected connection driver error occured java.net.SocketException: Socket Closed,java.util.concurrent.TimeoutException

    我用的是springboot2.0.6版本,对应的ampq也是2.0.6版本,然后启动一直报: 还有java.util.concurrent.TimeoutException, 用户授权什么的都对,很 ...

  5. SquishIt引起的HTTP Error 500.0 - Internal Server Error

    将一个ASP.NET项目从.NET Framework 4.0升级至.NET Framework 4.5之后,访问时出现HTTP Error 500.0 - Internal Server Error ...

  6. 解决阿里云安骑士漏洞警告:wordpress WPImageEditorImagick 指令注入漏洞

    解决:wordpress WPImageEditorImagick 指令注入漏洞 前些天在阿里云服务器上安装了wordpress,阿里云提示有wordpress WP_Image_Editor_Ima ...

  7. Matplotlib安装感想

    刚刚安装完numpy,看完书又涉及到matplotlib,哎,安装它浪费了我很多时间,但收获很多呀 下面介绍一下具体的安装过程: (1)http://matplotlib.org/downloads. ...

  8. Ibatis.Net 执行存储过程学习(八)

    首先在数据库创建存储过程: create proc [dbo].[usp_GetPersonById] @Id int as begin select Id,Name from Person wher ...

  9. Densenet-Tensorflow

    在寻找densnet网络的时候,我发现了一个结构清晰完整的网络代码,在此作备份. https://github.com/taki0112/Densenet-Tensorflow Densenet-Te ...

  10. lnmp “.user.ini”无法删除解决方法

    LNMP无法删除或更改权限,显示:rm: cannot remove `.user.ini’: Operation not permitted 无法删除“.user.ini”文件解决方法,运行后删除即 ...