将JSTL SQL结果转发到Servlet

时间:2011-01-09 15:58:54

标签: mysql jsp servlets jstl

首先,我需要说清楚 - 这是一个学术项目。我也觉得我应该说我知道这是做我需要做的事情的错误方式,但是,这是我必须这样做的方式,所以请坚持回答问题,如果可能而不是替代方案。

我必须在JSTL中或通过servlet显示SQL查询的结果,具体取决于浏览器是否为手机。我已经管理了JSTL部分,并确定它是否是手机,我可以转发到servlet。

问题是,我需要能够从servlet访问结果变量。从下一个JSTL页面访问它很容易,因为我可以将范围设置为application,但是我不确定如何从servlet访问。

我试过了:

request.getParameter("viewResult");

但这只返回一个字符串,而我相信我需要一个

javax.servlet.jsp.jstl.sql.Result

对象。

有人知道在转发时将对象从JSTL JSP页面传递到servlet的方法吗?

1 个答案:

答案 0 :(得分:2)

HttpServletRequest#getParameter()返回HTTP请求参数,这些参数隐式始终为Strings,因为它只是在HTTP规范中指定的。

您更愿意将其设置为请求属性。您可以使用sql:queryvar属性执行此操作。

<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自己的话)。您应该在servlet的doGet()doPost()方法中获取数据库结果(用于预处理resp后处理)。