特征
茧3由3层组成。每个层都打包为单独的模块:
此外,还有更多可选模块:
Cocoon管道
此模块没有任何第三方依赖项。目前,它提供了三种管道实现:
它提供了一组基本的SAX组件:
- 文件生成器
- XSLT变压器
- XML序列化程序
- 包括变压器
- 清洁变压器
- 字符流
- 字符串生成器
下面是一个示例:
管道<SAXPipelineComponent>Pipeline=new NonCachingPipeline<SAXPipelineComponent>();pipeline.addComponent(新的XMLGenerator(“<x></x>”));pipeline.addComponent(新XSLTTransformer(this.getClass().getResource(“/test1.xslt”));pipeline.addComponent(新的XMLSerializer());ByteArrayOutputStream baos=新的ByteArray输出流();管道设置(baos);pipeline.execute();
Cocoon网站地图
站点地图将请求(不一定是servlet请求!)与管道连接起来。下面是一个示例:
<?xml版本=“1.0”编码=“UTF-8”?><map:sitemap xmlns:map=“http://apache.org/coocoon/sitemap”xmlns:servlet=“http://apache.org/coocoon/servlet"><map:pipelines><地图:管道><map:match pattern=“screen/video”><map:generate src=“video.xml”type=“stringtemplate”/><map:serialize type=“xml”/></map:match></map:pipeline(管道)></map:pipelines></map:sitemap>
茧Servlet
该模块提供了一个servlet,用于将HTTP请求与站点地图连接起来。它在Servlet-Service框架。Servlet-Service框架支持卫星间通信并提供多形性特征(例如,一个站点地图可以扩展另一个站点,从而实现后备解决方案)。
其他模块
附加模块茧状模板,蚕茧控制者、和蚕茧休息简化RESTful Web服务的开发。下面是调用控制器的站点地图:
<?xml版本=“1.0”编码=“UTF-8”?><map:sitemap xmlns:map=“http://apache.org/coocoon/sitemap”xmlns:servlet=“http://apache.org/coocoon/servlet”xmlns:controller=“http://apache.org/coocoon/controller"><map:pipelines><地图:管道><map:match pattern=“videos/{id}”><controller:呼叫控制器=“rest-controller”select=“VideoController”><map:parameter name=“id”value=“{map:id}”/></控制器:调用></map:match></map:pipeline(管道)></map:pipelines></map:sitemap>
这里是控制器:
@REST控制器公共类VideoController实现Get{@站点地图参数私有字符串id;@RequestParameter(请求参数)私有字符串详细信息;public RestResponse doGet()引发异常{Map<String,Object>data=新HashMap<String,对象>();data.put(“视频”,新视频(this.id));data.put(“详细信息”,this.details);return new Page(“servlet:/screen/video”,数据);}}
当执行这个带注释的控制器类时,sitemap参数身份证件和请求参数细节传递给控制器。
控制器实现获取接口,使其对GET请求作出反应。然后控制器调用管道servlet:/screen/video(请参阅上面一节中的网站地图)字符串模板渲染视频对象转换为XML。