forward和sendRedirect的简单比较
(1)RequestDispatcher.forward(),在服务器端起作用。但使用forward()时,Servlet引擎传递Http请求从当前的Servlet或jsp到另外一个Servlet、jsp或者普通的HTML文件。也就是说,当form被提交至A.jsp时,在A.jsp处用到forward()重定向至B.jsp,此时form提交的所有信息在B.jsp都可以获得,参数自动传递。forward()无法重定向至有frame的jsp文件,但可以重定向至有frame的HTML文件,同时forward()无法在后面带参数传递,比如:servlet?username=gf 是不行的。可以在程序内通过response.setAttribute("username",name)传至下一个页面。注意:forward后浏览器地址栏中的URL不变。
(2)response.sendRedirect(),在用户的浏览器端工作。sendRedirect()可以带参数传递,比如:servlet?username=gf 这是允许的。同时它可以重定向至不同的主机上并且在浏览器地址栏上会出现重定向的URL。sendRedirect()可以重定向至有frame的jsp文件。