美文网首页
servlet 转发和重定向

servlet 转发和重定向

作者: 落云和枫 | 来源:发表于2019-07-11 19:21 被阅读0次

    请求转发:
    方式:request.getRequestDispacther("/test.jsp").forword(request,response);
    过程分析:客户端发出一个请求reqeust到服务器,服务器找到相应的Servlet处理数据,然后调用
    request.getRequestDispacther("/test.jsp").forword(request,response);
    从字面上也可以理解:带着request,response向test.jsp前进!进!(完全自己意淫的,不要当真...)
    请求和响应都被送到另一个Servlet或者jsp(特殊的Servlet)中。这样整个过程中,只有一个请求、一个响应,所有 Servlet和JSP都共享它俩(好可怜..),所以所有的Servlet和Jsp都可以从request中获取请求参数。

    重定向:
    方式:response.sendRedirect("test.jsp");
    过程分析:客户端发出一个请求reqeust到服务器,服务器找到相应的Servlet处理数据,到这里都是一样一样的。然后调用
    response.sendRedirect("test.jsp");
    从字面上也可以理解:返回客户端一个叫test.jsp的页面。(不要当真...)
    注意,这个方法是response的方法哦,这个时候它就已经给客户端响应了,这一次的请求、响应过程已经结束了!
    但是呢,临了的时候它还告诉客户端,你要去test.jsp哈(死了都不老实,难怪活不过两集敲打)
    于是乎客户端又向服务器发出一次去test.jsp的请求,根据http(s)特性,每次请求之间是完全独立的,所以本次请求到test.jsp页面,是不会再获取上一次request中的参数的。

    不同点列举:
    1、安全性
    显然 请求转发更安全。一个请求在完成的过程中可能会通过多个Servlet,最终到达一个jsp页面,在整个过程中,url是不会变的。这样从客户端就看不出来服务器是由哪些资源来处理数据的。
    而重定向更遵循”所见即所得“,也就是你所请求的资源,就是url显示的。比如重定向到test.jsp,url可能就是“localhost:8080/project_name/test/test.jsp”.这样不仅不安全,也限制了服务器端的灵活性。
    2、可定位范围
    重定向范围更广,应该说它可以重定向到任何有效的url。
    而转发就比较杯具了,只能在服务器内部转发。

    相关文章

      网友评论

          本文标题:servlet 转发和重定向

          本文链接:https://www.haomeiwen.com/subject/ktkjkctx.html