4

我有一个普遍的问题。我见过有人在 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>" );
  }
}

我的问题是,这样写是个好习惯吗(认为不是)?如果这不是一个好习惯,这有什么缺点?

4

2 回答 2

3

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

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

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

于 2013-02-08T06:21:37.773 回答
1

它不是专业的编码方式。

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

在这个字符串中,您可以放置​​ HTMLJavascript或任何您想要的内容,它将在导航器中工作,但在 Java 级别它只是一个字符串。

尽管我们有办法做到这一点,但在大多数情况下尽量避免。

如果我们这样做会出现诸如客户端调试之类的问题,并且对于新开发人员来说,要准确查看您在何处添加此脚本会变得更加复杂(如果他们不知道我们可以将脚本servlet作为字符串包含在内)

于 2013-02-08T06:56:35.107 回答