2013-11-15 61 views
0

我試圖瞭解HttpServletRequest的是如何工作的:HttpServletRequest的工作原理

在演示應用程序,我有這樣的代碼在一個.class文件:

HttpServletRequest req = (HttpServletRequest) 
FacesContext.getCurrentInstance().getExternalContext().getRequest(); 
     String parameter = req.getHeader("PARAMETER"); 

這是一個JSF實現?它是否從會話中讀取參數?

如何在不使用JSF的情況下檢索相同的參數?

回答

0

是的,這個片段是JSF應用程序的一部分。

不,它不會從會話中讀取參數,因爲它會調用HttpServletRequest對象上的getHeader()。所以它讀取請求標題(如the javadoc of HttpServletRequest.getHeader()解釋)。

要檢索一個簡單的基於servlet的應用程序相同的標題,你會使用HttpServletRequest參數傳遞給每一個servlet的方法:

@Override 
public void doGet(HttpServletRequest request, HttpServletResponse response) { 
    String header = request.getHeader("PARAMETER"); 
    ... 
} 

它看起來像你不是在所有使用Servlet熟悉。閱讀介紹性教程,在深入代碼之前掌握基礎知識。

+0

確定您的答案在Java Servlet中有效,但如果我在java bean類中呢?我沒有這個請求和響應對象?非常感謝你,真的 – user2010955

+0

然後通過它作爲參數。也可以將它保存在一個ThreadLocal變量中,但我不會這樣做。但最好的辦法是設計你的應用程序,以便只有servlet處理請求:它從請求包含的內容構建常規的,類型安全的Java對象,並將這些對象傳遞給應用程序的其他層。現代的MVC框架爲你做到了,所以你甚至不需要在任何地方處理這個請求。 –