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>");

  • 相关阅读:
    接口的幂等性原则
    SpringBoot热部署-解决方案
    @Resource 与 @Service注解的区别
    软件概要设计做什么,怎么做
    First Show
    Glide源码解析一,初始化
    android使用giflib加载gif
    android的APT技术
    RxJava的concat操作符
    RxJava基本使用
  • 原文地址:https://www.cnblogs.com/zempty/p/4281622.html
Copyright © 2011-2022 走看看