精华内容
下载资源
问答
  • severlet与jsp的web组件开发
  • web组件开发 component

    2019-05-01 16:12:31
  • 今天通过Sun的Web组件开发人员认证考试了。[@more@]看了一个多月的书,壮着胆子去考了考,还算幸运,76%的命中率通过了。Sun Java 2平台企业版1.4认证Web组件开发人员(CX-310-081) ...
    今天通过Sun的Web组件开发人员认证考试了。[@more@]看了一个多月的书,壮着胆子去考了考,还算幸运,76%的命中率通过了。

    Sun Java 2平台企业版1.4认证Web组件开发人员(CX-310-081)

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/174388/viewspace-916095/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/174388/viewspace-916095/

    展开全文
  • 本文完整版地址已经在发表在ISUX团队官方博客:...目前很多Team和团队都有自己的一套web组件体系,模块化开发,封装良好,上手简单。然后希望该web组件可以应用到接手的各个项目中,节约日后的开发成本。

    本文完整版地址已经在发表在ISUX团队官方博客:http://isux.tencent.com/half-package-web-components-for-design.html 欢迎围观,欢迎评论交流!

    一、传统web组件的妄想

    目前很多Team和团队都有自己的一套web组件体系,模块化开发,封装良好,上手简单。然后希望该web组件可以应用到接手的各个项目中,节约日后的开发成本。甚至考虑开源。

    这其实是很棒的,但是呢,希望一套web组件各个项目通用?在我看来,除非对项目没有追求,否则不太现实。

    但是呢,希望一套web组件各个项目通用?在我看来,除非对项目没有追求,否则就是妄想。

    为什么说传统web组件想一统天下不现实呢?因为就像秦始皇一统天下一样,要牺牲很多很多东西。

    1. 牺牲代码量

      web组件要想适用于各个项目,必然要考虑各个项目的各种应用场景,于是,我们势必要暴露很多很多的API, 否则根本应付不来。拿模态弹框举例:有的项目可以拖拽,有的没有关闭按钮,有的黑色蒙版可以点击等,于是,我们至少新增类似dragablecolsableclickable这些API. 就算这样,还是会遇到一些特殊的需求,例如,弹框位置上下比例2:3. 业界通常的做法是二次封装,没错,二次封装,就是在原来就很大很重的web组件基础上,再捣腾一些代码。

    2. 牺牲代码质量

      有些项目并不需要兼容老的IE浏览器,UI工程师那里有质量更好更简单的解决方案。但是,抱歉,web组件在那里,只能委曲求全使用又老又臭的传统兼容实现。

      场景支持多,代码多,逻辑多,代码容易乱,也更容易出bug。

    3. 牺牲设计和体验

      web组件要想多项目使用且封装良好,势必要对UI层进行抽象。但是,UI层一旦抽象了,就等于失去了创新的活力,等于死去:

      关于UI逻辑抽象的言论

      而现代web, 随着CSS3, SVG等现代web技术日趋成熟,我们在UI展现层能够做的事件就非常多,更新变化也更加快。要是这块的创新被组件限制,而其他竞品在组件UI细节上不断闪现人性化、情感化的创新之处,交互也更加流畅与舒适。势必会在新的web发展浪潮中被冲到沙滩上。

      关于YUI终止开发的言论

    4. 组件颗粒度把控

      由于项目差异,以及多人合作等原因,组件颗粒度的把控总是没法恰到好处,拿捏得当。

    5. 跨部门合作

      组件大而重,看上去上手简单,实际上,API这么多,谁记得住!我们这边有切实的案例的,某项目质量非常高,无论是UI, 交互和体验,各方的评价也很好。后来我们要开始一个新的且比较大的项目,就希望把已有项目很多好的东西借鉴过来。设计还是同样的一批设计师,但是,前端团队却换了一拨人。理想的状态应该是这样的,新项目的前端团队,直接使用之前项目这边的前端UI组件(除了颜色,尺寸什么的都是一模一样的),less的变量文件颜色一改,分分钟无缝转移,多棒啊!

      但是,最后的结果是,新的前端团队放弃了之前项目的前端解决方案,还是使用了自己的简洁派做法,seajs + jQuery + …

    但是,不可否认,web组件对于一般的、尤其视觉这块要求不高的项目,是很有价值的。只是在应付要求较高的web项目的时候,显得还有很大的改进空间。下面问题来了:难道我们要为了一些交互体验和视觉效果放弃这些web组件吗?

    答案显而易见,web组件还是需要的。但是,也不能像现在这样,直接使用。我们需要顺应时势,转换思维,试试走“面向设计的半封装web组件”。

    二、转换思维,面向设计

    传统web组件是一般都是由前端开发完成,关注点更多在功能与协作上。虽然也有设计支持,但还是比较弱的。于是,当设计师进行某些微创新的时候,往往就要受制于过于组装的组件的限制。比方说设计师对dialog弹框进行了一些微创新,比方说下面这样的(无标题无关闭大背景色块):

    一个提示框效果示意

    去问开发可行性,结果,开发来了一句:“哎呀,这个结构我们目前的弹框组件不支持!”我相信这种场景很多同学都遇到过吧~最后,基本上都是设计师妥协,还是使用传统弹框交互或布局。所以,坊间才有“苦逼的设计师”的传闻。

    对于一个重视体验和设计的企业或团队而言,这是极为不合理的。居然下游决定上游,技术的目的本身就是为设计服务的,结果反过来限制设计的发挥,这岂不是本末倒置!

    因此,我们有必要转换思维,面向设计。也就是说,让设计师自由地设计,我们做技术的,为之服务,针对特定项目,去调整我们的web组件,剔除不必要的API, 尽量将UI层内容分离出来,交给设计师和UI工程师,精简我们的组件,同时保证组件的UI品质。

    三、转换思维,分离与半封装

    面向设计的web组件,可以说是根据当前设计量身定制的web组件。大家都知道,定制这东西,虽然最后的效果好,但是人力成本也高啊!怎么权衡呢?

    两点:分离和半封装。

    1. 分离

    尽可能将传统组件的API释放出来,交给HTML以及CSS。同时UI层内容从组件中剥离,方便UI工程师做调整,注意是内部调整,不是传统的模板API。

    2. 半封装

    此半封装是多个项目平行对比而言的,非UI侧的核心功能还是封装良好的,UI层可变,故称之为半封装。

    上面两点使用图示表示就是:

    web组件分离和半封装示意

    于是,我们最终的人力成本和以前其实差不多(核心模块都是一样的),传统组件是二次封装,半封装组件是内部定制,实际上都是类似的工作,但是,后者代码量和UI质量要高很多很多:

    两种组件模式的前期工作

    这里,有必要加粗强调下:此“半封装”是针对不同设计风格的项目而言,对于某一个具体项目,其web组件还是完全封装的,还是有成熟的API接口的

    四、使用面向设计半封装组件的前提

    1. 重要项目、希望成为精品的项目 因为这样的项目需要面向设计,而不仅仅满足功能,任由开发任性。
    2. 设计和UI工程师要给力 如果设计师和开发一个水平,当我没说;如果UI工程师的HTML/CSS功力和开发一个水平,当我没说。因为,组件会由半封装会变成“半装疯”。

    五、传统组件和半封装组件形象对比

    传统组件就像是中国的法律,一套法律适用于各个省,所以法律大而全,但是,总是难免有遗漏,比方说男的被男的那个,不算那个;

    半封装组件就像是美国的法律,封装的部分是宪法,全国通过。可变的适用于各个项目的UI层就像是各个州自己通过的法律,自治与灵活。

    前者适用于功能为主,代码质量要求一般的项目;后者适用于体验优先,toper级别项目。

    六、面向设计半封装组件的实践

    拿最近项目的dialog弹框举例。针对某一个具体项目而言,从设计一致性讲,弹框的交互细节都是一致的,这里也不例外。包括以下特点:

    1. 不能拖拽;
    2. 点击背景层不能关闭;
    3. 水平居中,上下比例2:3;
    4. 弹框出现背景内容不能滚动,弹框过高,弹框自身可以滚动;
    5. 弹框支持上下间距不变,中间自适应布局;
    6. 弹框尺寸变化时候的动画支持,不是duangduangduang直接呈现;

    大家应该都用过dialog组件,如果使用你们现在团队的dialog组件,如何满足上面的需求?按照我的经验,会这样:

    1. 调用通用的dialog组件,再项目中新建一个js文件,对dialog二次封装,适用于这个项目;
    2. 设置:dradable: false
    3. 设置:closeable: false
    4. 上下2:3怎么整?估计没有这样的API,不用慌,我们干掉组件的自己的居中定位,然后我们重置下;或者直接劝设计师放弃这种“没有意义”的想法;
    5. 全局回调API中对页面滚动进行处理;
    6. JS实时计算?
    7. JS动画,好像很麻烦的样子,最快的办法还是直接劝设计师放弃这种“没有意义”的想法;

    好,我们就此感受一下,传统弹框组件都干了些什么。首先,大家要知道,这个传统弹框组件很大,API会很多,例如著名的kissy光Overlay就18个API。然后,我们还在这个如此庞大的组件上再次封装了一次JS代码(流量啊烧钱啊)

    如果我们的封装可以满足设计需求也是挺好的,最好的结果似乎……让开发遇到了麻烦,尤其上下2:3这个头一次遇到的需求,以及高度自适应弹框以及动画支持。

    可谓损了代码效果还不好,赔了夫人还折兵。

    为什么会有这样的悲剧呢?

    现代web UI多变,类似的UI需求以后一定会更多。传统组件面向功能,虽看似完善强大,实际对UI层还是鞭长莫及,UI层一任性,组件就哭了。

    下面来看看面向设计的分离半封装的web组件是如何满足设计需求的。

    1. 手上是个半成品的dialog组件,有一些核心封装;
    2. 任何类似是否可以拖拽,是否有某元素,是否背景点击可以关闭之类API相关代码全部干掉;
    3. UI层分离,根据设计需求,重新设计HTML,除了z-index外的样式控制全部交给CSS;HTML侧蒙层和弹框合体,便于内滚动实现以及高度自适应弹框;上下2:3定位实现交给CSS完成,于是,当我们进行动画的时候,只需要关注弹框内部变化元素的尺寸,弹框就会自动定位(CSS自动实时渲染);
    4. 滚动条控制直接组件回调处理,没有API控制,因为,针对本项目本设计而言,没有任何必要。

    设计场景以外的任何东西都扔掉,代码量估计少了一半(面向设计);根据设计场景,修改可变UI层的HTML结构,配合强大的CSS,充分发挥UI工程师的在视觉呈现上的造诣(分离);保留传统web组件在弹框显隐以及回调处理上的封装性(封装)。

    最后的结果是:dialog组件的代码量身定制,代码量小,逻辑清晰易维护;同时,UI层面向设计,弹框体验一级棒;定位等交给CSS, 更高性能。综合下来,整个组件的品质比传统组件实现上了好几层楼。

    七、最后的小总结

    本文内容属于“面向设计的半封装web组件开发”的精简版,如果对某些论点持怀疑态度,可以去这里细细浏览原版。还有,本文目的是让大家把web组件的构建的重心放在“面向设计”上,“半封装”只是兼顾设计和模块化开发的一种权衡策略,具体项目还是要封装良好,小白也能速度上手。

    至少对于我而言,这种组件开发思想,让项目的组件品质,无论是UI层还是代码层,都达到了新的高度。

    大家不妨细细体味下,并不是要大家立即放弃传统web组件构建模式,而是可以开阔思维,转换思路,试着面向设计来思考、定制web组件,远离传统又大又重的组件构建。

    转自:http://www.zhangxinxu.com/wordpress/2015/08/semi-package-web-component-development-for-design/

    展开全文
  • J2EE平台WEB组件开发中如何使用定制标签 J2EE PLATFORM WEB组件开发涉及SERVLET 和JSP技术,SERVLET和JSP各有其优缺点。JVAVABEAN和定制标签对JSP的表示能力提供了很好的扩展,大大提高了JSP的表示能力,同时它们的...

    J2EE平台WEB组件开发中如何使用定制标签
          J2EE PLATFORM WEB组件开发涉及SERVLET 和JSP技术,SERVLET和JSP各有其优缺点。JVAVABEAN和定制标签对JSP的表示能力提供了很好的扩展,大大提高了JSP的表示能力,同时它们的引入使WEB开发可以很好的进行分工,提高开发效率,降低开发成本,同时提高了JSP页面的可读性、重用性、可维护性。本文将介绍J2EE平台WEB组件开发中如何使用定制标签,主要介绍开发定制标签的意义,原理、步骤、在TOMCAT上的发布并给出一个典型的标签实例以加深理解和提高实战性。引用请保留作者和文章来源
    关键词:
    J2EE、SERVLET、JSP、WEB组件、定制标签。
    一、 为什么要使用定制标签?
    开发过Servlet和JSP的人都知道,从表示层来看,Servlet和JSP 是J2EE 平台两中生成动态WEB内容的技术,它们都能产生相同的结果,但它们采用了不同的机制来建立WEB组件。Sverlet是在逻辑中嵌入内容,并夹带服务器方处理逻辑,而JSP是在内容中嵌入逻辑。
    JSP像HTML一样是标签化的,适合内容的表示和描述,但需要JAVA脚本才能处理表示逻辑和业务逻辑,然而JAVA代码的嵌入大大降低了JSP页面表示代码的可读性和可维护性,也不利于重复功能的可复用性。同样的Servlet是实现特定接口的JAVA类,它是用JAVA语言写的,是高度编程的,它适合处理表示逻辑和业务逻辑,但在Servlet内加入表示和描述内容的页面代码,一方面使逻辑处理混乱,可读性差,另一方面也给表示内容的维护带来不利。
    JavaBean的引入很好的解决了JSP和Servlet面临的两难处境,使J2EE平台WEB组件的开发很好的实现了内容和表示逻辑、业务逻辑的分离。可以高度剥离JSP页面层的JAVA代码、业务逻辑层次的内容描述和表示代码。
    但JavaBean存在先天的不足,它只是可复用组件,独立于运行环境而包装了一些数据和业务逻辑功能,无法获得运行环境信息。
    在JSP 1.1和 JSP1.2 中相继引入了定制标签这种机制,解决了JavaBean的这种缺陷,从而彻底解决了WEB组件开发中的表示和业务逻辑代码的分离,大大增强了代码的可读性、可维护性、可复用性。
    二、 JSP页面与定制标签之间的通讯
    在JSP 1.1引入了包javax.servlet.jsp.tagext,定制标签时需要实现特定的接口或继承相应的类,其中Tag接口定义了JSP页面和标签处理器之间基本的通讯合约,即通讯的API接口。JSP规范中规定了WEB容器调用这些方法处理它们通讯的流程,从而实现对标签的生命周期的管理,其时序图如下:



    三、 定制标签的原理
    1、 定制标签运行所需的四个组件
    定制标签需要开发四个组件以确保其能正常运行,它们是:
    TagName.class:通常称之为标签处理器,它是实现标签功能的JAVA类。它必须实现特定的JAVA 接口,这些接口和抽象类在包javax.servlet.jsp.tagext中,实现对标签的生命周期的管理。
    TaglibName.tld:定义一个标签库的XML文件。其中定义了标签库的名称、版本信息、描述信息和包含的各标签的名称、对应的标签处理器,标签的属性等。
    Web.xml :是每个WEB应用程序的唯一的部署描述符文件(每个WEB容器有多个WEB应用程序,但每个WEB应用程序只有一个部署描述符文件)。它是使用XML(Extensible Markup Language)语言写的,描述WEB应用程序可用的资源和相关的信息,一般它在WEB服务器启动时被加载到内存中。WEB服务器依此来调度资源响应用户的请求。必须在Web.xml中注册定制标签库。
    JspPage.jsp :是一个JSP页面,该页面使用在WEB应用程序描述符文件中注册的标签库中的标签,实现特定的表示功能。在JSP页面中使用某个标签库之间前,一定要导入标签库。
    2、 定制标签处理器实现的接口




    以上是定制标签的层次结构图,定制标签可以通过实现其中任何一个接口或者继承任何一个抽象类来实现特定的表示功能。通常使用什么接口或者抽象类处决于开发人员必须定义的方法所预期的生命周期。下面对图中的接口和抽象类分别进行介绍。
    javax.servlet.jsp.tagext.Tag接口:
    Tag接口定义了标签处理器和调用实例JSP页面之间基本的通讯协议,如果选择实现该接口,要求实现如下定义的所有方法,如:setPageContext(PageContext pc)、setParent(Tag tag)、getParent(Tag tag)、doStartTag()、doEndTag()、release(),这些方法都是容器回调方法。实现Tag接口的标签的生命周期如下图所示。




    javax.servlet.jsp.tagext.IterationTag接口:
    由上述标签处理器实现接口的层次结构图可知IterationTag接口扩展了Tag接口,而且增加了额外的方法doAfterTag()。该方法使实现该接口的标签处理器能够多次执行标签体正文。如果选择实现该接口,除了要实现Tag中的所有方法外,还要实现doAfterTag(),使标签处理器能够多次执行标签正文。实现IterationTag接口的标签的生命周期如下图所示。


    javax.servlet.jsp.tagext.BodyTag接口:
    BodyTag扩展了接口IterationTag接口,并且提供了多次执行和修改标签正文的能力。如增加了方法setBodyContent(BodyContent bc)、doInitBody()。IterationTag和BodyTag常用于处理集合对象中的数据实现。BodyTag接口的标签的生命周期如下图所示。


    一般情况,用户可以根据实际情况选择地实现上述三个接口之一就能满足需要。但通过实现上述接口开发标签处理器要实现众多地方法是很不方便而且工作量很大,同时功能也受限。不过用户放心,JAVA天生的简洁之美和开放特性是不会让大家失望的,为了简化用户的开发和提供更多额外的功能,javax.servlet.jsp.tagext包还额外的提供了一些支持类,如:
    javax.servlet.jsp.tagext.TagSupport
    javax.servlet.jsp.tagext.BodyTagSupport
    javax.servlet.jsp.tagext.TagExtraInfo
    其中TagSupport和BodyTagSupport都实现了Tag接口。TagSupport用于实现那些不需要操纵标签体的的标签处理器;BodyTagSupport用于实现那些要求改变标签正文的标签处理器的标签。TagExtraInfo用于提供编译时标签的额外信息。

    四、 基本的定制标签的步骤
    定制标签通常有五个步骤:1、编写标签处理器类文件;2、编写标签库描述文件;3、部署标签库;4、向WEB应用程序注册标签库;5、导入和使用标签库。
    下面分别加以简单介绍。
    1、 标签处理器类文件的编写:
    像其它的JAVA组件编程一样,编写标签处理器只需要实现特定的接口就可以了,在上述定制标签的原理中已经详细讨论了如何开发标签处理器,在此不再多说。
    2、 编写标签库描述文件:
    标签库是一些标签的集合,它们通常有一定的联系。由于标签处理器的方法有很多是容器回调方法,编写完标签后,要向WEB容器提供关于标签的信息,才能在客户引用时,WEB容器知道怎样调用相应的方法来处理客户的请求。通常标签的信息存储在一个名叫TLD的标签库描述文件中。TLD文件是用XML编写,很易理解。该文件一般包含标头信息、标签库定义信息、一个或多个标签定义信息。一个完整的TLD文件如下。
    //标头信息
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
    //标签库定义信息
    <taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name> customTags </short-name>
    <description>A set of my tag handlers.</description>
    //标签定义信息
    <tag>
    <name>tagname</name>
    <tag-class>TagHandlerclassName</tag-class>
    <attribute>
    <name>attributename</name>
    <required>true/false</required>
    <rtexprvalue>true/false</rtexprvalue>
    </attribute>
    ------
    </taglib>

    <required>false</required>表示初始值可以为空(或不用写)  

    RunTime   EXPRession   VALUE  
       
      true代表,<xxx:yyyy   zzz="<%=   something   %>"   />  
      标签库zzz的属性是<%=   %>表达式的结果而非"<%=   something   %>"这几个字母   
       

    3、 部署标签库:
    由于标签库使用TLD文件来描述的,因而部署标签库实际上就是发布TLD文件,一般它放在WEAR包的WEB-INFO文件夹下,即直接将TLD文件拷贝到WEB-INFO文件夹中。
    4、 向WEB应用程序注册标签库:
    向WEB应用程序注册标签库实际上是向WEB应用程序指出标签库描述文件TLD文件的路径,也就是在WEB.XML文件中指出标签库描述文件的路径(在基于JAVA的WEB组件开发中WEB.XML文件用于向应用程序注册资源信息)。即在其中增加如下语句。
    <taglib>
    //标签库引用名称
    <taglib-uri>/ customTags </taglib-uri>
    //标签库描述文件TLD路径
    <taglib-location>/WEB-INF/ customTags.tld</taglib-location>
    </taglib>
    5、 导入和使用标签库:
    现在在JSP页面中就可以导入和使用标签了,语法如下:
    //导入标签库
    <%@ taglib uri="/ customTags " prefix="custTag" %>
    //引用标签
    < custTag: tagname />或< custTag: tagname>------< custTag: tagname/>

    JSP页面定义的标签元素是如何在WEB容器中找到对应的标签处理器的呢?从定制标签的步骤,我们不难绘出定制标签映射图(如图六所示),可以清晰看出在WEB容器中定制标签元素是如何找到相应的标签处理器的。图六清晰地放映了定制标签的运行机制。


    五、 如何在TOMCAT上发布
    将编写好的标签处理器CLASS文件、标签库描述文件、WEB.xml文件和WEB应用程序打包成WEAR组件,就可以发布到TOMCAT等WEB容器上。经解压文件目录类似如图七结构,




    其中customTags.tld为客户定制标签库描述文件,标签处理器类文件位于classes文件夹或包含标签处理器的JAR文件,WEB.XML将customTags.tld映射到WEB应用程序。JSP文件加中存放引用定制标签的JSP页面文件。
    六、 典型定制标签的范例
    在讲解了开发定制标签的基本原理、方法和步骤后,下面让我们通过一个完整的典型的例子来看在实际应用中如何使用定制标签来封装常见模块,以增强代码的可读性、可维护性、可复用性,提供编码效率。一般的WEB站点都有大量的新闻内容显示和民意调查内容等重用性很高的功能模块,如新浪、搜狐等。下面我们看如何用上面介绍的方法来开发新闻标签。
    1、 编写标签处理器类文件
    新闻列表标签(用于显示新闻条目)
    public class NewsListTag extends TagSupport {
    //属性
    //对应的SETTER、GETTER方法
    public int doStartTag() throws JspException {
    //处理从数据库中检索获得的新闻条目集合和新闻显示格式
    //输出标签体内容
    try {
    pageContext.getOut().print(sbOut.toString());
    } catch (IOException e) {
    throw new JspTagException("NewsListTag::IO Error: " + e.getMessage());
    }
    return SKIP_BODY ;
    }
    private ResultSet getRS() throws SQLException,IOException {
    //从数据库中检索新闻条目,并返回结果集
    return rs;
    }
    }
    新闻内容标签(用于按指定的格式显示某条新闻的具体内容)
    public class NewsContentTag extends TagSupport {
    //新闻条目的ID号属性
    //对应的SETTER、GETTER方法
    public int doStartTag() throws JspException {
    //从数据库中获得某条新闻的具体内容
    //定制新闻显示的格式
    //输出新闻内容。
    try {
    pageContext.getOut().print(sbOut.toString());
    } catch (IOException e) {
    throw new JspTagException("NewsListTag::IO Error: " + e.getMessage());
    }

    return SKIP_BODY ;
    }
    private ResultSet getRS() throws SQLException,IOException {
    //按新闻ID号从数据库中获得新闻的具体内容,并返回结果集
    return rs;
    }
    }
    2、 编写标签库描述文件TLD(CustomTags.tld)
    //标头信息
    //标签库信息
    <tag>
    <name>newsList</name>
    <tag-class>NewsListTag</tag-class>
    //标签属性集
    </tag>

    <tag>
    <name>newsContent</name>
    <tag-class> NewsContentTag</tag-class>
    //标签属性集
    </tag>
    3、 部署标签库
    将CustomTags.tld文件放在WEAR包中的WEB-INFO目录下。部署结果类似如图七。
    4、 向WEB应用程序注册标签库
    在WEB.XML文件中增加如下语句:
    <taglib>
    <taglib-uri>/ customTags </taglib-uri>
    <taglib-location>/WEB-INF/ customTags.tld</taglib-location>
    </taglib>
    5、 导入和使用标签
    下面就可以在JSP文件中导入定制的标签库和定制的标签了,语法如下:
    <%@ taglib uri="/ customTags " prefix=" customTags " %>//导入标签库
    < customTags: newsList attribute----- />//引用新闻列表标签
    < customTags: newsContent attribute----- />//引用新闻内容标签
    6、 运行效果
    启动TOMCAT,在浏览器中输入相应的URL地址就可以看到类似新浪站点上的新闻条目页面,可以查看按一定内格式输出新闻条目。当想查看某条新闻的具体内容时,点击该条新闻,就在新的页面按定义的格式显示该条新闻的具体内容。运行步骤如下:
    1 启动TOMCAT,在地址栏中http://localhost:8080/tagexample/news/news.jsp, 以看到新闻条目界面,浏览新闻标题.,效果如图八.

    展开全文
  • Web组件开发一 分层详解 和模块化

    千次阅读 2017-03-05 21:34:49
    1. JS在实战中的分层方法,主要是分为四层,浏览器底层,框架core核心层,框架组件层,应用层。2. 浏览器底层,存在的问题 JS核心语法层面薄弱 JS原生API不好用 浏览器兼容问题 后来有了框架核心层去解决以上的问题...
  • java web组件开发osgi与jsp

    千次阅读 2009-01-18 19:32:00
    在前一篇文章中,通过OSGi(Open Services Gateway Initiative)的热插拔特性,我们已经窥见了OSGi在Java Web开发中的一些优势。但是因为OSGi是最早为嵌入式系统设计,所以OSGi标准中的HTTP服务只提供了有限的...
  • by zhangxinxu from http://www.zhangxinxu.com ... 本文完整版地址已经在发表在ISUX团队官方博客:http://isux.tencent.com/half-package-web-components-for-design.html 欢迎围观,欢迎评论交
  • web组件开发员! 2001-07-24 02:32Sun的Java是很热门的认证之一-最近Sun宣布在SCJP,SCJD到J2EA之后-第四项Java认证即将推出Web Component Developer-请见...
  • SharePoint文档流转Web组件开发中...

    千次阅读 2006-09-21 08:32:00
    很好的一个特点是,管理员可以给文档库增加自定义的栏,然后使用文档流转Web组件来对栏的值进行设置: 我推荐您在 这个项目的站点 上下载完整的Flash格式的视频Demo,以得到一个更加具体的概念。如果顺利,预计我会...
  • 目前,许多谷歌工程师正在努力开发Project Polymer,这些工程师的目标,是编写出一个网页应用框架,程序员不仅可以在这个框架上构建web组件,而且可以利用web组件,在浏览器上构建出目前技术无法实现的...
  • 采用OSGi/Equinox实现采用上一节第二中方式,将OSGi容器集成于普通的JEE Server中。在OSGi容器中,实现对Web组件中资源的解析和对外界Http请求的调度,使得Web组件开发和普通JEE卡发没有区别不大
  • web开发组件

    2006-03-16 00:00:00
    web方式开发管理系统的输入表格,参照,打印,图形分析等等的全套解决方案,使用方便,简单,可以快速提高开发速度
  • 大多数前端框架都采用Web组件标准,并且许多开发人员在创建其小部件时已开始使用该规范。 更不用说现在所有现代浏览器都原生支持它。 如何在服务器端使用Web组件作为Java开发人员的互操作性和灵活性? 本演讲展示了...
  • java web 组件开发?

    2008-07-15 14:03:11
    页面组件化,逻辑组件化,业务组件化,数据组件化,按一定的规律组合各种组件以期达到客户需求。 是个很美好的愿景。 对比一下.net和flex以及对应的...java web组件开发又在哪里? 看好dojo,看好jsf。 ...
  • web前端组件开发 之 弹窗组件实现

    千次阅读 2017-03-22 02:57:24
    widget 抽象类首先抽象出弹窗组件的一些共有属性和方法。widget抽象类中 定义一个最外层容器,即整个弹窗,在widget构造函数中,添加一个属性:this.boundingBox = null; // 弹窗组件最外层容器 在widget抽象类中,...
  • <br />JEE中间件SSH,EJB(初步组件化思想,不是以服务组件为出发点) 前端UI组件化dojo,ext,jquery,DHtml(后端仍很混乱) JSF(技术难度高,数据绑定不灵活,页面与UI未分离) Spring DS(OSGI)(不...
  • WebOSGi开发框架,旨在在解决传统Java EE web应用的功能耦合紧密、代码重用困难、功能组件动态热插拔等问题, 为大规模Web应用的持续开发和实施提供统一的、标准化、坚固的组件开发、运行、组件依赖及版本管理、...
  • amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一、总结 1、amaze ui:amaze ui是一个web 组件,由模板(hbs)、样式(LESS)、交互(JS)三部分组成 二、Web组件简介Web Component Web 组件...
  • JSF 组件模型JSF 组件模型与 AWT GUI 组件模型类似。它有事件和属性,就像 Swing 组件模型一样。它也有包含组件的容器,容器也是组件,也可以由其他容器包含。从理论上说,JSF 组件模型分离自 HTML 和 JSP。JSF 自带...
  • 无论如何形式,组件开发已然成为我们工作中的必备技能,为了更好的复用性和可维护性,组件化开发是必然选择,也正是因为组件化开发越来越重要,几年前web标准推出了Web Component这一概念,意在解决html原生标记语言...
  • 图表开发,折线图,条形图,饼状图
  • 移动端Web组件-Dialog对话框

    千次阅读 2017-06-22 14:22:38
    本博文你将学会:我们需要实现如下效果:首先你得会: Chrome浏览器调试器使用 CSS3新特性的使用,响应布局等 ...有过web组件开发经验 扎实的JS基础,JQ常用的API的使用,移动端迷你JQ框架Zepto会使用
  •  Servlet过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 组件,这些功能虽然很重要,但是对于处理客户机请求...
  • 图表组件数据(数组套数组) 还有散点根据大小比例进行缩放,然后转成圆形/* 散点图表组件对象 */var H5ponentPoint = function(name,cfg){ var component = new H5ComponentBase(name,cfg); var base = cfg...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,837
精华内容 9,534
关键字:

web组件开发