[Java]Get与Post,客户端跳转与服务器端跳转

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 则就会起很大的好处了。

时间: 2024-08-04 00:11:23

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

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

服务器端跳转:      服务器转发全程是没有客户端参与的,都在web container容器内部进行,没有任何服务器和客户端的通信,实际就是服务器内部的跳转. 这次forward, 服务器没有构建HttpServletRequest对象和HttpServletResponse对象而是将原来的HttpServletRequest对象和HttpServletResponse对象传递给jsp过去. 客户端跳转:    当sendRedirect方法被执行,同时也意味着一次http request请求

客户端跳转和服务器跳转的区别以及各位困惑的在哪用

客户端跳转与服务器端在哪用forward是服务器请求资源,就是把所有参数都带上.服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址. redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重sendRedirect: 这个只是跳转,但是没有把查询参数带上,如果你想带参数的话,就得自己构造URL,就是那个location. 客户端跳转与服务器端跳转的区别 客户端跳转时用Ht

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

首先我们需要理解什么是服务器端跳转,什么是客户端的跳转. 简单理解所谓服务器端跳转就是指地址栏内容不变(客户端浏览器的地址栏不会显示目标地址的URL),//注:客户端请求到达以后,服务器发现当前资源给不出回应,要在服务器内部请求另一个资源的跳转.所以,1.跳转与否客户端不知道(URL不变),2.属于一次request 而客户端跳转是指地址栏内容发生改变(客户端向服务器发请求偶,然后服务器再给客户端一个响应,然后客户端再根据服务器端给的响应中的URL再向服务器发送请求,所以是两次请求,因此地址栏改

java服务器与c#客户端的字符编码问题

在服务器与客户端交互时,有时候服务器与客户端并不是拿同一种编程语言写的,这时候需要注意字符编码转换的问题.以java服务器和c#客户端为例,此时把c#端接收到的数据用GBK编码表示.  Encoding encoding = Encoding.GetEncoding("GBK");        //定义GBK编码            returnMsg = encoding.GetString(memStream.GetBuffer(), 0, memStream.GetBuffe

服务器端跳转与客户端跳转的区别

Jsp中有两种跳转方式(这里只写的简单的不传参数的方式): <1><jsp:forward page="URL"  flush="true">(服务器端跳转) <2>response.sendRedirect("url");(客户端跳转) 这两种方式的区别可以用下图来表示: 客户端跳转时,直接由客户端执行跳到另一页,在url地址中不会显示跳转之后的地址:服务器端跳转时,客户端会把跳转请求告诉客户端,有客户端自己

服务器端跳转和客户端跳转

1 服务器端跳转 客户端想要访问的内容不在该服务器上,该服务器自己去另外的服务器请求到该内容,然后还是由该服务器将内容返回给客户端. 2 客户端跳转 客户端想要访问的内容不在该服务器上,该服务器告诉客户端要去哪个服务器上去请求,然后客户端向新的服务器发起另外一次请求. 3 客户端跳转的过程 http返回的状态码为301.302时,就是客户端跳转.新的url在response里面.

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

JAVA服务器与C#客户端的通信技术调研 研究背景及目的: ARPG项目的需求:需要将现有的服务器从C++的编写平台换为java语言.在对需求进行分析的过程中,发现几点需要研究实现的问题 java与c+语言特性迥异,相比c+ 和c#关系的密切性,java需要对c#风格的一些数据结构和编码格式进行兼容: c#拥有的无符号数据类型如 ushort unint java并不存在,需要对数据类型进行转换: 根据开发需要 客户端现有的通信协议不能更改,所以在java中进行各类型的兼容操作 在项目中底层通信

利用java servlet实现简单的web请求过滤和跳转

今日有两个微信web项目合并了,但是还有些链接指向废弃的项目,另外不想在服务器上运行两份相同web项目(1.影响性能.2.维护升级容易出错),因此决定写一个简单链接跳转的项目,spring的filter过滤器可以实现,但想想spring干这个有点大材小用,想到java的servlet可以支持通配符,因此用servlet写了一个简单的跳转程序,总共花了不到一小时的时间.废话少说上代码: 1 /** 2 * Servlet implementation class Default 3 */ 4 @W

java集成jpush实现客户端推送

代码地址如下:http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 一.准备工作 开发环境: jdk1.6 Eclipse Luna Service Release 1 (4.4.1) 运行环境: eclipse 二.jpush 推送说明 jpush推送是国内的服务厂商提供的一站式push服务(同时支持iOS.android),后面也加入了即时通讯的能力供app使用.致力于打造简单.可靠.价格有竞争力的服务(简单功能全免