[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 ... 
随机推荐
- AngularJS入门基础——$provide.decorator 实例讲解
			<body ng-controller="OneController"> <script> var Foobar = function() { ... 
- JavaScript编写风格指南 (二)
			七:注释 // 频繁的使用注释有助于他人理解你的代码// 1.代码晦涩难懂// 2.可能被误认为是错误的代码// 3.必要但不明显的针对特定浏览器的代码// 4.对于对象,方法或者属性,生成文档是有必 ... 
- Windows bat 学习(高级)
			有一种叫做 Command Processor Extensions 的东西,即命令处理器扩展.他会使命令更加高级,功能更多. 在 cmd 里可以使用 ECHO %CMDEXTVERSION% 查看当 ... 
- 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, 用户授权什么的都对,很 ... 
- 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 ... 
- 解决阿里云安骑士漏洞警告:wordpress WPImageEditorImagick 指令注入漏洞
			解决:wordpress WPImageEditorImagick 指令注入漏洞 前些天在阿里云服务器上安装了wordpress,阿里云提示有wordpress WP_Image_Editor_Ima ... 
- Matplotlib安装感想
			刚刚安装完numpy,看完书又涉及到matplotlib,哎,安装它浪费了我很多时间,但收获很多呀 下面介绍一下具体的安装过程: (1)http://matplotlib.org/downloads. ... 
- Ibatis.Net 执行存储过程学习(八)
			首先在数据库创建存储过程: create proc [dbo].[usp_GetPersonById] @Id int as begin select Id,Name from Person wher ... 
- Densenet-Tensorflow
			在寻找densnet网络的时候,我发现了一个结构清晰完整的网络代码,在此作备份. https://github.com/taki0112/Densenet-Tensorflow Densenet-Te ... 
- lnmp “.user.ini”无法删除解决方法
			LNMP无法删除或更改权限,显示:rm: cannot remove `.user.ini’: Operation not permitted 无法删除“.user.ini”文件解决方法,运行后删除即 ... 
