2011-01-09 41 views
1

首先,我需要說清楚 - 這是一個學術項目。我也覺得我應該說,我知道這是做我需要做的事情的錯誤方式,但是,這是我必須這樣做的方式,所以如果可能,請堅持回答問題而不是替代方案。將JSTL SQL結果轉發給Servlet

我必須在JSTL中或通過servlet顯示SQL查詢的結果,具體取決於瀏覽器是否是電話。我管理了JSTL部分,並確定它是否是電話,並且我可以轉發到servlet。

問題是,我需要能夠從servlet訪問結果變量。從下一個JSTL頁面訪問它很容易,因爲我可以將範圍設置爲應用程序,但是我不確定如何從servlet獲取訪問權限。

我已經試過:

request.getParameter("viewResult"); 

但這只是返回一個字符串,而我相信我需要一個

javax.servlet.jsp.jstl.sql.Result 

對象。

有沒有人知道一種方法來將一個對象從JSTL JSP頁面轉發到servlet時轉發?

回答

2

HttpServletRequest#getParameter()返回的HTTP請求參數總是隱含地總是Strings,因爲這只是在HTTP規範中指定的。

您寧願將其設置爲請求屬性。您可以使用的var屬性來完成此操作。

<sql:query dataSource="${dataSource}" var="result" scope="request"> 
    SELECT * FROM foo 
</sql:query> 
<jsp:include page="/servletURL" /> 

這樣它會在servlet可用如下:

Result result = (Result) request.getAttribute("result"); 

不用說,這確實不是最好的做法。這些標籤專爲快速原型而設計,而不適用於真實世界的應用(Sun/Oracle自己的話)。你應該在獲得DB結果的doGet()doPost()方法的servlet(用於預處理和後處理)。

+0

完美地工作,謝謝。 – Jim 2011-01-09 16:15:58