熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Javascript >> 正文

jsp response.sendRedirect不跳轉的原因分析及解決

2013-11-23 17:53:15  來源: Javascript 

  最近做項目時遇到一個問題明明加了responsesendRedirect() 系統也執行了但是它就是不跳轉;最後在網上找到原因如下:

首先我們要明白用responsesendRedirect做轉向的原理它其實是向浏覽器發送一個特殊的Header然後由浏覽器來做轉向轉到指定的頁面所以用sendRedirect時浏覽器的地址欄上可以看到地址的變化
用<jsp:forward page=""/>則不同它是直接在server做的浏覽器並不知道也不和浏覽器打交道這從浏覽器的地址並不變化可以看出

所以使用responsesendRedirect時就需要注意以下兩點

在使用responsesendRedirect時前面不能有HTML輸出

這 並不是絕對的不能有HTML輸出其實是指不能有HTML被送到了浏覽器事實上現在的server都有cache機制一般在K(我是說JSP  SERVER)這就意味著除非你關閉了cache或者你使用了outflush()強制刷新那麼在使用sendRedirect之前有少量的 HTML輸出也是允許的
如果報錯說“一些信息已經被submitted”(原文忘了)那麼你就要注意看了前面是不是有過多的HTML輸出了

在responsesendRedirect之後應該緊跟一句return;

我們已經知道responsesendRedirect是通過浏覽器來做轉向的所以只有在頁面處理完成後才會有實際的動作既然你已經要做轉向了那麼後的輸出還有什麼意義呢?而且有可能會因為後面的輸出導致轉向失敗

<%@ include file="/page/checkLoginjsp" %>這個放在要驗證的頁面的第一句

checkLoginjsp 內容是通過看session 裡面有沒登陸用戶的內容來判斷是否登錄 如果沒有那麼跳轉到登陸頁面

復制代碼 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF" pageEncoding="UTF"%>
<%
if (sessiongetAttribute("userinfo") == null) {

responsesendRedirect(url);

return;
}
%>  
From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25284.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.