使用Java技术在Cocoon中实现商业逻辑(4) 表结构如下: use test; create table Resources ( ResourceURL varchar(255) not null, ResourceName varchar(64) not null ); 插入一些资源数据: insert into Resources values ('http://xml.apache.org/cocoon', 'Cocoon Home Page'); insert into Resources values ('http://www.galatea.com/FLASHguides/cocoon-tips-2.xml', 'Cocoon 2.0 Tips and Tricks'); 表建好后并且Cocoon也正确的配置过后,我们就可以写下面这个XSP例子: <?xml version="1.0"?> <xsp:page language="java" xmlns:xsp="http://apache.org/xsp" xmlns:esql="http://apache.org/cocoon/SQL/v2"> <xsp:logic> String keyWord = request.getParameter("value"); </xsp:logic> <content> <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>%' </esql:query> <esql:results> <resources> <esql:row-results> <resource> <esql:get-columns/> </resource> </esql:row-results> </ resources > </esql:results> </esql:execute-query> </esql:connection> </content> </xsp:page> 注意在<xsp:page>标签中声明的名称空间(namespace)。任何时候,在XSP中使用逻辑单的时候, 必须要声明其名称空间(namespace)。你可以在Cocoon webapp路径下的WEB-INF/cocoon.xconf找 到逻辑单的定义。XSP 名称空间的声明就是要说明这是个XSP逻辑单。 实际上,所有的XSP至少要实现XSP逻辑单。在XSP被转换成Java源文件之前,其中的逻辑单 (实际上仅是XSL文件)会先做XSLT处理转换成Java代码。因此,在上面的例子中的所有的 ESQL标签都会转换成了我们所熟悉的JDBC代码。但是并不是所有的标签都可以变成JDBC代码, 注意上面示例中的<esql:pool>块,它涉及到了在WEB-INF/cocoon.xconf文件中定义的数据库