ScA*_*er2 3 java jsp jstl web-applications
我正在使用以下代码从我的jsp查询数据库,但我想知道更多关于幕后发生的事情.
这是我的两个主要问题.
标签是直接访问ResultSet,还是查询结果存储在内存中的数据结构中?
什么时候连接关闭?
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:query var="query" dataSource="${ds}" sql="${listQuery}"></sql:query>
<c:forEach var="row" items="${query.rows}" begin="0">
${row.data }
${row.more_data }
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
注意:我一直反对在jsp中运行查询,但我的结果集太大,无法在我的动作和我的jsp之间存储在内存中.使用此标记库看起来是最简单的解决方案.
基于org.apache.taglibs.standard.tag.common.sql.QueryTagSupport的源的观察
taglib遍历ResultSet并将所有数据放入数组,映射和列表中.因此,在开始循环之前,所有内容都会加载到内存中.
遇到查询开始标记时打开连接(doStartTag方法).遇到查询结束标记时检索结果(doEndTag方法).连接在doFinally方法中关闭.
简而言之,这绝对是可怕的.
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |