servlet中的JavaScript用于重定向页面。这是一个好习惯吗?

时间:2013-02-08 04:39:01

标签: javascript jsp servlets redirect request

我有一个普遍的问题。我见过人们在Servlet或提交页面中编写javascript以将请求重定向到另一个页面。喜欢

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SomeServlet extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {  
out.println( "<script> location.replace('myPage.jsp'); </script>" );
  }
}

我的问题是,这样写是不是一个好习惯(想想不是)?如果这不是一个好习惯,这有什么不利之处呢?

2 个答案:

答案 0 :(得分:3)

这是非常糟糕的做法,因为:

  • 客户端(浏览器)需要在重定向完成之前下载整个页面
  • 这不适用于关闭Javascript的浏览器
  • 对此不确定,但搜索引擎可能会遇到此技术的问题

要发送重定向,最好使用response.sendRedirect(...)。这是一个HTTP重定向(状态代码3xx),它不需要任何Javascript,并且肯定可以在所有浏览器中使用。

答案 1 :(得分:1)

它不是一种专业的编码方式。

在JSP中的Servlet中,您可以在最终HTML页面中放置您要放置的任何内容(作为要在响应中发送的字符串) ServletJSP。  当然对于servlet来说,它只是一个String。

在此字符串中,您可以放置​​HTML,Javascript或任何您想要的内容,它可以在导航器中使用,但在Java级别,它只是一个字符串。

即使我们有办法解决这个问题,但在大多数情况下都要尽量避免。

如果我们遇到客户端调试等问题,新开发人员会更加复杂地查看添加此脚本的确切位置(如果他们不知道我们可以在servlet中包含脚本作为字符串)