JSF-Facelet
RichFaces 简介
RichFaces 简介将类似桌面的特性添加到浏览器应用程序中Joe Sam Shirah, 负责人和开发人员, conceptGO简介:如今,客户希望并且已经开始期望基于浏览器的应用程序提供桌面特性。
RichFaces 是用于Java™Server Faces(JSF)的一种新的用户界面组件套件。
除了其他优点外,RichFaces 还提供内置的JavaScript 和Ajax 功能,从而满足客户期望。
Joe Sam Shirah 根据最近的现场项目经验,将一些新的工具添加到您的工具箱中,包括通过Facelet 使用RichFaces 的常见设置,以及一些特定的组件示例。
本文的标签:ajax, java_技术, jsf_(javaserver_faces), jsp_(javaserver_pages)_technology, richfaces, 应用开发, 用户界面, 简介标记本文!发布日期: 2008 年 5 月06 日级别:中级最近,一家客户委托我们实现一个项目,我认为这个项目非常棒。
他们没有专职的开发人员,要求我们设计和开发他们的第一个生产应用程序,该应用程序包括一个服务器和一个浏览器客户机。
该应用程序将在他们的局域网和Internet 上运行,并且使用一个虚拟专用网(VPN)。
对于我来说,经历一个项目从设想到实现再到培训的整个过程并不鲜见,但还是很少有机会自主地确定项目的几乎每个方面。
这个项目的一个主要方面是,每个人都习惯于桌面应用程序。
如果在浏览器用户界面中包括类似的特性,他们也许不会特别注意到,但是如果没有这些特性,他们肯定会有很多抱怨。
例如,项目初始阶段的主页面将为动态查询收集选择标准。
有些输入区需要客户端操作,至少有一个输入区需要Ajax 功能。
最后,我选择了RichFaces 组件套,该组件套构建在Ajax4jsf(参见参考资料)之上,并与之合并。
选择组件本文的目的不是倡导某一个产品或组件套件,而是让您有足够的信息开始使用RichFaces,并且有足够的背景知识,以便在开发自己的RIA 或富Web 客户机时能作出比较。
美国研制出透明可拉伸的人造电子皮肤
美国研制出透明可拉伸的人造电子皮肤
刘丹
【期刊名称】《共产党员:下半月》
【年(卷),期】2011(000)011
【摘要】美国斯坦福大学女科学家鲍哲南对人造电子皮肤的研究再上一层楼,继高灵敏度和自我发电两大创新之后,她的研究团队又为这种超级皮肤增加了透明和可拉伸功能,为人造电子皮肤更接近人类皮肤赋予重要意义。
【总页数】1页(P51-51)
【作者】刘丹
【作者单位】不详
【正文语种】中文
【中图分类】G633.2
【相关文献】
1.美研制出透明可拉伸的人造电子皮肤 [J],
2.美国研制出透明可拉伸的人造电子皮肤 [J],
3.中科院苏州纳米所研制出人造仿生电子皮肤 [J], 苏州工业园区科技发展局
4.美国科学家研制出具有气体渗透性的超薄可拉伸的电子材料 [J], 武志星
5.美国华人女科学家使人造电子皮肤更接近人类 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。
facelets初级
Facelets 非常适合 JSF最后,专为 JSF 设计的视图技术!文档选项打印本页将此页作为电子邮件发送样例代码级别:初级Richard Hightower (mailto:rhightower@?subject=Facelets 非常适合 JSF), 开发人员, ArcMind Inc.2006 年 2 月 21 日试图把 JSF 和 JSP 结合起来就像试图要把脚硬塞进手套一样:可能做得到,但是只是更好的解决办法出现之前的一个权宜之计。
在这篇文章中,JSF 的热心支持者 Rick Hightower 介绍了关于Facelets 他最喜欢的内容:容易的 HTML 样式的模板化和可重用的复合组件。
由于最近在 Java™服务器外观(JSF)项目上工作,我很有幸第一次使用了 Facelets。
关于Facelets,我最喜欢的是它让我可以创建可重用的复合组件。
能够拿出一个页面(例如 JSP)并把它变成组件,对于我的 JSF 开发来说真是莫大的好处。
我的结论是什么?如果不用 Facelets,那么就无法得到能从 JSF 获得的最大收获。
JSF 和 Java 服务器页面技术之间的不匹配,是 JSF 开发中的一个严重问题。
问题是如何把 JSP 的动态内容集成到 JSF 基于组件的模型中。
JSP 非常重视生成动态内容输出,而 JSF 需要 JSP 来协调组件模型的构建。
因为这个任务超出了 JSP 原来的目的,所以产生了距离。
大多数 JSF 开发人员只是学会了一事一议地解决这类问题,但是这就像在锤子上放一个枕头,最终还会掉下来打伤脑袋。
Facelets 是更加全面的解决方案:专为 JSF 组件模型度身定制的模板化语言。
Facelets 有以下吸引人的特性:•模板化(像 Tiles)•复合组件•定制的逻辑标记•表达式语言•对设计师友好的页面开发•创建组件库这些特性比我想像的要更相关和统一。
在这篇文章中,我讨论前两个:模板化和复合组件。
seam自学总结
一,如何在Jboss中运行seam 实例1.软件:JBoss 5 ,seam2.2,ant1.7以上,jdk1.5以上2.配置jdk、ant环境变量3.在seam安装目录下找到build.properties,添加jboss.home D:\\jboss-5.0.1.GA\\jboss-5.0.1.GA,其中D:\\jboss-5.0.1.GA\\jboss-5.0.1.GA为Jboss的安装目录。
4.进入dos窗口,进入seam的具体实例目录中,执行ant deploy命令,则会发布到jboss 下的server-->default->deploy的目录下。
5.启动jboss,访问工程即可。
二.如何修改seam自带例子的数据库,改成自己的数据库1.举例来说,booking这个例子.首先在resource下的jboss-seam-booking.xml修改数据库连接的地方,如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE datasourcesPUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN""/j2ee/dtd/jboss-ds_1_5.dtd"><datasources><local-tx-datasource><jndi-name>bookingDatasource</jndi-name><connection-url>jdbc:postgresql://127.0.0.1:5432/lianxi</connection-url><driver-class>org.postgresql.Driver</driver-class><user-name>postgres</user-name><password>root</password></local-tx-datasource></datasources>蓝色为修改的部分。
J2EE总结
JavaServer Faces(JSF)JSF是RAD框架(MVC框架),JSF规范本身是MVC规范,它的目的是使网页开发更方便快捷,它提倡以页面组件的方式隐藏传统web应用开发的HTTP细节(代替request,response,makeup)。
Model1模式:JSp身兼view和controller两种角色,将控制逻辑和表现逻辑混杂在一起,导致代码重用性非常低Model2:servlet作为前段控制器(C),负责接收客户端发送的请求,然后调用javabean(M)来完成实际的逻辑处理,最后转发到相应的JSp(V)页面处理显示逻辑经典的MVC模式:把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新JSF与传统的MVC框架的不同点在于:JSF不再基于请求--响应,它是以事件响应机制来进行通信的,它可以将视图页面的UI组件状态绑定到托管bean,也可以通过视图页面中UI 组件的事件来触发托管bean的方法。
FacesServlet是JSF的核心控制器JSF请求的基本配置:一个标准的web container---Tomcat,以及一个JSF框架的实现---MyFaces基础的JSF由以下组成:用UI控件定义的web页面Faces-config.xml----用于定义web页面之间的导航规则Managed bean 和backing beanHelper object如event listener,validators,converters等注册在组件上的Web.xml---注册FacesServlet和它的mappingJSF是由自定义的JSP标签综合成的Renderer:盖属性指定一个条件表达式,只有当该值为true时该组件才会被绘制出来。
renderer 可以对应多个UI控件,一个UI控件可以对应多个rendererValidatoe:负责确保输入合法,由服务端控制Backing beans:包含用户想要收回的属性以及操纵UI的event listener方法一个view可以有多个backing bean。
使用face-api.js实现人脸识别(一)
使⽤face-api.js实现⼈脸识别(⼀)功能 第⼀阶段实现对图⽚中⼈脸的识别并打上标签(⽐如:⼈名) 第⼆阶段使⽤摄像头实现对⼈物的识别,⽐如典型的应⽤做⼀个⼈脸考勤的系统资源face-api.js Face-api.js 是⼀个 JavaScript API,是基于 tensorflow.js 核⼼ API 的⼈脸检测和⼈脸识别的浏览器实现。
它实现了⼀系列的卷积神经⽹络(CNN),针对⽹络和移动设备进⾏了优化。
⾮常⽜逼,简单好⽤filepond 是⼀个 JavaScript ⽂件上传库。
可以拖⼊上传⽂件,并且会对图像进⾏优化以加快上传速度。
让⽤户体验到出⾊、进度可见、如丝般顺畅的⽤户体验。
确实很酷的⼀款上传图⽚的开源产品fancyBox 是⼀个 JavaScript 库,它以优雅的⽅式展⽰图⽚,视频和⼀些 html 内容。
它包含你所期望的⼀切特性 —— ⽀持触屏,响应式和⾼度⾃定义设计思路1. 准备⼀个⼈脸数据库,上传照⽚,并打上标签(⼈名),最好但是单张脸的照⽚,测试的时候可以同时对⼀张照⽚上的多个⼈物进⾏识别2. 提取⼈脸数据库中的照⽚和标签进⾏量化处理,转化成⼀堆数字,这样就可以进⾏⽐较匹配3. 使⽤⼀张照⽚来测试⼀下匹配程度最终的效果Demo 密码:123456注意:红框中的⽕箭浣熊,钢铁侠,战争机器没有正确的识别,虽然可以通过调整⼀些参数可以识别出来,但还是其它的问题,应该是训练的模型中缺少对带⾯具的和动漫⼈物的⼈脸数据。
实现过程还是先来看看代码吧,做这类开发,并没有想象中的那么难,因为难的核⼼别⼈都已经帮你实现了,所以和普通的程序开发没有什么不同,熟练掌握这些api的⽅法和功能就可以做出⾮常实⽤并且⾮常酷炫的产品。
1、准备素材 下载每个⼈物的图⽚进⾏分类2、上传服务器数据库3、测试代码解析 这⾥对face-api.js类库代码做⼀下简单的说明function dodetectpic() {$.messager.progress();//加载训练好的模型(weight,bias)Promise.all([s.faceRecognitionNet.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.faceLandmark68Net.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.faceLandmark68TinyNet.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'), s.ssdMobilenetv1.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.tinyFaceDetector.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.mtcnn.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'), //s.tinyYolov.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights')]).then(async () => {//在原来图⽚容器中添加⼀层⽤于显⽰识别的蓝⾊框框const container = document.createElement('div')container.style.position = 'relative'$('#picmodal').prepend(container)//先加载维护好的⼈脸数据(⼈脸的特征数据和标签,⽤于后⾯的⽐对)const labeledFaceDescriptors = await loadLabeledImages()//⽐对⼈脸特征数据const faceMatcher = new faceapi.FaceMatcher(labeledFaceDescriptors, 0.6)//获取输⼊图⽚let image = document.getElementById('testpic')//根据图⽚⼤⼩创建⼀个图层,⽤于显⽰⽅框let canvas = faceapi.createCanvasFromMedia(image)//console.log(canvas);container.prepend(canvas)const displaySize = { width: image.width, height: image.height }faceapi.matchDimensions(canvas, displaySize)//设置需要使⽤什么算法和参数进⾏扫描识别图⽚的⼈脸特征const options = new faceapi.SsdMobilenetv1Options({ minConfidence: 0.38 })//const options = new faceapi.TinyFaceDetectorOptions()//const options = new faceapi.MtcnnOptions()//开始获取图⽚中每⼀张⼈脸的特征数据const detections = await faceapi.detectAllFaces(image, options).withFaceLandmarks().withFaceDescriptors()//根据⼈脸轮廓的⼤⼩,调整⽅框的⼤⼩const resizedDetections = faceapi.resizeResults(detections, displaySize)//开始和事先准备的标签库⽐对,找出最符合的那个标签const results = resizedDetections.map(d => faceMatcher.findBestMatch(d.descriptor))console.log(results)results.forEach((result, i) => {//显⽰⽐对的结果const box = resizedDetections[i].detection.boxconst drawBox = new faceapi.draw.DrawBox(box, { label: result.toString() })drawBox.draw(canvas)console.log(box, drawBox)})$.messager.progress('close');})}//读取⼈脸标签数据async function loadLabeledImages() {//获取⼈脸图⽚数据,包含:图⽚+标签const data = await $.get('/FaceLibs/GetImgData');//对图⽚按标签进⾏分类const labels = [...new Set(data.map(item => bel))]console.log(labels);return Promise.all(labels.map(async label => {const descriptions = []const imgs = data.filter(item => bel == label);for (let i = 0; i < imgs.length; i++) {const item = imgs[i];const img = await faceapi.fetchImage(`${item.ImgUrl}`)//console.log(item.ImgUrl, img);//const detections = await faceapi.detectSingleFace(img).withFaceLandmarks().withFaceDescriptor()//识别⼈脸的初始化参数const options = new faceapi.SsdMobilenetv1Options({ minConfidence:0.38})//const options = new faceapi.TinyFaceDetectorOptions()//const options = new faceapi.MtcnnOptions()//扫描图⽚中⼈脸的轮廓数据const detections = await faceapi.detectSingleFace(img, options).withFaceLandmarks().withFaceDescriptor()console.log(detections);if (detections) {descriptions.push(detections.descriptor)} else {console.warn('Unrecognizable face')}}console.log(label, descriptions);return new beledFaceDescriptors(label, descriptions)}))}face-api.jsface-api 类库介绍 face-api 有⼏个⾮常重要的⽅法下⾯说明⼀下都是来⾃的介绍 在使⽤这些⽅法前必须先加载训练好的模型,这⾥并不需要⾃⼰照⽚进⾏训练了,face-api.js应该是在tensorflow.js上改的所以这些训练好的模型应该和python版的tensorflow都是通⽤的,所有可⽤的模型都在可以找到//加载训练好的模型(weight,bias)// ageGenderNet 识别性别和年龄// faceExpressionNet 识别表情,开⼼,沮丧,普通// faceLandmark68Net 识别脸部特征⽤于mobilenet算法// faceLandmark68TinyNet 识别脸部特征⽤于tiny算法// faceRecognitionNet 识别⼈脸// ssdMobilenetv1 google开源AI算法除库包含分类和线性回归// tinyFaceDetector ⽐Google的mobilenet更轻量级,速度更快⼀点// mtcnn 多任务CNN算法,⼀开浏览器就卡死// tinyYolov2 识别⾝体轮廓的算法,不知道怎么⽤Promise.all([s.faceRecognitionNet.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.faceLandmark68Net.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.faceLandmark68TinyNet.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.ssdMobilenetv1.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.tinyFaceDetector.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),s.mtcnn.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights'),//s.tinyYolov.loadFromUri('https:///justadudewhohacks/face-api.js/master/weights')]).then(async () => {}) ⾮常重要参数设置,在优化识别性能和⽐对的正确性上很有帮助,就是需要慢慢的微调。
JSF入门教程
从UI组件开发人员的角度来看,他们可以设计通用的UI组件,让应用程序的开 发产能提高,就如同在设计Swing组件等,UI开发人员可以独立开发,只要定义好 相关的属性选项来调整细节,而不用受到网页设计人员或应用程序设计人员的干扰。
三个角色的知识领域原则上可以互不干扰,根据您的角色,您只要了解其中一 个知识领域,就可以运用JavaServer Faces,其它角色的知识领域您可以不用了解太 多细节。
3. 数据转换与验证
3.1 标准转换器 3.2 自定义转换器 3.3 标准验证器 3.4 自定义验证器 3.5 错误信息处理 3.6 自定义转换, 验证标签
4. 事件处理
4.1 动作事件 4.2 即时事件 4.3 值变事件 .4 Phase事件
JSF 入门
如果您是从使用的角度来看JSF,则您不用理会HTTP、数据转换等细节,JSF 将细节都隐藏起来了,无论您是网页设计人员或是应用程序设计人员,都可以使用 自己熟悉的方式来看JSF。
<managed-bean> <managed-bean-name>user</managed-bean-name> <managed-bean-class> erBean </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> </faces-config>
当然,就其中一个角色单独来看,JavaServer Faces隐藏了许多细节,若要全盘 了解,其实JavaServer Faces是复杂的,每一个处理的环境都值得深入探讨,所以学 习JavaServer Faces时,您要选择的是通盘了解,还是从使用的角度来了解,这就决 定了您学习时所要花费的心力。
JSF2.0系列简介
第1章Javaserver Faces 2.0重要新功能以及相关改进简介(系列之一)关键字: 新功能JSF 2.0的最终规范也已经发布了有近一个月了,在近期试用了一些新功能和特性,带来了很多漂亮的特性和愉快的体验。
试用之余,迫不及待的希望与众多开发工程师们分享JSF 2.0带来的这些改变,或者说给我们开发带来的便利以及思想上的变革。
自从JSF 2.0立项起,就一直关注他,除了他承诺的那些技术和思想上的先进性,更多的原因是由于他为适应Web 2.0开发应用而提出的简化开发流程,提供灵活便捷的组件开发模式;或者可以说是由于他承诺在提高开发人员效率方面的努力。
在从Mojarra项目获取beta版实现并试用后,我非常兴奋,JSF 2.0的专家组很好的完成了他们的承诺,并有很多超出预期的惊喜。
不废话了,现在就从开发者的角度列出我认为全新引入的最重要的两个特性:1、 Facelets界面组件模型在JSF 2.0中引入了全新的界面表现模型Facelets,可以方便的实现自有组件定制和页面模版化。
既强化了JSF提出以来的组件式开发思想,又简化了自有组件的开发。
从Tapestry吸收来的模版方式不仅可以让开发工程师像搭积木一样组合一个页面,更可以搭好架子后只在相关页面中只修改需要改变的部分。
Facelets还有一大好处,就是将所有java代码从页面标签中移出,让分工更明细了,分工合作本来就是人类发展的一大基石,在这儿也体现了。
采用全新界面模型后还带来了些辅助功能和好处,其一就是性能的大幅度提升,由于Facelets采用W3C的xhtml规范,是一个严格的xml规范,组件树渲染不再需要如jsp一样编译成class文件后再运行,可以直接渲染,而大大提升了渲染速度,整体性能比jsp应该会提升不少。
另外为了支持自有组件开发,JSF 2.0加入了一个resources约定,将自己创建的组件放于此目录下,省掉了xml配置文件中的说明。
系统组件升级方案
本系统使用的是JSF1.2+Richfaces3.3.0 希望能升级到JSF2.0+Richfaces3.3.3版本可以升级到richfaces4但是在4中,更换了许多组件,修改代码的时间较大。
升级到3.3.3的步骤:1.JAR包,删减原来系统的JAR达到下图所示:2.所有的faces-config.xml更换版本为2.0:3.web.xml配置文件的内容更改为:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><description>Richfaces Components demo</description><display-name>richfaces-demo</display-name><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext-*.xml</param-val ue></context-param><context-param><param-name>onload-config</param-name><param-value>/WEB-INF/faces-config/onload-config.xml</param-value ></context-param><context-param><param-name>notesPath</param-name><param-value>d:</param-value></context-param><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>/WEB-INF/faces-config/workstation-faces-config.xml,/WEB-INF/faces-config/dataDictionary-faces-config.xml,/WEB-INF/faces-config/resource-faces-config.xml,/WEB-INF/faces-config/saleHub-faces-config.xml,/WEB-INF/faces-config/sales-faces-config.xml,/WEB-INF/faces-config/finance-faces-config.xml,/WEB-INF/faces-config/operateLog-faces-config.xml,/WEB-INF/faces-config/welcome-faces-config.xml</param-value></context-param><context-param><param-name>javax.faces.DEFAULT_SUFFIX</param-name><param-value>.xhtml</param-value></context-param><param-name>facelets.REFRESH_PERIOD</param-name><param-value>2</param-value></context-param><context-param><param-name>facelets.DEVELOPMENT</param-name><param-value>true</param-value></context-param><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><param-value>server</param-value></context-param><context-param><param-name>com.sun.faces.validateXml</param-name><param-value>true</param-value></context-param><context-param><param-name>com.sun.faces.verifyObjects</param-name><param-value>false</param-value></context-param><context-param><param-name>org.ajax4jsf.SKIN</param-name><param-value>blueSky</param-value></context-param><context-param><param-name>org.ajax4jsf.VIEW_HANDLERS</param-name><param-value>com.sun.facelets.FaceletViewHandler</param-value> </context-param><context-param><param-name>PRESS_SCRIPT</param-name><param-value>true</param-value></context-param><context-param><param-name>PRESS_STYLE</param-name><param-value>true</param-value></context-param><context-param><param-name>org.ajax4jsf.xmlparser.ORDER</param-name><param-value>NEKO, TIDY</param-value></context-param><context-param><param-name>org.richfaces.CONTROL_SKINNING</param-name><param-value>enable</param-value></context-param><param-name>org.richfaces.LoadStyleStrategy</param-name><param-value>ALL</param-value></context-param><context-param><param-name>org.richfaces.LoadScriptStrategy</param-name><param-value>ALL</param-value></context-param><context-param><param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-na me><param-value>true</param-value></context-param><context-param><param-name>org.ajax4jsf.handleViewExpiredOnClient</param-name> <param-value>true</param-value></context-param><listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listene r-class></listener><filter><filter-name>onlineFilter</filter-name><filter-class>com.camelot.cims.web.OnlineFilter</filter-class> </filter><filter><filter-name>cacheFilter</filter-name><filter-class>com.camelot.cims.web.CacheFilter</filter-class> </filter><filter><filter-name>SpringOpenEntityManagerInViewFilter</filter-name><filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter </filter-class></filter><filter-mapping><filter-name>cacheFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-name>onlineFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>SpringOpenEntityManagerInViewFilter</filter-name><servlet-name>Faces Servlet</servlet-name></filter-mapping><filter><display-name>RichFaces Filter</display-name><filter-name>richfaces</filter-name><filter-class>org.ajax4jsf.Filter</filter-class><init-param><param-name>forceparser</param-name><param-value>false</param-value></init-param><init-param><param-name>enable-cache</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>richfaces</filter-name><servlet-name>Faces Servlet</servlet-name><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher><dispatcher>INCLUDE</dispatcher></filter-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderList ener</listener-class></listener><servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>*.html</url-pattern><login-config><auth-method>BASIC</auth-method> </login-config></web-app>。
金蝶BOS Web框架
版权所有 ©1993-2006 金蝶软件(中国)有限公司
P9
P9
JSF生命周期
处理验证 为保证上一个阶段的数据正确,特定抽取了这个阶段作为 数据校验。在这里作为创建此请求的视图的一部分,可以 为每个组件注册零个或多个验证器实例。另外,组件类自 身也可以在它们的 validate() 方法中实现验证逻辑。在此阶 段的末尾,会完成所有配置的验证。
版权所有 ©1993-2006 金蝶软件(中国)有限公司
P3
P3
JSF是什么
JavaServer Faces (JSF, 或者 “Faces”)是一个构建Java Web 应用的UI 框架;它基于Java社区流程 (JCP) 开发,并 且成为J2EE 的一个组成部分。Faces 的一个主要目标是为 Java Web 应用开发领域带来RAD 风格的应用开发,就像 Microsoft Visual Basic 和Borland Delphi 一样。 JSF 提供一系列标准部件 (按钮、超链接、复选框等等), 一个创建定制组件的模型,以及在服务器端处理客户端产 生事件的方式,并且有良好的工具支持。你可以同步UI组 件和相关对象的值,而不必编辑太多令人生厌的代码。 所有的JSF 应用都构建于Servlet API 之上,使用HTTP 进 行通信,并且使用JSP.之类的显示技术
版权所有 ©1993-2006 金蝶软件(中国)有限公司
P4
P4
JSF与Struts区别
版权所有 ©1993-2006 金蝶软件(中国)有限公司
P5
P5
JSF包含什么
版权所有 ©1993-2006 金蝶软件(中国)有限公司
P6
P6
JSF生命周期
一种截取动态图像的方法、系统及设备[发明专利]
专利名称:一种截取动态图像的方法、系统及设备专利类型:发明专利
发明人:宋雷
申请号:CN200910081843.8
申请日:20090413
公开号:CN101527690A
公开日:
20090909
专利内容由知识产权出版社提供
摘要:本发明公开了一种截取动态图像的方法,包括:客户端获取用户发起的视频截图请求;客户端根据预设的配置参数以及视频截图请求中的指定时间,截取该指定时间对应的图像,并根据配置参数控制所截取的图像生成用户所需的视频截图。
本发明还公开了一种截取动态图像的系统及设备,实现了基于IM的视频截图,弥补了现有技术的屏幕截图功能无法截取视频播放器内容的缺陷。
本发明满足了用户对于视频中图像的即时截取,即时发送,并制作成IM表情的需要;且用户可以通过配置参数来控制整个视频截图的过程,从而增加了用户的体验度。
申请人:腾讯科技(北京)有限公司
地址:100089 北京市海淀区海淀大街38号银科大厦16层1601-1608室
国籍:CN
代理机构:北京派特恩知识产权代理事务所(普通合伙)
更多信息请下载全文后查看。
视网膜图像中的血管自适应提取
视网膜图像中的血管自适应提取
黄琳; 沈建新; 罗煦
【期刊名称】《《机械设计与制造工程》》
【年(卷),期】2009(038)001
【摘要】观察和分析视网膜血管网络是分析和诊断心血管疾病的重要方法。
根据视网膜血管图像的灰度分布特征,提出了一种自适应阈值分割的血管提取方法。
此方法首先将视网膜图像分为若干同样大小的区域;然后计算出每一区域满足梯度要求的像素点个数;接着对所有满足梯度个数的区域计算其局部阈值,并用该局部阈值进行二值化。
经过以上处理后,能得到有部分断开的血管和一些分散的碎片,再经过后处理连接断开的血管,并清除孤立的碎片,得到视网膜血管网络。
实验证明:该算法处理速度较快,并能提取到大部分血管主干。
【总页数】4页(P64-67)
【作者】黄琳; 沈建新; 罗煦
【作者单位】南京航空航天大学机电学院江苏南京 210016; 深圳市四方精创信息有限公司广东深圳 518000
【正文语种】中文
【中图分类】TH391
【相关文献】
1.一种视网膜血管自适应提取方法 [J], 潘立丰;王利生
2.视网膜血管图像特征点自动提取和分类 [J], 赵晓芳;林土胜
3.一种基于视觉非线性和数学形态学的视网膜血管图像自适应增强… [J], 许雷;郑筱祥
4.病变视网膜图像的血管骨架提取方法研究 [J], 张东波;尚星宇
5.基于视网膜血管模型的图像分割与血管提取 [J], 张恒义;蒋黔麟;虞亚军;郑筱祥因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FACELETS UI 标签参考
1. ui:composition
ui:composition标签是一个模板标签,它包装的内容被列在另一个Facelets中。
任何ui:composition标签外的内容会被Facelets视图处理器忽略。
当另一个Facelets页面包含了具有ui:composition标签的页面时,任何ui:composition标签内的内容会被列入。
2. ui:define
ui:define标签是一个模板标签,它定义插入到一个模板的命名内容。
name属性的值必须与目标模板中的用于插入命名内容的 ui:insert标签的值相匹配。
3. ui:insert
ui:insert标签是一个模板标签,它声明了一个被另一个Facelets定义的命名内容元素。
可以有效地利用它和ui:define标签在Facelets之间传值。
提示: 如果template属性指定了一个模板文件,包含了ui:composition标签的页面会显示相关联的模板页面的内容。
如果ui:composition标签包含了ui:define标签,其内容会被插入到模板文件中相应的ui:insert标签位置。
模板页面可以使用一个无名的ui:insert标签,用于插入ui:composition标签内的所有内容。
4. ui:include
ui:include标签是一个用于Facelets的服务边包含标签。
它只是包含由"src" 属性指定的文档作为当前页面的一部分。
被包含的文档应该使用一个component或composition标签,削减不必要的标记,也可以只包含XHTML或被包括的XML的片断。
5. ui:param
ui:param标签用于页面之间的参数传送。
6. ui:repeat
ui:repeat标签被用来迭代对象集,它由值绑定EL表达式暴露给JSF的。
目的是替换JSTL核心标签库的c:forEach标签。
你也可以在Facelets中利用"jsfc" 功能使用这个标签。
7. ui:remove
ui:remove标签被用来指定Facelets视图处理器在编译时应该从页面删除的标签或内容块。
这个标签没有属性。
你可以在"jsfc"属性中使用这个标签指明应该从显示的页面中删除的特殊标签。
注意:Facelets编译处理比JSP编译处理快很多,在于它不会真正地产生Java字节码,并且当你第一次浏览你的页面时,在幕后进行编译。
8. ui:fragment
ui:fragment标签插入一个新的ui:component 实例到JSF组件树。
在这个标签外的任何组件或内容片断会被Facelets视图处理器纳入,在这个标签内的任何组件或内容片断会被增加到这个组件树,作为这个组件实例的一个孩子。
9. ui:component
ui:component标签插入一个新的ui:component 实例到JSF组件树。
在这个标签外的任何组件或内容片断会被Facelets视图处理器忽略,这个标签内的任何组件或内容片断会被增加到这个组件树,作为这个组件实例的一个孩子。
10. ui:decorate
ui:decorate标签是一个模板标签,它修饰来自另一个Facelet包含的内容。
在这个标签外的任何内容会被Facelets视图处理器显示。
在这个标签内的任何内容会被传递给相关联的模板作为参数或完全忽略。
你可以使用嵌套的ui:define标签传递命名内容给相关联的模板。
详情见ui:insert标签。
模板提示:
包含decorate标签的页面的内容被用来填充关联的模板页面。
如果decorate标签包含了ui:define 标签,这些标签的内容会被插入到模板中找到的相匹配的ui:insert的位置。
你可以使用一个无名的ui:insert标签把所有composition标签的内容插入到模板页面内。
11. ui:debug
ui:debug 标签允许你在测试你的JSF页面时,在你的浏览器中显示有关JSF组件树和域变量的有用信息。
hotkey属性指定了一个组合键 (CTRL + SHIFT + D ,默认值)用来显示弹出窗口包含的内容。
通过设置rendered属性可以启用或禁用ui:debug 标签。