`

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

    博客分类:
  • Java
阅读更多

 

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

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 中最大量为80KBIIS5 中为100KB

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

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

              总结:

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

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

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

       四、GetForm 的默认方法;

       五、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 对象,此时两个请求已经不在一个线程了,所以requestresponse 对象都不是开始的那个了;

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

 


4
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics