在Servlet中如何实现页面的延迟跳转?

hnalenx 2010-09-22 12:07:25
我在写一个处理用户登录的servlet,本想当用户登录成功之后先向客户端输出“页面跳转正在进入后台管理页面,请等待......!”, 然后再跳转到后台管理页面,若用户名或密码错误则先向客户端输出“用户名或密码错误,正在返回登录界面......!”然后再然页面跳转至登录页面。我设想的代码如下,可是它是直接跳转页面而显示提示信息,各位大虾敬请指导!
 
if(rs.next()){
out.println("页面正在跳转进入后台管理页面,请等待....!");
session.setAttribute("rank",type);
session.setAttribute("userName",user);
response.sendRedirect("/LibraryMS/admin/main.html");
}
else{
out.println("<b><font color=\"#FF0000\">用户名或密码错误,页面正在跳转返回......!</font></b>");
response.sendRedirect("/LibraryMS/admin/login.html");
}
...全文
1065 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰山6 2010-09-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kaida_7 的回复:]
如果你用jsp的话,可以先跳到一个jsp页面,先显示:用户名或密码错误,正在返回登录界面。。。。。。
然后在这个页面上用一小段JavaScript让它自动跳转到你需要的页面。。。
[/Quote]
kaida_7 2010-09-22
  • 打赏
  • 举报
回复
如果你用jsp的话,可以先跳到一个jsp页面,先显示:用户名或密码错误,正在返回登录界面。。。。。。
然后在这个页面上用一小段JavaScript让它自动跳转到你需要的页面。。。
lizhengguo992003 2010-09-22
  • 打赏
  • 举报
回复
用response.setHeader()

例如:response.setHeader("refresh","2;URL=bookservlet")

跳转时间为两秒之后···
WENJINGWEN 2010-09-22
  • 打赏
  • 举报
回复
在跳转之前加一句:Thread.sleep(1000);//睡眠1秒
看看行不行
实现jsp页面间的跳转 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {   response.setContentType("text/html; charset=gb2312");   ServletContext sc = getServletContext();   RequestDispatcher rd = null;   rd = sc.getRequestDispatcher("/index.jsp"); //定向的页面   rd.forward(request, response); }   通常在servlet使用,不在jsp使用。    2.response.sendRedirect()   是在用户的浏览器端工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.   重定向后在浏览器地址栏上会出现重定向页面的URL   例:在servlet重定向 public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {   response.setContentType("text/html; charset=gb2312");   response.sendRedirect("/index.jsp"); }   由于response是jsp页面的隐含对象,故在jsp页面可以用response.sendRedirect()直接实现重定位。   注意:    (1) 使用response.sendRedirect时,前面不能有HTML输出   这并不是绝对的,不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制,一般在8K(我是说 JSP SERVER),这就意味着,除非你关闭了cache,或者你使用了out.flush()强制刷新,那么在使用sendRedirect之前,有少量的HTML输出也是允许的。    (2) response.sendRedirect之后,应该紧跟一句return;   我们已经知道response.sendRedirect是通过浏览器来做转向的,所以只有在页面处理完成后,才会有实际的动作。既然你已经要做转向了,那么后的输出还有什么意义呢?而且有可能会因为后面的输出导致转向失败。   比较:    (1) Dispatcher.forward()是容器控制权的转向,在客户端浏览器地址栏不会显示出转向后的地址;    (2) response.sendRedirect()则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏可以看到跳转后的链接地址。   前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法.   注:在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。    3.   它的底层部分是由RequestDispatcher来实现的,因此它带有RequestDispatcher.forward()方法的印记。   如果在之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。   另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交    4.修改HTTP header的Location属性来重定向   通过设置直接修改地址栏来实现页面的重定向。    jsp文件代码如下:    5.JSP实现在某页面停留若干秒后,自动重定向到另一页面   在html文件,下面的代码:

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧