我有一个页面middle.jsp,没有具体内容,仅用作页面跳转,类似下面这段代码:
 <BODY>
      <SCRIPT LANGUAGE="JavaScript" src="……">   //这是从cnzz获取的一段统计网站流量的脚本
      <%
           response.sendRedirect("http://www.baidu.com");
      %>
 </BODY>问题是:middle.jsp被访问后可以跳转到http://www.baidu.com,但是从网站统计后台没有看到middle.jsp的被访问记录。如果将response.sendRedirect("http://www.baidu.com");这句注释掉,再访问middle.jsp,统计后台可以记录middle.jsp的访问记录。
为什么添加了response.sendRedirect("http://www.baidu.com");后统计流量的这个js脚本就不执行了?
如何实现即通过response.sendRedirect("http://www.baidu.com");跳转,又让统计脚本执行?

解决方案 »

  1.   

    request.getRequestDispatcher()是服务器端跳转 
    response.sendRedirect()是客户端跳转 sendRedirect是通知IE再次提交一个http请求, 
    dispatcher是直接转到目的地址,最直接得表现 
    应该是dispatcher后的IE地址栏地址是不变的,lz试试前面那个?
      

  2.   

    客户端没能执行脚本呢,只要服务端如果调用了sendRedirect那么服务端OUT流里面的东西要全部干掉,
    所以你的那JAVASCRIPT脚本跟本就没去客户端
      

  3.   

    楼主统计后台可以记录middle.jsp的访问记录的代码是什么? 我觉得跟前面跳转到 middle.jsp的代码和后台统计的方法有关系。 
      

  4.   

    建议 用javascript来实现这个跳转<script>
    放你做通加的javascrpt代码,例如google的js
    window.location.href="www.baidu.com"
    </script>
      

  5.   

    用这个转发就可以了request.getRequestDispatcher("http://www.baidu.com");
    要非用response跳转的话  可以就要把你js文件读出的东西放在session里
      

  6.   

    把javascript方法放到onload()里,看会执行不
      

  7.   

    楼主应该知道sendRedirect都做了些什么。在使用sendRedirect的前提是响应没有被提交,就是isCommitted方法得返回false,如果你在使用sendRedirect的时候响应已经被提交了,这个放回就会抛出异常。在你没提交的前提下,sendRedirect它会清空out里的数据,然后重定向到相应的请求。