使用Java技术在Cocoon中实现商业逻辑(6) <sendmail:from>MY_FROM_ADDRESS</sendmail:from> <sendmail:to><xsp:expr>emailAddr</xsp:expr></sendmail:to> <sendmail:subject>Cocoon Search Results</sendmail:subject> <sendmail:body><xsp:expr>emailBody</xsp:expr></sendmail:body> </sendmail:send-mail> } </xsp:logic> </content> </xsp:page> 来自sendmail逻辑单的几个标签让我们拥有了发送EMAIL的能力。在这个例子中,我们将查询结果 的每一行相加赋值给emailBody变量做为邮件的正文。当用户通过request参数提供一个EMAIL地址, 我们就可以发送EMAIL了。当然这需要您提前设定好SMTP服务器和FROM地址。 Cocoon知道根据sendmail逻辑单来处理在sendmail名称空间里的标签,因为这个名称空间已经 在<xsp:page>标签中已经声明。查看示例中的声明,你会看到xsp-request这个名称空间。 xsp-request逻辑单提供了Request常用方法的封装。虽然在XSP中直接访问request对象和 使用xsp-request逻辑单没有什么功能上的区别,但是,理论上使用logicsheet的标签比直 接的JAVA代码更优美。 在运行这个例子之前,你必须要先在cocoon.xconf文件中设置sendmail逻辑单,Cocoon的配置 文件都在Web application 的 WEB-INF目录下。用你熟悉的编辑器打开cocoon.xconf文件, 找到<target-language name="java">标签。在这个块内,你会发现所有其它逻辑单的定义。 在最后一个逻辑单(SOAP逻辑单)后加入下面的内容: <builtin-logicsheet> <parameter name="prefix" value="mail"/> <parameter name="uri" value="http://apache.org/cocoon/sendmail/1.0"/> <parameter name="href" value="resource://org/apache/cocoon/components/language/markup/xsp/java/sendmail.xsl"/> </builtin-logicsheet> 这个定义将http://apache.org.cocoon/sendmail/1.0名称空间和已经包括在Cocoon JAR中 的sendmail.xsl样式表联合起来。 要使用sendmail逻辑单的功能,Cocoon必须要 mail.jar 和 activation.jar这两个JAR。 如果您使用的Server是Tomcat4.x的话,那么它们位于$CATALINA_HOME/common/lib。 Actions Action功能很强大,你可以将它放到管道的任何地方。Action可以认为是小的自包含的机器, 它获取某些输入数据,做一些处理,然后返回HashMap对象。不同于Cocoon中的Generators, Transformers, Serializers组件,Action不对实际的XML内容做任何事情,它主要在管道中 实现一些逻辑。 学习Action包括要对管道参数做些了解,有时管道的组件必须交流数据。当然,XML内容会通 过SAX事件传递;但是,我们所说的是管道组件本身的功能需要的值。 管道参数有两种:input 和 output。Input参数是由紧跟在组件声明后面的一个或者多个 <map:parameter>标签来定义的。它们为组件提供一个或者多个值来影响其操作。