首先,我需要说清楚 - 这是一个学术项目。我也觉得我应该说我知道这是做我需要做的事情的错误方式,但是,这是我必须这样做的方式,所以请坚持回答问题,如果可能而不是替代方案。
我必须在JSTL中或通过servlet显示SQL查询的结果,具体取决于浏览器是否为手机。我已经管理了JSTL部分,并确定它是否是手机,我可以转发到servlet。
问题是,我需要能够从servlet访问结果变量。从下一个JSTL页面访问它很容易,因为我可以将范围设置为application,但是我不确定如何从servlet访问。
我试过了:
request.getParameter("viewResult");
但这只返回一个字符串,而我相信我需要一个
javax.servlet.jsp.jstl.sql.Result
对象。
有人知道在转发时将对象从JSTL JSP页面传递到servlet的方法吗?
答案 0 :(得分:2)
HttpServletRequest#getParameter()
返回HTTP请求参数,这些参数隐式始终为Strings
,因为它只是在HTTP规范中指定的。
您更愿意将其设置为请求属性。您可以使用sql:query
的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自己的话)。您应该在servlet的doGet()
或doPost()
方法中获取数据库结果(用于预处理resp后处理)。