我有一个普遍的问题。我见过人们在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>" );
}
}
我的问题是,这样写是不是一个好习惯(想想不是)?如果这不是一个好习惯,这有什么不利之处呢?
答案 0 :(得分:3)
这是非常糟糕的做法,因为:
要发送重定向,最好使用response.sendRedirect(...)
。这是一个HTTP重定向(状态代码3xx),它不需要任何Javascript,并且肯定可以在所有浏览器中使用。
答案 1 :(得分:1)
它不是一种专业的编码方式。
在JSP中的Servlet
中,您可以在最终HTML
页面中放置您要放置的任何内容(作为要在响应中发送的字符串) Servlet
或JSP
。
当然对于servlet来说,它只是一个String。
在此字符串中,您可以放置HTML,Javascript
或任何您想要的内容,它可以在导航器中使用,但在Java级别,它只是一个字符串。
即使我们有办法解决这个问题,但在大多数情况下都要尽量避免。
如果我们遇到客户端调试等问题,新开发人员会更加复杂地查看添加此脚本的确切位置(如果他们不知道我们可以在servlet
中包含脚本作为字符串)