2010-06-11 62 views
0

我從過去的4個月一直在Oracle iStore中工作,我一直在管理沒有任何IDE的應用程序記事本上的瑣事只是因爲應用程序設計不佳而沒有IDE可以支持它)。jsp/Servlet API中有沒有特定的方法可以告訴你哪個頁面的請求被重定向

由於編碼是在簡單的記事本文件上完成的,因此很難找出應用程序中的錯誤。我面臨一個問題,我不知道哪個jsp頁面將控件重定向到哪個jsp頁面。例如,有兩個jsp頁面A.jsp和其他B.jsp。現在瀏覽器正在顯示A.jsp。當用戶點擊提交按鈕(在A.jsp上提供)時,表單提交併將控件重定向到B.jsp。

現在我的問題是,我知道我來了B.jsp,但是,我不知道A.jsp是將控件重定向到B.jsp。 Servlet API中是否有一個方法可以告訴哪個jsp將控件重定向到B.jsp?

回答

0

use request.getHeader(「Referer」);

1

一個簡單的方法是抓住(拼寫錯誤)HTTP referer header。你可以得到它在Servlet如下:

String referrer = request.getHeader("referer"); 

並在JSP如下:

${header.referer} 

但是應該認識到,這是一個客戶端控制值,可以更改/欺騙/黑客攻擊到完全不同的甚至是被刪除的東西。

如果你想要一個更可靠的方法,那麼你真的需要爲請求添加一個額外的參數。在普通的香草鏈接中,您可以將其設置爲查詢字符串。

<a href="b.jsp?from=a.jsp">go to b.jsp</a> 

或作爲形式的隱藏輸入元素:

<form action="b.jsp" method="post"> 
    <input type="hidden" name="from" value="a.jsp"> 
    ... 

無論哪種方式,你可以在Servlet中得到如下:

String from = request.getParameter("from"); 

或在JSP如下:

${param.from} 
相關問題