zoukankan      html  css  js  c++  java
  • Servlet的传值与跳转

    servlet中跳转的有两种方法:

    方法一:response.sendRedirect("../success.jsp")
    利用这个方法如果跳转前有request.setAttribute("a","b")的话,那么参数是传不到success.jsp,因为它在客户端重定向到

    success.jsp了,本质上跳了2次。所以参数失效,使用这个的时候会发现浏览器的URL地址发生了变化。

    方法二:RequestDispatcher   rd   =   getServletContext().getRequestDispatcher("/login.jsp");
            rd.forward(request,response);
    利用这个方法跳转,参数可以被正确传送,而且效率比第一种高,IE的URL地址不变。

    ------------------------------------------------------------------------------------------------------

    response.sendRedirect(response.encodeRedirectURL(request.getContextPath() +"/" +uri));



    RequestDispatcher rd=servlet.getServletContext().getRequestDispatcher(uri);
    rd.forward(request, response);

    上面这两种跳转有什么区别???

    response.encodeRedirectURL(request.getContextPath() +"/" +uri));
    这个是当使用session时,把session id符在uri的尾部一起传送.当客户关关cookie时使用.

    所以你应该是在比较
    response.sendRedirect(request.getContextPath() +"/" +uri)

    RequestDispatcher rd=servlet.getServletContext().getRequestDispatcher(uri);
    rd.forward(request, response);
    的差别吧?

    两者最大的差别是下者把request及response的控制权带到转向的页面.
    ------------------------------------------------------------------------------------------------------
    还是个类似的问题:

    我在表单提交时,比如提交到 http://localhost/myapp/reg.do 这个 action 里;

    在 action 里处理完,跳转到操作结果页面,但是此时地址栏中还是显示http://localhost/myapp/reg.do,刷新页面,又提交一次



    这样的问题,用哪个跳转能解决呢?

    在http://localhost/myapp/reg.do的最後加入
        response.sendRedirect("http://localhost/myapp/regResult.do");
  • 相关阅读:
    最全的Pycharm debug技巧,「建议收藏」
    2种场景下的Docker配置的jerkins乱码处理
    is_unique 属性检查给定 Series 对象中的基础数据是否唯一
    【吐血整理】Python 常用模块(二):json 模块
    SDL 显示输入法候选框
    八十年代的歌 磊哥吉他谱
    【云服务器】推荐san、feng、yun服务器,目前永久免费!
    1.0Spring的“出生”
    写在之前-最近打算整理下Spring
    杂记-DIY电脑清单
  • 原文地址:https://www.cnblogs.com/xinxindiandeng/p/1326973.html
Copyright © 2011-2022 走看看