zoukankan      html  css  js  c++  java
  • out.print()与response.sendRedirect()

    这样的情况下

      out.print("<script>alert('非法操作,请重新登录!');</script>");

      response.sendRedirect("index.jsp");

    这样子用的时候会发现,js的弹框出不来,直接执行了 index.jsp 的跳转。

    这是因为out.print()要输出的东西还没发出,而服务器执行到response.sendRedirect()的时候会清空缓冲区并立即发送响应行告诉客户端要立马请求index.jsp这个页面,而客户端收到响应后会立刻执行index.jsp的请求。

    如果在out.print()后面加上out.flush()或out.close()

      out.print("<script>alert('非法操作,请重新登录!');</script>");

      out.flush();或out.close();

      response.sendRedirect("index.jsp");

    这种情况下,js弹框是可以出来了,但是index.jsp的跳转又失效了。这是因为执行out.flush()或out.close()时服务器立刻刷出缓冲区并发送给客户端,因为都已经作出了响应,所以后面的语句 response.sendRedirect() 就失效了。

    所以,使用以上的方式目前无解,因为两者是矛与盾的关系,有你没我,有我没你。所以不能这样组合用,只能这样子了!

    out.print("<script>alert('非法操作,请重新登录!');window.location.href='index.jsp';</script>");

  • 相关阅读:
    navigator
    windows事件
    js 数组
    类,屏蔽鼠标右键
    document.links[i].onclick;展示表单的输入
    手机端取消文字选中、取消图片长按下载
    ios显示一个下载banner
    js时间Date对象介绍及解决getTime转换为8点的问题
    iphone的click导致div变黑
    如何给外部引用的js文件传递参数
  • 原文地址:https://www.cnblogs.com/zempty/p/4281622.html
Copyright © 2011-2022 走看看