我们不能在jsp文件中的sendRedirect之前有alert()

时间:2013-10-17 09:25:53

标签: jsp scriplets

我想知道在从一个页面重定向到另一个页面之前如何实现警报。

我的代码:( sciptlet)

  <% 
       if(condition)
        {
            // alert here. before redirecting other page.
            // now redirect here as fallow.
             response.sendRedirect("sem-duration_old.jsp");

           }
   %>

我试过这不起作用:

   <% 
       if(condition)
        {   
    %>
              <script>
              alert(" we are going to some other page" );
            </script> 
    <%               
            response.sendRedirect("semduration_old.jsp");

           }
   %>

3 个答案:

答案 0 :(得分:4)

记住客户端和服务器端之间的分离。重定向信号(HTTP 302响应)由您的jsp发送,然后由浏览器接收。因此,无论您将哪些内容写入响应缓冲区(html标记,脚本标记和警报),您的浏览器都会立即请求重定向中指定的位置。所以你的jsp响应将类似于以下内容:

HTTP/1.1 302 Moved Temporarily
Server: Apache-Coyote/1.1
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1    
Location: http://localhost/semduration_old.jsp
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 0

实现目标的一种方法是允许客户端使用javascript“重定向”自己:

<% 
    if(condition)
    {   
%>
     <script>
          alert(" we are going to some other page" );
          window.location = 'semduration_old.jsp';
     </script> 
<%
       }
%>

答案 1 :(得分:2)

您还可以创建另一个消息和重定向的jsp页面。

<% 
 String msg = request.getParameter("msg");//means you have to send the message as a parameter
 String location = request.getParameter("location");
%>
<script>
      alert("<%= msg %>");//alert the message
      //you can also display the message using a mark up on the page and use setTimeOut()
      window.location = "<%= location %>";//then redirect
</script>

答案 2 :(得分:1)

可能会对你有帮助。

<% 
   if(condition)
    { %>
    <script type="text/javascript">
         alert('redirecting');
    </script>
        // alert here. before redirecting other page.
        // now redirect here as fallow.
    <%     response.sendRedirect("sem-duration_old.jsp?current_session");

       }
 %>

我没试过。但这可能不是最佳解决方案。你试过unload功能吗?