首先我們要明白用response.sendRedirect做轉向的原理,它其實是向瀏覽器發送一個特殊的Header, 然后由瀏覽器來做轉向,轉到指定的頁面,所以用sendRedirect時,瀏覽器的地址欄上可以看到地址的變化。 用則不同,它是直接在server做的,瀏覽器并不知道,也不和瀏覽器打交道, 這從瀏覽器的地址并不變化可以看出。 所以使用response.sendRedirect時就需要注意以下兩點: 1,在使用response.sendRedirect時,前面不能有HTML輸出。 這并不是絕對的,不能有HTML輸出其實是指不能有HTML被送到了瀏覽器。事實上現在的server都有cache機制 ,一般在8K(我是說JSP SERVER),這就意味著,除非你關閉了cache, 或者你使用了out.flush()強制刷新,那么在使用sendRedirect之前, 有少量的 HTML輸出也是允許的。 如果報錯說,“一些信息已經被submitted”(原文忘了),那么,你就要注意看了,前面是不是有過多的HTML輸出了。 2,在response.sendRedirect之后,應該緊跟一句return; 我們已經知道response.sendRedirect是通過瀏覽器來做轉向的,所以只有在頁面處理完成后, 才會有實際的動作。既然你已經要做轉向了,那么后的輸出還有什么意義呢?而且有可能會因為后面的輸出導致轉向失敗。 |