[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 则就会起很大的好处了。
[Java]Get与Post,客户端跳转与服务器端跳转的更多相关文章
- JSP中客户端跳转与服务器端跳转的区别
转载自:https://www.cnblogs.com/memewry/archive/2012/08/21/2649988.html 客户端跳转时用HttPservletResopse对象的send ...
- Http客户端跳转和服务器端跳转的区别
服务器端跳转: 服务器转发全程是没有客户端参与的,都在web container容器内部进行,没有任何服务器和客户端的通信,实际就是服务器内部的跳转. 这次forward, 服务器没有构建H ...
- Java Socket实现HTTP客户端来理解Session和Cookie的区别和联系
HTTP协议本身是无状态的,即使是同一台电脑同一个浏览器打开同一个页面两次,服务器不知道这两次请求是同一个客户端发送过来的,两次请求是完全独立的.例如,第一次请求时已经登录了,第二次再请求服务器会“忘 ...
- JAVA服务器与C#客户端的通信技术调研
JAVA服务器与C#客户端的通信技术调研 研究背景及目的: ARPG项目的需求:需要将现有的服务器从C++的编写平台换为java语言.在对需求进行分析的过程中,发现几点需要研究实现的问题 java与c ...
- SpringMvc的服务器端跳转和客户端跳转
首先,找到 package org.springframework.web.servlet.view; public class InternalResourceViewResolver extend ...
- java 通过ip获取客户端mac地址
java 通过ip获取客户端mac地址 package com.asppro.util; import java.io.BufferedReader; import java.io.IOExcepti ...
- java集成jpush实现客户端推送
代码地址如下:http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 一.准备工作 开发环境: jdk1.6 Eclipse ...
- java websocket开发的客户端程序
最近用java websocket开发的客户端程序,在和服务端链接通后,在数据传输完毕后,客户端自动关闭了链接,如何能保持链接不断开 这个是客户端的启动类,在循环完毕后,会自动断开和服务器的链接,开始 ...
- java版ftp简易客户端(可以获取文件的名称及文件大小)
java版ftp简易客户端(可以获取文件的名称及文件大小) package com.ccb.ftp; import java.io.IOException; import java.net.Socke ...
随机推荐
- Internet Explorer 6 的15个讨厌的bug和简单的解决方法
关于bug更全的,我推荐去这个网站hasLayout,整理的非常全!三年前就看了,最近手生,又翻出来看看~~虽然上面有很多bug讲解,但是我觉得目前用的比较多或者说是常见的应该属下面这篇文章,15 a ...
- Grunt 插件发布过程;
首先: Npm adduser User: xxxx Password: yyyy Email: glootz@gmail.com 进入到插件根目录下: Npm publish即可 Package.j ...
- [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
解决的问题:需要读取某个大文件夹下所有子文件夹中的excel文件,并汇总,汇总文件中需要包含的2部分的信息:1.该条数据来源于哪个子文件夹:2.该条数据来源于哪个excel文件.最终,按照子文件夹单独 ...
- Spark笔记之Catalog
一.什么是Catalog Spark SQL提供了执行sql语句的支持,sql语句是以表的方式组织使用数据的,而表本身是如何组织存储的呢,肯定是存在一些元数据之类的东西了,Catalog就是Spark ...
- 用代码截图去理解MVC原理
[概述] 看了蒋金楠先生的<Asp.Net Mvc框架揭密>,这本书详细地讲解了mvc的原理,很深奥也很复杂,看了几遍才将就明白了一点.他在第一章用了一个他自己写的mvc框架作为例子,代码 ...
- Gentoo rc-update service ‘net.eth0′ does not exist
最近迷上了Gentoo,并相信以后也会把更多的精力放在Gentoo上,不过Gentoo的安装的过程的确让很多人却步. 本文只提到添加net.eth0到默认的运行级别时一个很小的报错解决. # nano ...
- makefile 中 foreach
四.foreach 函数 foreach函数和别的函数非常的不一样.因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语 ...
- js array数组检测方式
typeof var arr = [1,2,3]; console.log(typeof arr);//'object' 数组的本质是一种特殊的对象,所以返回'object'.typeof运算符只能用 ...
- hadoop控制map个数(转)
原文链接:https://blog.csdn.net/lylcore/article/details/9136555 hadooop提供了一个设置map个数的参数mapred.map.task ...
- 一个查看Access数据库密码的工具
一个可以查看Access数据库密码的工具AccessCracker.需要.net2.0环境支持. 网盘地址:https://pan.baidu.com/s/1btbsFcsKO0Enj-rjkTlz6 ...