2013-12-12 67 views
-1

我必須檢查用戶是否正在使用移動設備。如何從另一個類調用servlet中的方法

我可以用這個代碼

String ua=request.getHeader("User-Agent"); 

這麼做是爲了使用request我需要一個servlet(是吧?),所以我創建了一個,我把這些代碼裏面doPost/doGet方法。

由於這些是void方法,我如何獲得返回值以瞭解用戶是否正在使用移動設備?

也許我的做法不對。

我的目標是從該servlet(假設我只需要一個servlet)獲取一個值,該值告訴我用戶是否正在使用移動設備。

回答

0

一種方法是在doPost()doGet()使用會話並保持String ua會話

無論是

String ua=request.getHeader("User-Agent"); 
Httpsession session=request.getSession(); 
session.setAttribute("ua",ua); 

現在你哪裏有你想檢查只是做

session.getAttribute("ua"); 

只要session存在,該值將存在。

+0

要使用'請求'我應該使用一個servlet。然後問題是如何從我的jsp頁面調用該servlet。 – MDP

+0

@MatteoDepasquali看到有什麼方法可以調用servlet的形式,如action =「servlet」或jquery按鈕事件或ajax。它真的取決於您的要求。 – SpringLearner

+0

是的,我知道,但是我不能從表單的'action'中調用我的servlet。我的servlet只是檢查用戶代理,它不會在屏幕上打印任何內容。無論如何生病調查的方式來呼籲它,謝謝你的男人:) – MDP

0

如何獲取返回值以知道用戶是否正在使用移動設備?

寫上PrintWriter.write方法,它會顯示在答覆中的文本,

if(isMobileAgent()){ 
response.getWriter().write("User uses a mobile devices"); 
} 
0

通常,其他API或方法是從servlet的doPost或doGet方法調用的。它們的作用類似於傳入請求的入口點。因此,您可以解析請求並根據您的應用程序需求提取必要的值,並將其傳遞給處理API。

對於返回值,我假設你正在談論響應。您可以在響應對象中設置值。

1

如果您有多個servlet,並且每個請求都需要它,請考慮創建一個過濾器而不是servlet。你可以在哪裏做String ua=request.getHeader("User-Agent");並將其設置爲請求參數或會話參數。這也可能有助於您在遇到問題時可能需要HTTP信封中的其他標題信息。

對於一個servlet,你必須在響應中返回它,或者將它設置爲請求/會話參數。

0

我假設問題是這樣的,您需要知道JSP頁面中的User Agent值? 那麼,請求對象可以直接在你的頁面中使用。 在類似

的腳本中
<% String ua=request.getHeader("User-Agent") %> 

可以完成這項工作。另外,如果你想要java層的請求對象,在你的代碼流的深處,那麼它不是你需要使用的servlet,而是將請求對象作爲方法參數或全局可訪問成員持久化。

相關問題