if(...){
out.println("<Script language='javascript'>alert('注册成功')</Script>");//语句1
response.sendRedirect("registerSuccess.jsp");//语句2
}else{
out.println("注册失败<br/><br/>");
out.println("三秒后将返回...");
response.setHeader("refresh", "3;url=readerregister.jsp");

}
一个jsp文件提交到servlet中处理表单若注册成功,我想让它提示注册成功(js实现)。。但是现在为什么语句1没有执行到???如果我吧语句2去掉后。。则语句1就能执行到??

解决方案 »

  1.   

     out.println("<Script language='javascript'>alert('注册成功')</Script>");//语句1
    你输出到那个页面去了?确认输出到了某个页面去?
      

  2.   

    因为语句1是在客户端执行的,语句2是在服务器段执行的。
    如果语句2在的话,那这个就不等到客户端执行那步就已经跳转了,所以语句1中的javascript实际没有被执行。
      

  3.   

    sendRedirect是重定向,不是没有执行到,是没看到。
      

  4.   

    我们一般都用JSP做显示,用servlet做业务逻辑的.
    就是现在servlet里把数据处理完后,转到一个jsp页面来显示它.
      

  5.   

    2楼的意思是把语句1写到registerSuccess.jsp中?
    registerSuccess.jsp它是一个用户登录后和用户注册后显示的页面你说这句话怎么加入呢?
      

  6.   

    我现在就是想执行到那句javascript的代码。。该怎么解决谁给我支个招??
      

  7.   

     response.sendRedirect()之前的没有实质输出将被忽略!
    要不你把脚本写在JSP页面里
      

  8.   

    JavaScript 脚本直接写 registerSuccess.jsp 里。
    原因如下:
    当你 out.println("<Script language='javascript'>alert('注册成功')</Script>"); 时输出的文本会先存储在缓存中,当缓存满了后文本会一起发给客户端浏览器,当调用 response.sendRedirect() 时,此方法会先清空缓存,在向客户端发送重定向的302响应,你的脚本代码根本不会被发送到客户端浏览器,当然不会被执行。
      

  9.   

    输出后强制把内容输出一下out.flush();用redirect重定向后页面代码可能还没执行
      

  10.   

    out.println("<Script language='javascript'>alert('注册成功') </Script>");//语句1
                response.sendRedirect("registerSuccess.jsp");//语句2上面的两句该成下面的一句就可以了。out.println
    ("<script language='javascript'>alert('注册成功');window.location="registerSuccess.jsp"</script>");//语句1
             
      

  11.   

    不是没执行,而是当调用 sendRedirect() 方法时会抛出 IllegalStateException 异常,原因是当重定向时响应已经被提交了。
      

  12.   


    问题解决。。
    一是按11楼的方法。。2是把script脚本写在了jsp文件里就行了