使用Java技术在Cocoon中实现商业逻辑(5) 连接池。上面程序中使用的连接池叫做"resources" ,当然你可以使用你所喜欢的定义。 注意,我们这里使用<resources> 这个标签将结果集包了起来而且每行的数据都放到<resource>标 签里。这样我们就可以很容易的编写样式表来将XML转换成其它浏览器可以理解的格式。我们没有 为表的列定义任何标签,通过使用<esql:get-columns/>,Cocoon会将每一列的值放到自动以相应 的列名定义的标签里面。 现在,让我注意一下例子中的SQL查询语句,正如你所看到的,这条SQL是动态生成的。当用户 通过GETs 或者 POSTs提交数据到这个XSP后,在XSP的顶部,我们将request参数的值赋给 了keyword变量,然后根据keyword组成SQL语句。 既然这个例子很简单,让我们把它变复杂一点,加入Email功能,可以在用户提供Email地址后, 将查询结果发送给用户。 XSP示例如下: <?xml version="1.0"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2" xmlns:sendmail="http://apache.org/cocoon/sendmail/1.0" xmlns:xsp-request="http://apache.org/xsp/request/2.0" > <content> <xsp:logic> String keyword = <xsp-request:get-parameter name="value"/>; String emailAddr = <xsp-request:get-parameter name="email"/>; String emailBody = ""; </xsp:logic> <title>Search results</title> <esql:connection> <esql:pool>resources</esql:pool> <esql:execute-query> <esql:query> select * from Resources where ResourceName like '%<xsp:expr>keyword</xsp:expr>%' order by ResourceName </esql:query> <esql:results> <resources> <esql:row-results> <resource> <xsp:logic> emailBody += <esql:get-string column="ResourceName"/>; emailBody += ", " + <esql:get-string column="ResourceURL"/> + "\n"; </xsp:logic> <esql:get-columns/> </resource> </esql:row-results> </resources> </esql:results> </esql:execute-query> </esql:connection> <xsp:logic> if (emailAddr != null) { <sendmail:send-mail> <sendmail:charset>ISO-8859-1</sendmail:charset> <sendmail:smtphost>MY_SMTP_HOST</sendmail:smtphost>