2011-01-09 39 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