2015-05-09 49 views
0

我有一个jsp页面,其表单在提交时转到Servlet将表单数据插入到数据库中。
使用Servlets重定向页面Java

当数据被插入到数据库中,我试图让浏览器回到我的jsp页面,并显示一个JavaScript警告说,数据插入成功,我的代码如下:

RequestDispatcher rd; 
    if(dao.insertClient(client)) { 
     rd = getServletContext().getRequestDispatcher("/pages/clients.jsp"); 
     rd.include(request, response); 
     out.print(
      "<script type=\"text/javascript\">" 
       + "alert("Client inserted successfully!");"+ 
      "</script>" 
     );   
    } 

这段代码是做正是我想要的,但这种方法的getRequestDispatcher()重定向页面到servlet本身,网址是像http://localhost:8080/Servlet,这样我不能访问网页的任何链接实习生,因为到其他页面的链接显然不在servlet上下文中,并且glassfi sh返回404错误。

而不是使用的getRequestDispatcher(),我使用response.sendRedirect是()试过了,这样我可以把数据插入到数据库并访问实习生环节,但JavaScript警告不显示了

有人建议我如何将页面重定向到clients.jsp并显示javascript警报?

谢谢!

+1

为什么不使用Ajax将请求发送到您的servlet?通过这种方式,您不必离开jsp – underdog

+0

为什么不把脚本放入会话中,并且在重新指定之后,您可以从中读取脚本? –

+0

你可以通过我的基本语法将脚本放入会话吗?我GOOGLE了,但没有找到它。 – emersondms

回答

0

你可以尝试另一种方法:从servlet的

设置参数如下:

RequestDispatcher rd; 
if(dao.insertClient(client)) { 
    rd = getServletContext().getRequestDispatcher("/pages/clients.jsp"); 
    request.setAttribute("isSuccess", "success"); 
    rd.include(request, response); 
} 

访问JSP中的参数,以检查是否显示警报或没有。

<% 
    String result = request.getParameter("isSucess"); 
    if("success".equals(result)){ 
%> 
    <script type="text/javascript" > 
     alert("Client inserted successfully!"); 
    </script> 
<% 
    } 
%> 
+0

实际上面的代码显示了警报,但问题是getRequestDispatcher将页面重定向到servlet而不是jsp,如果使用其他方法response.sendRedirect(),它将重定向到jsp,我可以访问内部链接,但警报没有显示,谢谢! – emersondms

+0

@emersondms:看看这个http://stackoverflow.com/questions/24176684/how-to-show-alert-in-a-jsp-from-a-servlet-and-then-redirect-to-another -jsp –