WebWork标签库

合集下载

webWork配置篇

webWork配置篇

webwork配置篇注意:在这篇已经后续篇幅中,将不再给出xml文件的dtd等一些无关的元素,包括代码可能也给的只是和内容相关的代码片段,因为我们通过基础篇的学习已经对webwork有了一个感性的认识,这里为了节省篇幅作了以上的约定.配置action,result和interceptor我们在web.xml中配置的servlet-Dispatcher在收到了HTTP请求后,通过xwork.xml中的定义调用对应URL请求中的action,action在处理完成后,告诉webwork下一步应该作什么,这个下一步称作result,webwork支持多种类型的result.interceptor是一个特殊的对象,它围绕action和result的执行过程.它控制着action的预处理和后处理,提供安全,校验,日志等某些松耦合的处理,interceptor在action和result处理之后仍然可以工作,为他们增加诸如数据库事务处理等功能.在webwork中,我们可以把多个interceptor组合起来形成一个栈(stack),通过这些栈重用,简化配置,同时关键是提供跨Action的逻辑重构action最基础的action配置如下:<xwork><package name="default"><action name="first" class="com.xujun.webwork.action.FirstAction"/> </package></xwork>使用了result的action:<xwork><include file="webwork-default.xml" /><package name="default" extends="webwork-default"><default-interceptor-ref name="defaultStack"/><action name="first" class="com.xujun.webwork.action.FirstAction"><result name="input" >/index.jsp </result><result name="success" type="redirect">/main.action</result></action></package></xwork>这个例子有两个变化,引入了webwork-default.xml,增加了两个result节点,我们暂时先看result 节点,每个result映射都需要一个name ,一个type,和一个具体的value,type的默认值是dispatch(分发器)为Action提供别名webwork是一种范化的command模式的架构,不同的action name可以同时指向同一个action类,通过这种模式,你可以相同的action提供不同的result和interceptor,并且webwor提供一种更为强大的方式,就是可以指定action中执行的方法,不一定非要是excute().但该方法必须遵循excute的规范,就是要有string类型的返回值.利用这种方式可以大大减少项目中Action数量.xwork..xml<action name="first" class="com.xujun.webwork.action.FirstAction" method="myexcute"/>FirstAction.javapublic String myexcute(){String name = user.getUsername();message = "myexcute:你好"+user.getUsername();return "hello";}注意:throw Exception不是必须的.webwork会先查找和method()一致的方法,如果找不到,就会寻找doMethod()的方法,如果这里的myexcute()改成doMyexcute()也是可以的不需要配置的别名webwork提供了页面访问方式,name.action或者name!method.action..如修改上面index.jsp中的<form>的action="first!myexcute.action"会自动调用action name=”first”的action类中的myexcute()使用场景:比如一个用户打开一个页面之前我们需要作一些操作,可以在Action中定义个before(),那么在url中定义actionname!before.action,该before返回一个input的result,result定位还是这个页面,接着该页面的表单定位是actionname.action,这时候就会执行该Action中的excute()使用静态参数定义Action通过param标签,可以让action根据不同的param值进行不同的处理,可以重复使用Action.同时,param定义的值可以通过IOC的方式注入到Action的属性上,我们举个例子: 假如我们开发一个集成系统,需要访问若干个具有同样接口的webservice,我们在一个Action中已经作好了业务逻辑处理,因为这些webservice具有同样的接口,所以处理的方式都是一致的,但urlL和timeout不同,此时我们就可以通过param来设置不同的参数<action name="service" class="com.xujun.webwork.action.WebServiceAction"> <result name="success">/success.jsp</result><param name="url">/service.wsdl</param><param name="timeout">30</param><interceptor-ref name="static-params"></interceptor-ref> </action>我们创建了两个参数url和timeout,为了将这两个参数赋值给action,我们需要在action 中定义好setter方法private String url;private int timeout;public void setUrl(String url){this.url = url;}public void setTimeout(int timeout){this.timeout = timeout;}注意:webwork会自动根据参数的name找到action对应的setter方法,所以请保证param中的name定义和action中的属性名称一致,同时,要记住webwork传递给xwork的Map中的参数值都是String类型的,该例子中的传递来的timeout参数值就是”30”,webwork会自动类型转换同时要导入static-params这个interceptorresultresult默认配置一个完整的result节点如下:<result name="success"type="dispatch"><param name="location">Hello.jsp</param>></result>这其中,name是必须的,其他都是可以省略的一个最简单的result节点如下:<result name="success">Hello.jsp</result>第二个result和第一个result在执行时是一样的,result的type默认是“dispatch”,param默认是“location”。

java一些jar包作用

java一些jar包作用

一些.jar作用很乱未整理的自己看看吧希望对您有所帮助!这里主要介绍的是Hibernate使用到的.jarHibernate一共包括了23个jar包,令人眼花缭乱。

本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍。

下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包:hibernate2.jar:Hibernate的库,没有什么可说的,必须使用的jar包cglib-asm.jar:CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包dom4j.jar:dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。

dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。

在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。

我早在将近两年之前就开始使用dom4j,直到现在。

如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。

这是必须使用的jar包,Hibernate用它来读写配置文件。

odmg.jar:ODMG是一个ORM的规范,Hibernate实现了ODMG规范,这是一个核心的库,必须使用的jar 包。

commons-collections.jar:Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。

必须使用的jar包。

commons-beanutils.jar:Apache Commons包中的一个,包含了一些Bean工具类类。

webWork基础知识

webWork基础知识

这个文件定义了所有内置的结果,参数和拦截器.还定义了很多拦截器栈, 这个文件定义了所有内置的结果,参数和拦截器.还定义了很多拦截器栈,这些 栈可以原封不动的使用,也可以作为您自己的栈的基础. 栈可以原封不动的使用,也可以作为您自己的栈的基础. 注意包名是 "webworkwebworkdefault". default".
validators.xml
为webwork提供验证机制的配置文件 w源自bwork提供验证机制的配置文件 例:
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN“ "1.0.2//EN“ "/xwork/xwork-validator"/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="ername"> <field-validator type="required"> <message>Please enter Username!</message> </field-validator> </field> <field name="model.password"> <field-validator type="length"> <param name="minLength">4</param> <param name="maxLength">6</param> <message> Password length must between ${minLength} and ${maxLength} chars! </message> </field-validator> </field> </validators>

webwork框架学习

webwork框架学习

15
ResultType
Result 它是Action执行之后返回的一个字符串常量 它表示Action执行完成的状态。 ResultType 它是一个类 它在Action执行,并返回result之后调用 它用来决定WebWork使用什么方式展现界面
<result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/>
<result name="success" type="dispatcher">/register/registerSuccess.jsp</result>
16
三、WebWork标签库和EL
<ww:property value=“”/>取值输出 <ww:iterator value=“” status=“”/>迭代标签,可以输出 Collection, Iterator, Enumeration, Map, array, XML Node, or XML NodeList status:用来取得迭代器的状态:getCount(), getIndex(), isFirst(), isLast(), isEven(), isOdd() <ww:if test=“”> </ww:if> <ww:elseif test=“”></ww:eleseif> <ww:else></ww:else>
2

标签库标准

标签库标准

标签库标准标签库是一种用于分类和组织信息资源的工具,它能够对文档、文件或其他数据资源进行分类,从而提高信息的可检索性和可用性。

标签库通常由一系列标签组成,每个标签都代表着一个特定的主题或类别,通过将标签应用于特定的资源,可以将其与相关的资源进行关联。

在设计和建立标签库时,应遵循一定的标准,以确保标签的一致性、可靠性和可扩展性。

下面是一些相关的参考内容,帮助你了解标签库的标准。

1. 标签命名规范标签的命名应具有一定的规范性,以确保标签的可读性和易理解性。

建议使用简洁明了的词语或短语来命名标签,同时要避免使用过于专业化或抽象的术语,以便用户能够轻松地理解和应用标签。

此外,还应避免使用过长的标签,以便在展示和检索标签时能够节省空间和时间。

2. 标签关联性和层级结构标签库中的标签应具有明确的关联性和层级结构,以便更好地组织和分类资源。

相关的标签应归属于相同的主题或类别,以便用户能够根据其需求和兴趣找到相关的资源。

同时,标签之间应该具有明确的父子关系或上下级关系,以构建标签的层级结构。

层级结构使得标签能够更好地组织和管理,方便进行标签的搜索和筛选。

3. 标签描述和示例对于标签库中的每个标签,建议提供相应的描述和示例,以帮助用户更好地理解和应用标签。

描述应包括标签的含义、范围和适用场景,以便用户能够准确使用标签。

示例可以是一些具体的资源或案例,以展示标签的具体应用场景和效果。

同时,描述和示例可以在标签库展示页面中显示,以便用户能够更方便地了解和选择标签。

4. 标签的动态更新和管理标签库需要进行动态更新和管理,以确保标签的有效性和最新性。

随着时间的推移,资源的分类和主题可能会发生变化,因此需要不断地对标签库进行更新和调整。

同时,还需要建立标签的管理机制,以确保标签的一致性和正确性。

标签管理人员可以负责对标签进行审核、添加、删除或修改,以确保标签库的整体质量。

5. 标签库的可扩展性和互操作性标签库应具有一定的可扩展性和互操作性,以适应不同的需求和环境。

基于Webwork的试卷库检索系统设计与实现

基于Webwork的试卷库检索系统设计与实现
维普资讯
本 目 任 辑: 力 栏责 编 王
・ ・ ・计算 机教 育 ・ ・一
基于 We wo k的试卷库检索系统设计与实现 b r
刘 茜
( 浙江 理 工 大 学 图 书馆 , 江 杭 州 3 0 1 ) 浙 1 0 8
摘 要 : 着开 源 工 具 的 日趋 流 行 , 开 发 系统 过程 中如 何 选择 合 适 的 工具 已经 是 系统 构 架 面 临 的 首要 问题 。 文章 以设 计 历 年 考 试 试 随 在
统方 式 , 给存 储 、 护 和 查 阅 带 来 种 种 不便 , 此 , 计 了 此 类 系 维 为 设 统 , 希 望 实 现 以 下 功 能 : 持 批 次 操 作 , 许 用 户 批 次 导 人 数 并 支 允
供 非 常 丰 富 的 标 签 以 及 强 有 力 的 技 术 支 持 , 广 大 开 发 人 员 带 来 给 诸 多 方 便 , 速 被 全 球 开 发 人 员 广 泛 使 用 。 当 然 ,t t 也 有 一 些 迅 Sr s u 致 命 缺 点 , 开 发人 员 带 来 不 少 困难 : 给
题 类 检 索 系统 为例 来介 绍 如 何 选择 系统 框 架 以及 合适 的 开发 工具 , 同时 介 绍 开发 系统 值 得 考量 的 因素 。
关 键 词 : e w r ; 统框 架 ; b ra ; 存 ; 载均 衡 W b ok 系 Hie t 缓 n e 负
中图分 类号 :P 1 T 3 1
候 , 会 比较 困难 。 就

随 着 我 们 的 业 务 需 求 1趋 复 杂 ,t t 3 Sr s的局 限性 也 越 加 明 显 , u
随着 JP aaS re ae) 术的广 泛应用 , 接将 Jv S 0 v e r gs v P 技 直 aa代

Struts2详细实例教程

Struts2详细实例教程

Struts2(上)一、经典的MVC模式二、Struts1.x对MVC的实现三、Struts1.x的主要组件和作用组件作用ActionServlet 中央控制器Action 分控制器,调用JavaBean实现业务逻辑,Action可以分为Action、DispatchAction等不同类型ActionForm 封装参数,实现服务器验证,文件上传等Forward 转发到目的地,可以是JSP,也可以是另一个ActionStruts-config.xml 配置文件,配置有ActionForm,Action,Forward等,通过XML解析,然后使用反射技术使用该文件Struts标签库和JSTL类似,和Struts-config.xml、ActionForm、Action等对象可以紧密集成四、Struts1.x 开发实例-登录程序见案例。

五、Struts2(WebWork)的MVCStruts2的MVC架构六、Struts2的主要组件组件作用FilterDispatcher 起中央控制器作用的过滤器Action 处于Model层的Action,调用JavaBean实现业务逻辑struts.xml 核心配置文件,配置有Action、Result等result 和forward类似,转发的目的地,支持多种视图技术。

七、Struts2的实例-登录在MyEclipse环境中建立一个新的web工程,名称“Struts2Login”,存放路径“f:\Struts2Login”。

在Struts2.0.11版本中找到war包struts2-blank-2.0.11.war,解开该war包,在WEB-INF/lib 目录下复制出所有的jar包,这些jar包就是一个Struts2程序所需要的基础jar包,把它们复制到新建的web工程的WEB-INF/lib目录中。

在src目录下建立一个类,包名mypack,类名UserAction,其代码如下:package mypack;import com.opensymphony.xwork2.ActionSupport;public class UserAction extends ActionSupport {private String username;private String userpass;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getUserpass() {return userpass;}public void setUserpass(String userpass) {erpass = userpass;}@Overridepublic String execute() throws Exception {if ("Mike".equals(username) && "123".equals(userpass)|| "张三".equals(username) && "abc".equals(userpass))return "success";elsereturn "error";}}在src目录下建立Struts2的配置文件struts.xml,内容如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><!-- 定义包管理配置的action 继承struts-default.xml中的配置 --><package name="actions" extends="struts-default"><!-- 定义Action(login.action) --><action name="login" class="erAction"><!-- 定义转发路径对应的字符串名 --><result name="success">/Success.jsp</result><result name="error">/Error.jsp</result></action></package></struts>修改web.xml,在其中加入一个过滤器,过滤/*路径。

Webwork.in.action第一部分

Webwork.in.action第一部分

第1章WebWork的概貌本章涵盖:■ 为什么MVC是重要的■ 框架和容器■ WebWork的背景和未来■ CaveatEmptor范例程序4 WebWork in Action中文版我们首先设想一个情景:你刚刚完成一个1.0版的Web应用程序并发布了,而你的大客户却立即提出了要求——在1.1的版本中,用户界面必须进行很大程度的修改以符合他们公司的使用标准。

修改几乎涉及了所有方面:从数据录入表单上的字段数量到按钮及图像的位置,再到各种向导所包含的步骤数量,等等。

而且客户要求在下个星期前完成这样的修改!面对这样的挑战,你可能会气定神闲,不动声色,也可能想着要准备简历换东家了。

这天渊之别取决于你的Web应用程序是如何构建的。

在早期的Web应用程序开发当中,程序员通常会使用像Perl这样的脚本语言,通过脚本将需要显示的内容直接打印出来。

同时,这些脚本中也包含了关键的商业逻辑。

很明显,这种方式将核心的商业代码和表现层紧密耦合在一起了。

时至今日,像Perl、PHP、JSP、ASP这些类库和其他支持Web开发的语言都在设法解决商业逻辑代码和表现层代码之间的解耦合问题。

若想满足用户的需求就像在公园里散步一样轻松,就取决于使用的类库,以及你是否能够充分发挥它的优越性了。

在本书中,你将会学到如何使用Java领域中最流行的Web框架之一:WebWork。

WebWork是一个优越的框架,它的设计基于这样一个基本原理:完成通用任务应该是简单的,而构建高级的设计也应该是可行的。

WebWork的开发者只想提供一个能够为你工作的框架,而不是一个与你作对的框架。

为了帮助你学习WebWork,我们将向你演示如何使用WebWork基本及高级的特性构建一个改进版本的应用程序CaveatEmptor。

CaveatEmptor最初出现在《Hibernate in Action》(Manning Publications,2004年,/bauer)一书中。

第一章Struts2系统架构

第一章Struts2系统架构

第一章Struts2系统架构本章主要介绍的Struts2的系统架构,让学员对Struts2框架在结构上有一个整体概念为我们以后更加详细的学习Struts2打下一个良好的基础。

第一节Struts2的系统架构及处理的主要流程1.Struts1简介Struts1的历史比较久远,Struts1是世界上第一个发布的MVC框架,目前市场率最高的框架。

下面将简单讲解Struts1的基本架构。

图1-1显示了Struts1的数据流图。

图1-1 Struts1数据流图Struts1框架以ActionServlet为核心控制器,ActionServlet获得客户端请求。

然后ActionServlet根据请求信息调用匹配的业务逻辑控制器(Action)处理用户请求。

请求处理完成后,业务逻辑处理器调用相应的JSP显示处理结果。

Struts1框架实现了MVC模式,下面我们了解一下Struts1是怎样实现MVC模式的。

Struts1框架中并没有提供Model层的实现。

在实际的企业应用中,通过一个JavaBean 实现一个业务逻辑,在功能比较复杂的应用中也采用EJB或WebService服务实现业务逻辑。

Struts1框架的View层采用JSP实现。

Struts1提供了大量丰富的标签库。

这些标签库与Struts的组件兼容的特别好,可以很容易的输出控制器的处理结果。

Struts1框架中,控制器是它的核心,Struts1的控制器由两部分组成:核心控制器(ActionServlet)和业务逻辑控制器(Action),核心控制器由Struts1框架提供。

业务逻辑控制器需要由用户自己继承Struts1框架提供的Action类实现。

在Struts1框架中,JSP/Servlet耦合非常紧密。

这种紧密关系促使Struts1存在各种缺陷。

下面我们分析一下Struts1中存在的缺陷。

●支持的表现层技术单一●耦合性强,不便于单元测试●代码依赖于Struts1 API,侵入性强2.WebWork简介WebWork出自于开源组织opensymphony,实际的创始人是Java领域的名人Rickard Oberg(JBoss和XDoclet的作者)。

WebWork入门使用教程

WebWork入门使用教程

WebWork使用教程2012-11-5目录1.WebWork 简介 (4)核心概念——WebWork的三个关键部分 (5)特点 (5)ValueStack 和 EL (5)Interceptor( 拦截器 ) (6)提供的拦截器介绍 (7)2.WebWork安装-Hello World实例介绍 (9)2.1WebWork安装 (9)HelloWorld (11)3.Action (14)Action简介 (14)用户注册例子 (15)Field-Driven Action vs. Model-Driven Action (24)4.ActionContext (27)ActionContext简介 (27)ServletActionContext (30)5.ServletDispatcher的原理 (32)Action的单元测试 (38)6.Result Type (40)7.表达式与言EL和OGNL (48)OGNL介绍 (48)值堆栈-OgnlValueStack (48)8.Interceptor框架 (59)Interceptor的原理 (65)9.验证框架 (66)为用户注册添加验证功能 (67)10.XWork配置详述 (76)xwork.xml文件的标签元素 (77)11.实战G-Roller-WW (82)G-Roller-WW介绍 (82)JSTL与WebWork的整合 (82)中文解决方案 (82)12.WebWork与其它开源项目的集成 (82)Spring (82)Hibernate (82)Xml-RPC (82)总结 (83)附录 (84)本文档推荐的Opensympnony (84)从技术的角度Struts1.1与WebWork2的比较 (87)关于WebWork的项目资源 (91)参考资料 (91)特别注意 (92)笔者寄语 (94)1.WebWork 简介WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。

轻松学Java Web开发之Struts 2标签库

轻松学Java Web开发之Struts 2标签库
属性名 name label list 必选 否 否 是 默认值 无 无 无 属性值类型 String String String 说明 指定组合框名称 指定组合框前显示文本 指定组合框选项集合
13.4.3 datetimepicker标签
datetimepicker标签用来生成一个文本框和日期、时 间选择器的组合。在选择器中选择完某个日期或者 时间时,会自动将被选择的日期或者时间输入文本 框中。datetimepicker标签包括的常用属性如表13.10 所示。
第13章 Struts 2标签库
Struts 2同Struts 1一样,为页面开发提供了大量的标 签,但是相比而言Struts 2的标签库更为强大。因为 Struts 2不仅整合了Dojo技术,能够生成大量的页面 效果,而且它支持OGNL表达式,不再依赖任何表现 层技术。借助于Struts 2标签来开发页面,可以使页 面更加整洁而且容易维护,同样可以减少代码量以 及开发时间。
13.1 Struts 2标签库概述
通过上面的配置就可以在JSP页面中使用Struts 2提供 的标签了。使用Struts 2标签的语法格式分为两种, 如图13.3所示。
没有标签体: <s:标签名 属性1=属性值1 <s:标签名 属性1=属性值1 </s:标签名> 属性2=属性值2 ……/> 属性2=属性值2 ……>
属性名 displayFormat displayWeeks endDate formatLength label name startDate type value 必选 否 否 否 否 否 否 否 否 否 默认值 无 6 2941-10-12 short 无 无 1492-10-12 date 无 属性值类型 String Integer Date String String String Date String String 说明 指定日期显示格式 指定显示的星期数 指定最后的日期 指定日期格式 指定日期选择器前显示文本 指定日期选择器名称 指定最开始日期 指定日期选择类型 指定默认初始化时间

科大国创笔试题

科大国创笔试题

1.字符转整型int i = Integer.parseInt([String]); 真的不是一般的杯具。

字符倒序输出public class Test {public static String reverseString(String str){StringBuffer sbf = new StringBuffer();for(int i=0;i<str.length();i++){sbf.insert(0, str.charAt(i)); //核心}return sbf.toString();}public static void main(String[] args){String str;str = "123456789";System.out.println(reverseString (str));}}2.struts1 2 区别struts1和struts2 是2个完全不同的框架,其实struts2核心就是 webwork 框架struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的所有请求。

Struts 1框架有3个重要组成部分:Action、ActionForm和ActionForward对象。

ActionForm必须实现ActionForm的基类,设计上并不是真正的POJO。

struts2核心控制器是FilterDispatcher,Struts 2用于处理用户请求的Action 实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。

而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。

webwork与struts的比较

webwork与struts的比较

特性Struts WebWork 1.x WebWork 2.xAction classes Struts要求Action类继承一个抽象类. 这也说明了Struts的一个常见问题: 针对抽象类编程而不是接口.Action必需实现webwork.Action接口. 还有其他接口可以实现其他服务, 如保存错误信息, 获取本地化文本等.ActionSupport类实现了其中的一些接口,也可以用作基类.WebWork全部针对接口编程, 这样很容易插入你自己的实现.与WebWork 1.x相同, Action必需实现com.opensymphony.xwork.Action接口, 还有一系列接口用于其他服务.WebWork2提供ActionSupport 实现这些接口.线程模型Struts的Action必须是线程安全的, 因为它仅使用一个示例处理全部请求. 这一限制导致Struts的Action执行过程中使用的任何资源必须是线程安全的或同步访问.WebWork的Action每一个请求使用一个实例, 一次就不存在线程安全问题. 实践中, 每一次请求Servlet容器都会生成许多将被丢弃的对象,多一个或几个对象并没有证明会带来性能问题或垃圾收集问题.同上对Servlet的依赖性Struts的Actions依赖于Servlets, 因为执行时使用(获取)了ServletRequest和ServletResponse(而不是HttpServletRequest和HttpServletResponse). 绑定Servlets(虽然不是HttpServlet)实际上就与Servlet容器绑定了,而这种依赖关系并不需要. 例如, Servlet可以在Web环境之外运行, 但JMS就不能.WebWork的Action没有绑定Web或其他任何容器. WebWork的action可以选择从ActionContext中获取request和response, 但这不是必须的并且仅当绝对必要时才是用, 这并不会与Web容器绑定.同上可测试性已经有许多测试Struts应用的策略, 但主要障碍实际是Struts的Action与Web紧密的绑定在一起(获取Request和Response对象). 着导致人们经常在一个容器中测试Sstruts的Action, 这样做既缓慢而又无法进行单元测试. 有一个Junit的扩展包: Struts TestCase(/)WebWork的action可以通过实例化action, 设置属性并执行的方式进行测试同上, 但重点在于反转控制(Inversion ofControl)让测试变得更简单, 你可以在测试中设置一个实现服务接口的Mock对象进行测试, 而不需要设置服务注册表或使用单件(static singleton)FormBeans Struts需要为每个表单使用FormBean, 这产生了大量的多余的类或者不得不使用DynaBean,而这恰恰是这一限制的产物WebWork 1.x允许直接使用Action的属性(也就是标准的Javabean属性), 属性可以包含丰富的对象类型甚至可以有自WebWork 2支持WebWork 1中的特性,还加入了ModelDriven的Actions, 它允许使用丰富的对象类型或域对象作为formbean, 可以在Web页面中直接访问它的属性, 这要好于作为活动属性的子属性进行访问.己的属性, 而这些属性都可以从Web页面中访问. WebWork也支持FormBean模式, 在"WW1:Populate Form Bean and access its value"中有关一这部分的介绍表达式语言Struts 1.1集成了JSTL, 因此它使用JSTL EL.该语言支持基本的对象图遍历, 但对集合和索引的属性的支持要弱一些.WebWork 1.x拥有自己的表达式语言用以访问值栈. 对集合以及索引属性的支持很基本但很好.WebWork也可以直接与JSTL共同使用,参见WW1:UsingJSTL seamlesslywith WebWorkWebWork 2使用XW:Ognl, 这是一个非常强大的表达式语言, 也可以访问值栈.Ognl对集合和索引属性的支持非常强大.Ognl还支持一些强大的特性如投射(projections, 对集合的每一个元素调用同一个方法并使用结果创建一个新的集合), 挑选(selections, 使用一个选择表达式过滤集合并返回一个子集), 列表构造和lambda表达式(简化功能). Ognl还能访问静态方法, 静态字段和构造方法.WebWork2也能使用JSTL, 参见WW1:Using JSTL seamlessly withWebWork将值绑定到视图Struts使用标准的JSP将对象绑定到pageContext, 这使得视图与formBean紧密耦合WebWork设置了值栈, WebWork标签库可以从中十分灵活的同上动态查找所需的值, 而不需要将视图与数据类型紧密耦合. 这样就可以在很大的范围内复用视图.类型转换Struts的FormBeans属性通常都是字符串.Struts使用Commons-Beanutils进行类型转换. 每个类使用一个转换器, 但不允许为每个实例配置不同的转换器. 获取一个有意义的类型转换错误并显示给用户也是很难做到的.WebWork 1.x使用PropertyEditors进行类型转换.PropertyEditors针对类型而不是Action,但字段错误信息可以加到活动的字段信息表中并自动显示给用户.WebWork2使用Ognl进行类型转换, 并为基本类型提供了转换器. 类型转换缺省情况下使用上述转换器, 但也可以为每个类的每个字段指定转换器. 类型转换错误也有缺省错误信息但可以使用本地化机制设置每个字段的信息, 字段错误信息可以加到活动的字段信息表中并显示给用户.前/后处理模式必须创建一个继承基类Action的类来作为Action前/后处理的代理, 这将导致类继承层次过深, 也可能因为单继承的限制而无能为力WW:Comparison to Struts#1类继承WebWork 2允许使用截取器模块化前/后处理. 拦截器可以通过配置动态添加, 两者之间没有任何耦合.校验Struts调用FormBean的validate()方法.Struts用户通常使用Commons Validation进行校验. 我对此不太了解, 因此仅提出几个问题:由于FormBean属性一般都是字符串, 某些校验方法是否会重复或无法做到?WebWork1.x调用Action的 validate()方法, 你可以编写代码校验, 也可以调用外部校验框架(这显然WebWork2可以使用WebWork1.x和Struts的validate()方法, 还可以使用XW:校验框架, 它由一个XWork截取器激活. Xwork校验框架允许用XML格式编写校验器, 可以为每个类提供一个缺省校验器并在不同的校验环境中使用定制校验Commons Validation是否能为同一个类设置不同的校验环境? (我已被告知可以做到, 这是好事)Commons Validation能否使用为对象属性类定义的校验方式对子对象(sub-objects)进行校验?与Sstruts相同) 器.Xwork校验框架由一个截取器激活因此与Action类完全解藕. 还可以使用VisitorFieldValidator将校验处理连接到子属性(sub-properties, [与上文提到的子对象相同).对Action执行过程的控制以我的了解, Struts设置一个Action对象, 而你对执行的顺序几乎无法控制. 要改变这一点, 我认为需要编写自己的Servlet来自行处理分发(dispatching)由ActionFactory链控制Action创建和初始化的过程, 但需要编写一个类在这以问题上WebWork 2的截取器栈十分有用. 设置Action的各方面功能都被转移到截取器中实现(如设置参数, 校验等),因此你可以依据截取器的功能控制每一个Action的执行顺序. 例如你可能希望你的IOC框架在request参数设置之前完成Action配置, 反之亦然 - 也可以使用截取器栈对每个包或每个类进行控制.WebWork 2 : xwork.xmlThis page last changed on May 26, 2004 by ctran.示例<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE xworkPUBLIC"-//OpenSymphony Group//XWork 1.0//EN""/xwork/xwork-1.0.dtd"><xwork><include file="webwork-default.xml"/><package name="default" extends="webwork-default"><interceptors><interceptor-stack name="defaultComponentStack"><interceptor-ref name="component"/><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors><default-interceptor-ref name="defaultStack"/><action name="SimpleCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter"> <result name="success" type="dispatcher">/success.jsp</result><interceptor-ref name="defaultComponentStack"/></action><!--- Velocity implementation of the SimpleCounter. Also demonstrate a more verbose version of result element --><action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter"> <result name="success" type="velocity"><param name="location">/success.vm</param></result><interceptor-ref name="defaultComponentStack"/></action><!--- Different method can be used (processForm).--><action name="formTest" class="com.opensymphony.webwork.example.FormAction" method="processForm" > <result name="success" type="dispatcher">/formSuccess.jsp</result><result name="invalid.token" type="dispatcher">/form.jsp</result><interceptor-ref name="defaultStack"/><interceptor-ref name="token"/></action></package></xwork>活动<action name="formTest" class="com.opensymphony.webwork.example.FormAction" method="processForm">活动是WebWork的基本工作单元, 它正是定义了活动. 活动通常有一个请求(通常是点击按钮, 或提交表单). 主要的action元素有两部分, 友好的名字(在URL中引用, 如saveForm.action)和对应的"处理(handler)"类.可选的"method"属性告诉WebWork应当调用活动的哪个方法. 如果你不填写method属性, WebWork缺省调用execute(). 如果活动没有execute()方法, 也没有在xml中指定method属性, WebWork将抛出异常.同样, 你也可以在表单中指定"actionName!something"来告诉WebWork调用"doSomething"方法. 例如, "formTest!save.action"将调用FormAction的"save"方法. 该方法必须是public且没有参数:public String save() throws Exception{...return SUCCESS;}活动的所有配置都可以用在"actionName!something"中(截取器, 结果类型等)结果<result name="missing-data" type="dispatcher"><param name="location">/form.jsp</param><param name="parameterA">A</param><param name="parameterB">B</param></result>Result元素告诉WebWork活动执行后下一步该做什么. "name"属性对应活动execute() 方法返回的结果代码. "type"属性表示使用哪个结果类型(参见结果类型). 可以使用"param"元素向视图传递参数:<result-types>....<result-type name="header"class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/></result-types><result name="no-content" type="header"><param name="status">204</param><param name="headers.customHeaderA">A</param><param name="headers.customHeaderB">B</param></result>下面是WebWork内置的标准结果代码(定义在Action接口中), 包括:Action.SUCCESS = "success";Action.NONE = "none";Action.ERROR = "error";Action.INPUT = "input";Action.LOGIN = "login";你可以扩充你认为适合的结果代码(如"missing-data"). 大多数情况下你只需使用SUCCESS和ERROR, SUCCESS将前进到下一个页面.如果你只需要指定"location"属性, 可以使用简写形式:<result name="missing-data" type="dispatcher">/form.jsp</result>参阅webwork-default.xml或Result Types以了解标准结果类型截取器截取器允许定义活动执行前后的代码. 截取器是编写Web应用的强大工具. 一些最常用的实现是:•安全检查(确保用户已登陆)•跟踪纪录(记录每一个活动)•检查执行瓶颈(在活动前后启动计时器, 以检查应用瓶颈)也可以将截取器连接起来创建一个截取器栈. 如果你想完成登陆检查, 安全检查, 并记录每个活动调用, 使用截取器栈会十分容易.必须先定义截取器(给它命名)然后才能联接成栈:<interceptors><interceptor name="security" class="com.mycompany.security.SecurityInterceptor"/><interceptor-stack name="defaultComponentStack"><interceptor-ref name="component"/><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors>要在活动中使用它们:<action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter"> <result name="success">...</result><interceptor-ref name="defaultComponentStack"/></action>注意: 可以引用拦截器或栈的名字更多细节参见截取器.视图WebWork支持JSP和Velocity作为应用表示层. 本例使用JSP文件. Webwork附带了标签库(taglibs). 你可以在JSP中项组件一样使用标签库.下面是form.jsp的片断:<%@ taglib prefix="ww" uri="webwork" %><html><head><title>Webwork Form Example</title></head><body><ww:form name="myForm" action="'formTest'" namespace="/" method="POST"><table><ww:textfield label="First Name" name="'formBean.firstName'" value="formBean.firstName"/><ww:textfield label="Last Name" name="'stName'" value="stName"/><ww:submit value="Save Form"/></table></ww:form></body>处理经过如下:1.WebWork监控以.action结尾的URI(定义在web.xml中)2.WebWork在活动定义中查找活动formTest.3.WebWork创建formTest并调用com.opensymphony.webwork.example.FormAction的方法processForm(定义在xwork.xml中).4.该方法处理成功并返回SUCCESS5.WebWork将返回值SUCCESS转换成地址formSuccess.jsp(定义在b class="strong">xwork.xml中)并执行重定向.包含为了易于管理大规模开发活动(包含大量活动和配置), WebWork允许在xwork.xml中包含其他配置文件 :<xwork><include file="webwork-default.xml"/><include file="user.xml"/><include file="shoppingcart.xml"/><include file="product.xml"/>....</xwork>被包含文件必须与xwork.xml的格式相同(具有相同的doctype及其它)并放置在类路径中(通常位于/WEB-INF/classes或/WEB-INF/lib的jar文件WebWork 2 : webwork-default.xmlThis page last changed on Oct 23, 2004 by plightbo.基本配置文件webwork-default.xml包含在webwork的jar文件中. 该文件可以包含在xwork.xml 中以便包含标准的配置信息而无需复制, 如下:<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork1.0//EN""/xwork/xwork-1.0.dtd"><xwork><include file="webwork-default.xml"/><package name="default" extends="webwork-default">...</package></xwork>2.1.5版本的webwork-default.xml内容如下:<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN""/xwork/xwork-1.0.dtd"><xwork><package name="webwork-default"><result-types><result-type name="dispatcher" class="com.opensymphony.webwork.dispatcher.ServletDispatcherResult" default="true"/><result-type name="redirect" class="com.opensymphony.webwork.dispatcher.ServletRedirectResult"/><result-type name="velocity" class="com.opensymphony.webwork.dispatcher.VelocityResult"/><result-type name="chain" class="com.opensymphony.xwork.ActionChainResult"/><result-type name="xslt" class="com.opensymphony.webwork.views.xslt.XSLTResult"/><result-type name="jasper"class="com.opensymphony.webwork.views.jasperreports.JasperReportsResult"/><result-type name="freemarker" class="com.opensymphony.webwork.views.freemarker.FreemarkerResult"/><result-type name="httpheader" class="com.opensymphony.webwork.dispatcher.HttpHeaderResult"/><result-type name="stream" class="com.opensymphony.webwork.dispatcher.StreamResult"/> </result-types><interceptors><interceptor name="timer" class="com.opensymphony.xwork.interceptor.TimerInterceptor"/><interceptor name="logger" class="com.opensymphony.xwork.interceptor.LoggingInterceptor"/><interceptor name="chain" class="com.opensymphony.xwork.interceptor.ChainingInterceptor"/><interceptor name="static-params"class="com.opensymphony.xwork.interceptor.StaticParametersInterceptor"/><interceptor name="params" class="com.opensymphony.xwork.interceptor.ParametersInterceptor"/><interceptor name="model-driven" class="com.opensymphony.xwork.interceptor.ModelDrivenInterceptor"/><interceptor name="component"class="ponentInterceptor"/><interceptor name="token" class="com.opensymphony.webwork.interceptor.TokenInterceptor"/><interceptor name="token-session"class="com.opensymphony.webwork.interceptor.TokenSessionStoreInterceptor"/><interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/><interceptor name="workflow" class="com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor"/><interceptor name="servlet-config"class="com.opensymphony.webwork.interceptor.ServletConfigInterceptor"/><interceptor name="prepare" class="com.opensymphony.xwork.interceptor.PrepareInterceptor"/><interceptor name="conversionError"class="com.opensymphony.webwork.interceptor.WebWorkConversionErrorInterceptor"/><interceptor name="fileUpload" class="com.opensymphony.webwork.interceptor.FileUploadInterceptor"/><interceptor name="execAndWait"class="com.opensymphony.webwork.interceptor.ExecuteAndWaitInterceptor"/><!-- Basic stack --><interceptor-stack name="defaultStack"><interceptor-ref name="servlet-config"/><interceptor-ref name="prepare"/><interceptor-ref name="static-params"/><interceptor-ref name="params"/><interceptor-ref name="conversionError"/></interceptor-stack><!-- Sample validation and workflow stack --><interceptor-stack name="validationWorkflowStack"><interceptor-ref name="defaultStack"/><interceptor-ref name="validation"/><interceptor-ref name="workflow"/></interceptor-stack><!-- Sample file upload stack --><interceptor-stack name="fileUploadStack"> <interceptor-ref name="fileUpload"/><interceptor-ref name="defaultStack"/> </interceptor-stack><!-- Sample Inversion of Control stack --> <interceptor-stack name="componentStack"> <interceptor-ref name="component"/><interceptor-ref name="defaultStack"/> </interceptor-stack><!-- Sample model-driven stack --><interceptor-stack name="modelDrivenStack"> <interceptor-ref name="model-driven"/><interceptor-ref name="defaultStack"/></interceptor-stack><!-- Sample action chaining stack --><interceptor-stack name="chainStack"><interceptor-ref name="chain"/><interceptor-ref name="defaultStack"/></interceptor-stack><!-- Sample execute and wait stack.Note: execAndWait should always be the *last* interceptor. --> <interceptor-stack name="executeAndWaitStack"><interceptor-ref name="defaultStack"/><interceptor-ref name="execAndWait"/></interceptor-stack><!-- A complete stack with all the common interceptors in place. Generally, this stack should be the one you use, though itmay process additional stuff you don't need, which couldlead to some performance problems. Also, the ordering can be switched around (ex: if you wish to have your componentsbefore prepare() is called, you'd need to move the componentinterceptor up --><interceptor-stack name="completeStack"><interceptor-ref name="prepare"/><interceptor-ref name="servlet-config"/><interceptor-ref name="chain"/><interceptor-ref name="model-driven"/><interceptor-ref name="component"/><interceptor-ref name="fileUpload"/><interceptor-ref name="static-params"/><interceptor-ref name="params"/><interceptor-ref name="conversionError"/><interceptor-ref name="validation"/><interceptor-ref name="workflow"/></interceptor-stack></interceptors></package></xwork>文件中定义了全部缺省结果和截取器, 还定义了一些截取器栈供你直接使用或作为特定截取器栈的基础. 注意: 包名字是"webwork-default".Document generated by Confluence on Dec 14, 2004 16:37web.xml文件简单明了, 易于配置.Web.xml配置ServletDispatcher应用中最常用的活动调用入口点是直接访问一个URL或使用表单向活动提交数据. 下例展示了如何配置ServletDispatcher来处理活动.<!-- This entry is required to have the framework process calls to WebWork actions --><servlet><servlet-name>webworkDispatcher</servlet-name><servlet-class>com.opensymphony.webwork.dispatcher.ServletDispatcher</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>webworkDispatcher</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>注意: 上面的例子假定活动使用".action"扩展名. 如果你向使用不同的扩展名, 将url-pattern元素改为你需要的扩展名并使用该扩展名修改调用代码.WebWork 2 : 全局结果全局结果允许定义一个结果映射, 它可以作为全部活动的缺省结果, 并自动被本包及所有扩展包中的活动继承. 换言之, 如果你想为多个活动指定同一个结果, 就可以把它定义为全局结果.示例<package name="default">....<global-results><result name="login" type="dispatcher"><param name="location">login.jsp</param></result></global-results><action name="foo" class="mypackage.fooAction"><result name="success" type="dispatcher">bar.jsp</result></action><action name="submitForm" class="mypackage.submitFormAction"> <result name="success" type="dispatcher">submitSuccess.jsp</result> </action>...</package>等同于<package name="default">....<action name="foo" class="mypackage.fooAction"><result name="success" type="dispatcher">bar.jsp</result><result name="login" type="dispatcher">login.jsp</result></action><action name="submitForm" class="mypackage.submitFormAction"> <result name="success" type="dispatcher">submitSuccess.jsp</result> <result name="login" type="dispatcher">login.jsp</result></action>...</package>。

DW标签

DW标签

DW中标签详解Dreamweaver标签库可以帮助我们轻松的找到所需的标签,并根据列出的属性参数使用它,常用的HTML标签和属性解释, 请搜索"常用的HTML标签和属性".以下是摘录:基本结构标签:<HTML>,表示该文件为HTML文件<HEAD>,包含文件的标题,使用的脚本,样式定义等<TITLE>---</TITLE>,包含文件的标题,标题出现在浏览器标题栏中</HEAD>,<HEAD>的结束标志<BODY>,放置浏览器中显示信息的所有标志和属性,其中内容在浏览器中显示. </BODY>,<BODY>的结束标志</HTML>,<HTML>的结束标志其它主要标签,以下所有标志用在<BODY></BODY>中:<A,HREF="…"></A>,链接标志,"…"为链接的文件地址<IMG,SRC="…">,显示图片标志,"…"为图片的地址<BR>,换行标志<P>,分段标志<B></B>,采用黑体字<I></I>,采用斜体字<HR>,水平画线<TABLE></TABLE>,定义表格,HTML中重要的标志<TR></TR>,定义表格的行,用在<TABLE></TABLE>中<TD></TD>,定义表格的单元格,用在<TR></TR>中<FONT></FONT>,字体样式标志属性:属性是用来修饰标志的,属性放在开始标志内.例:属性bgcolor="BLACK"表示背景色为黑色.引用属性的例子:<BODY,bgcolor="BLACK"></BODY>表示页面背景色为黑色;<TABLE,bgcolor="BLACK"></TABLE>表示表格背景色为黑色.常用属性:对齐属性,范围属性:ALIGN=LEFT,左对齐(缺省值),WIDTH=象素值或百分比,对象宽度.ALIGN=CENTER,居中,HEIGHT=象素值或百分比,对象高度.ALIGN=RIGHT,右对齐.色彩属性:COLOR=#RRGGBB,前景色,参考色彩对照表.BGCOLOR=#RRGGBB,背景色.<center>表示绝对居中.<table></table>表格标识的开始和结束.属性:cellpadding=数值单位是像素,定义表元内距cellspacing=数值单位是像素,定义表元间距border=数值单位是像素,定义表格边框宽度width=数值单位是像素或窗口百分比,定义表格宽度background=图片链接地址,定义表格背景图<tr></tr>表格中一个表格行的开始和结束;<td></td>表格中行内一个单元格的开始和结束属性:Colspan="",单元格跨越多列;Rowspan="",单元格跨越多行;Width="";定义表格宽度Height="";定义表格高度Align="";对齐方式Valign="";Border="",边框宽度;Bgcolor="",背景色;Bordercolor="",边框颜色;Bordercolorlight="",边框明亮面的颜色;Bordercolordark="",边框暗淡面的颜色;Cellpadding="",内容与边框的距离(默认为2);Cellspacing="",单元格间的距离(默认为2);<br>强制换行<font></font>文本标识的开始和结束属性:face=字体color=颜色<b></b>加粗文字标识的开始和结束属性:style=font-size:40pt;,用样式表方式控制字体大小,这里是40点<div></div>,分区标识的开始和结束属性:align=|center|left|right|水平对齐方式<marquee></marquee>动态标识的开始和结束,如标识内放置贴图格式则可实现图片滚动属性:scrollamount=1~60,滚动速度direction=|left|right|up|down|,滚动方向scrolldelay=滚动延时,单位:毫秒<P>段落标识,空格符,<img>贴图标识属性:src=../../图片链接地址,贴图标识必备属性style=filter:Alpha(opacity=100,style=2);filter:样式表滤镜;Alpha:透明滤镜,opacity:不透明度100(0~100);style:样式2(0~3),rules="none"不显示内框"<embed,src="…">多媒体文件标识属性:SRC="../../FILENAME",设定音乐文件的路径,文件类型除了可以播放.rm;.mp3;.wav等音频,还可播放.swf和.mov等视频.AUTOSTART=TRUE/FALSE,是否要音乐文件传送完就自动播放,TRUE是要,FALSE是不要,默认为FALSE LOOP=,设定播放重复次数,LOOP=6表示重复6次,true或-1为无限循环,false 为播放一次即停止.STARTIME="分:秒",设定乐曲的开始播放时间,如20秒后播放写为STARTIME=00:20VOLUME=0-100,设定音量的大小.如果没设定的话,就用系统的音量.WIDTH,HEIGHT,设定控制面板的大小,都设为0可隐藏播放器HIDDEN=TRUE,隐藏控制面板CONTROLS=CONSOLE/SMALLCONSOLE,设定控制面板的样子,<bgsound,src="…">,背景音乐标识,只能用于.wav和.mp3格式.属性:LOOP=,设定播放重复次数,LOOP=6表示重复6次,true或-1为无限循环,false 为播放一次即停止.表单标签:<form></form>表格标识的开始和结束,表单的内容都放在这里.下边的标签放在表单内:<select>下拉选择框<option></option></select>属性:Multiple,多选<textarea></textarea>,大量文字输入的编辑块属性:Cols="",行;Rows="",列;<input,type="text">,文本框<input,type="password">,密码框<input,type="submit">,提交按扭<input,type="checkbox">,复选框<input,type="radio">,单选框<input,type="reset">,重置按扭<input,type="image">,图片按扭<input,type="hidden">,隐藏域<input,type="button">,按扭<input,type="file">,浏览文件公共属性:Name="";Value=""Size=""框架标签:<FRAMESET>...</FRAMESET>,定义框架.<FRAME>,放在框架标签内,定义每个框架的内容. 属性:Cols=""Rows=""Frameborder=""Framespacing=""src=""Scrolling="",滚动条(No,Yes);Noresize,框加大小不可变;Marginhight="",高度空余空间;Marginwidth="",宽度空余空间;Target="",目标框架.其他标签:<bgsound>,背景音乐;Src=""Loop="",循环次数;<embed>,媒体播放块;Src=""Loop="",循环次数;<marquee></marquee>,滚动部分;属性:Bgcolor=""Behavior,设置或获取文本如何在字幕中滚动. Direction="",滚动方向;Height=""Width=""Loop="",环次数;scrollAmount="",设置或获取介于每个字幕绘制序列之间的文本滚动像素数. scrollDelay="",设置或获取字幕滚动的速度.scrollHeight="",获取对象的滚动高度;scrollLeft="",设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离.scrollTop="",设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离.trueSpeed="",设置或获取字幕的位置是否使用scrollDelay和scrollAmount 属性计算,已过的实际时间来自于时钟计时.<!--...-->,注释标记,在"<!--"与"-->"之间的内容将不在浏览器中显示.--基本标签:<html></html>,创建一个HTML文档;<head></head>,设置文档标题和其它在网页中不显示的信息;<title></title>,设置文档的标题;<h1></h1>,最大的标题;<pre></pre>,预先格式化文本;<u></u>,下划线<b></b>,黑体字;<i></i>,斜体字;<tt></tt>,打字机风格的字体;<cite></cite>,引用,通常是斜体;<em></em>,强调文本(通常是斜体加黑体);<strong></strong>,加重文本(通常是斜体加黑体);<font,size="",color=""></font>,设置字体大小从1到7,颜色使用名字或RGB 的十六进制值;<BASEFONT></BASEFONT>,基准字体标记;<big></big>,字体加大;<SMALL></SMALL>,字体缩小;<STRIKE></STRIKE>,加删除线;<CODE></CODE>,程式码;<KBD></KBD>,键盘字;<SAMP></SAMP>,范例;<VAR></VAR>,变量;<BLOCKQUOTE></BLOCKQUOTE>,向右缩排;<DFN></DFN>,述语定义;<ADDRESS></ADDRESS>,地址标记;<sup></SUP>,上标字;<SUB></SUB>,下标字;<xmp>...</xmp>固定宽度字体(在文件中空白、换行、定位功能有效)<plaintext>...</plaintext>固定宽度字体(不执行标记符号);<listing>...</listing>,固定宽度小字体;<font,color=00ff00>...</font>字体颜色;<font,size=1>...</font>最小字体;<font,style,='font-size:100,px'>...</font>无限增大.格式标签:<p></p>,创建一个段落;<p,align="">,将段落按左、中、右对齐;<br>,换行,插入一个回车换行符;<blockquote></blockquote>,从两边缩进文本;<dl></dl>,列表标签,定义列表;<dt>,定义列表标题;<dd>,定义列表内容;例:<dl><dt>标题1</dt><dd>内容11</dd><dd>内容12</dd><dt>标题2</dt><dd>内容21</dd><dd>内容22</dd></dl><ol></ol>,列表标签,定义一个标有数字的列表;<ul></ul>,列表标签,定义一个标有圆点的列表;<li>,放在每个列表项之前;放在<ol></ol>之间则每个列表项加上一个数字,放在<ul></ul>之间则每个列表项加上一个圆点;<div,align=""></div>,分区标签,用来排版大块HTML段落,也用于格式化表; <MENU>,选项清单;<DIR>,目录清单;<nobr></nobr>,强行不换行;<hr,size='9',width='80%',color='ff0000'>水平线(设定宽度);<center></center>,水平居中.链接标签:<a,href="URL"></a>,创建超文本链接;<a,href="mailtEMAIL"></a>,创建自动发送电子邮件的链接;<a,name="name"></a>,创建位于文档内部的书签;<a,href="#name"></a>,创建指向位于文档内部书签的链接;<BASE>,文档中不能被该站点辨识的其它所有链接源的URL;<LINK>,定义一个链接和源之间的相互关系;链接标签注解:target="...",决定链接源在什么地方显示(用户自定义的名字,_blank,_parent,_self,_top);rel="...",发送链接的类型;rev="...",保存链接的类型;accesskey="...",指定该元素的热键;shape="...",允许我们使用已定义的形状定义客户端的图形镜像(default,rect,circle,poly);coord="...",使用像素或者长度百分比来定义形状的尺寸;tabindex="...",使用定义过的tabindex元素设置在各个元素之间的焦点获取顺序(使用tab键使元素获得焦点).表格标签:<table></table>,创建一个表格;<tr></tr>,表格中的每一行;<td></td>,表格中一行中的每一个格子;<th></th>,设置表格头:通常是黑体居中文字;<table,cellspacing="">,设置表格格子之间空间的大小;<table,border="">,设置边框的宽度;<table,cellpadding="">,设置表格格子边框与其内部内容之间空间的大小;<table,width="">,设置表格的宽度.用绝对像素值或总宽度的百分比;<table,align="">,设置表格格子的水平对齐方式(left,center,right,justify);<tr,align="">,设置表格格子的水平对齐方式(left,center,right,justify); <tr,valign="">,设置表格格子的垂直对齐方式(baseline,bottom,middle,top); <td,colspan="">,设置一个表格格子跨占的列数(缺省值为1);<td,rowspan="">,设置一个表格格子跨占的行数(缺省值为1);<td,nowrap>,禁止表格格子内的内容自动断行;<CAPTION></CAPTION>,表格的标题;<COLGROUP></COLGROUP>,定义多个列为一组列;<TABLE></TABLE>,创建一个表格;<THEAD></THEAD>,定义表格的页眉;<COL>,定义一个列组中的列,以便对它们能够同时设置有关属性;<TBODY></TBODY>,定义一个表格的实体;<TFOOT></TFOOT>,定义一个表格的页脚;表单标签:<form></form>,创建表单;action="...",接收数据的服务器的URL;method="...",HTTP的方法(get,,post),其中get是被反对使用的;enctype="...",指定MIME(Internet媒体类型);onsubmit="...",当提交表单时发生的内部事件;noreset="...",在重新设置表单时发生的内部事件;target="...",决定把内容显示在什么地方(_blank,_parent,_self,_top)<select,multiple,name="name",size=""></select>,创建滚动菜单,size设置在需要滚动前可以看到的表单项数目;<option>,设置每个表单项的内容;<select,name="name"></select>,创建下拉菜单;<textarea,name="name",cols=40,rows=8></textarea>,创建一个文本框区域,列的数目设置宽度,行的数目设置高度;<input,type="checkbox",name="name">,创建一个复选框,文字在标签后面;<input,type="radio",name="name",value="">,创建一个单选框,文字在标志后面;<input,type=text,name="foo",size=20>,创建一个单行文本输入区域,size设置以字符串的宽度;<input,type="submit",value="name">,创建提交(submit)按钮;<input,type="image",border=0,name="name",src="name.gif">,创建一个使用图象的提交(submit)按钮;<input,type="reset">,创建重置(reset)按钮;<BUTTON></BUTTON>,创建一个按钮;disabled="...",把按钮的状态设置为不能;name="...",按钮的控制名,value="...",按钮的值;type="...",按钮的类型(button,,submit,,reset);<FIELDSET></FIELDSET>,把相互关联的控件组合成一组;<ISINDEX>,提示用户输入;<LABEL></LABEL>,为一个控件提供标签;<LEGEND></LEGEND>,为FIELDSET元素指定一标题;<SELECT></SELECT>,为用户做选择创建各个选项;<TEXTAREA></TEXTAREA>,创建一个允许用户多行输入的区域.表单标签注解:type="...",用于输入控件的类型(text,password,checkbox,radio,submit,reset,file,hidden,image,button); name="...",控件的控制名(要求是除了submit和reset之外的任何名字); value="...",控件的初始值;checked="...",把一个单选钮设置为选中的状态;disabled="...",把控件的状态设置为不能使用;readonly="...",只对输入密码的文本框使用;size="...",表示以像素为单位的除了文本框和密码框控件之外的其它控件的宽度,它是用来指定字符的数目;src="...",一个图像控件的URL;maxlength="...",指定可以输入的最多的字符数目;alt="...",另外一种文本描述;usemap="...",到客户端图形镜像的URL;align="...",被反对.控制对齐方式(left,,center,,right,,justify); tabindex="...",通过定义的tabindex值确定在不同元素之间获得焦点的顺序; onfocus="...",当元素获得焦点时发生的事件;onblur="...",当元素失去焦点时发生的事件;onselect="...",当元素被选中时发生的事件;onchang="...",当元素状态被改变时发生的事件;accept="...",允许上载的文件类型.帧标签(框架标签):<frameset></frameset>,放在一个帧文档的<body>标签之前,也可以嵌在其他帧文档中;<frameset,rows="value,value">,定义一个帧内的行数,可用像素值或高度百分比;<frameset,cols="value,value">,定义一个帧内的列数,可用像素值或宽度百分比;<frame>,定义一个帧内的单一窗或窗区域;<noframes></noframes>,定义在不支持帧的浏览器中显示什么提示;<frame,src="URL">,规定帧内显示的HTML文档;<frame,name="name">,命名帧或区域以便别的帧可以指向它;<frame,marginwidth="">,定义帧左右边缘的空白大小,必须大于等于1;<frame,marginheight="">,定义帧上下边缘的空白大小,必须大于等于1;<frame,scrolling="">,设置帧是否有滚动栏,其值可以是"yes","no",或"auto"; <frame,noresize>,禁止用户调整一个帧的大小;<IFRAME></IFRAME>,创建一个内联的帧;scr="...",定义在帧中显示的内容的来源;frameborder="...",定义帧之间的边界(0或1);align="...",被反对,控制对齐方式(left,,center,,right,,justify);height="...",帧的高度,width="..."帧的宽度;<marquee>...</marquee>,普通卷动;<marquee,behavior=slide>...</marquee>,滑动;<marquee,behavior=scroll>...</marquee>,预设卷动;<marquee,behavior=alternate>...</marquee>,来回卷动;<marquee,direction=down>...</marquee>,向下卷动;<marquee,direction=up>...</marquee>,向上卷动;<marquee,direction=right></marquee>,向右卷动;<marquee,direction='left'></marquee>,向左卷动;<marquee,loop=2>...</marquee>,卷动次数;<marquee,width=180>...</marquee>,设定宽度;<marquee,height=30>...</marquee>,设定高度;<marquee,bgcolor=FF0000>...</marquee>,设定背景颜色;<marquee,scrollamount=30>...</marquee>,设定卷动距离;<marquee,scrolldelay=300>...</marquee>,设定卷动时间;<img,src="">,插入图片,参数有:width="宽",alt="说明文字",height="高",boder="边框".文档整体属性标签:<body,bgcolor="">,设置背景颜色.使用名字或RGB的十六进制值;<body,background="">,设置背景图片;<body,bgsound="">,设置背景音乐;<body,bgproperties="fixed">,固定背景图片(IE适用);<body,text="">,设置文本颜色.使用名字或RGB的十六进制值;<body,link="">,设置链接颜色.使用名,字或RGB的十六进制值;<body,vlink="">,设置已使用的链接的颜色.使用名字或RGB的十六进制值;<body,alink="">,设置正在被击中的链接的颜色.使用名字或RGB的十六进制值; <body,topmargin="">,设置页面的上边距;<body,leftmargin="">,设置页面的左边距.。

10.WebWork UI标签

10.WebWork UI标签

WebWork UI标签一、UI标签概述1、UI组件的组成WebWork是不绑定视图技术的框架,可以使用JSP、Velocity、FreeMarker或者其他支持的方法来编写用户界面。

默认情况下,WebWork仅支持JSP标签的方法来调用UI标签。

WebWork UI标签可以用任何模板语言编写。

●Template一个Template就是一个使用Velocity、JSP或者FreeMarker编写的文件,用来生成HTML标记。

●Theme一个theme就是一套组合在一起的模板,形成一套公用的感观。

●Tag一个tag就是一个JSP标签,用来读取属性并利用属性输出模板。

2、themesTheme定义了布局和风格。

WebWork内置的theme:xhtml、simple、css_xhtml等。

任何一个都可以扩展或复制以制作你的个性化的theme。

二、UI标签通用属性1、通用属性2、id属性除了form标签之外,所有的UI标签都有一个id属性的默认值。

一般建议设置该属性,理由如下:第一点:它让表单的label更紧密地与你的表单结合在一起,因为它指定了for属性。

第二点:可以和JavaScript集成。

如果不指定,默认的值就是[formName]_[elementName]。

三、简单标签1、form标签功能:担当容器的角色。

属性:●action[String]要提交到action的名字●namespace[String]action的命名空间,默认的命名空间取决于当前的request●method[String]POST或GET●target[String]form提交的目标窗口。

一般是框架名、_blank、_top或者任何其他指定的target值●enctype进行文件上传时设置为multipart/form-data●openTemplate默认映射到form.vm●validate用来进行客户端校验默认情况下,name属性的值就是要提交的action的名字。

标准标签库

标准标签库

标准标签库(JSTL)JSP标准标签库(JSP Standard Tag Library,简称JSTL)是一个为实现Web应用程序的常用功能而定制的标记库集,这些功能包括基本输入输出、流程控制、循环、XML文件剖析、数据库查询、国际化和文字格式化的应用等JSTL快速开发安装配置JSTL必须修改web.xml添加8个标签库JSTL快速开发实例核心标签库(Core Tag Library)主要有:表达式相关的标签、流程控制标签、迭代标签和URL 标签核心标签库分类在使用JSTL核心标签库时,必须使用的<%@taglib%>指令如下:<%@ tablib prefix="c" uri="/jsp/jstl/core"%>这条指令声明了将要使用JSTL核心标签库表达式相关标签表达式相关的标签有4个:<c:out> <c:set> <c:remove> <c:catch>。

这4 个标签的属性名称及说明、标签用途以及标签的语法如表例子流程控制标签流程控制标签(Flow Control Tags)同样也有4个:<c:if> <c:choose> <c:when> <:otherwise> 流程控制标签core_flowControl.jsp。

core_flowControl.htm提交表单,core_flowControl.jsp接收表单数据并显示欢迎消息在上面的例子中,首先从网页中传递一个参数username到JSP页面中,然后在JSP页面中分别使用<c:if>、<c:choose>、<c:when>、<c:otherwise>判断输入名字,然后再给出相应的输出。

迭代标签迭代标签(Iterator Tags)有两个:<c:forEach>和<c:forTokens>。

works2简单工程中标签的使用

works2简单工程中标签的使用

works2简单工程中标签的使用works2是一款流行的开源JavaWeb框架,它提供了一些方便的工具和功能来简化Web应用程序的开发。

其中一个重要的功能是标签的使用。

标签是works2框架的一个核心特性,它使开发者可以以一种更简单和更直观的方式来处理Web应用程序的各种业务逻辑和数据展示。

在works2中,标签由标签类来实现,开发者可以自己编写标签类来满足自己的需求,也可以使用works2提供的一些默认标签。

标签类通常包含一个或多个处理方法,这些方法用于生成HTML代码或处理请求。

works2提供了一组标准标签,包括页面标签、表单标签、数据标签等。

这些标签可以用于生成HTML表单、展示数据、控制页面输出等。

在使用works2的标签时,开发者只需要将标签插入到JSP页面中的合适位置,并设置相应的属性,即可实现相应的功能。

在works2中,标签可以分为两类:静态标签和动态标签。

静态标签是在页面加载时就被解析和执行的,而动态标签是在页面动态生成的。

静态标签常用于页面数据的展示。

比如,我们可以使用works2的数据标签来展示数据库中的数据。

通过指定数据标签的属性,我们可以从数据库中查询数据,并将查询结果展示在页面中。

works2的数据标签还提供了一些常用的功能,如分页、排序等,以满足开发者对数据展示的不同需求。

动态标签常用于处理用户输入或执行页面逻辑。

比如,我们可以使用works2的表单标签来生成HTML表单,并将用户的输入数据传递给后台处理。

works2的表单标签提供了一系列的验证功能,开发者只需要简单的配置,就可以实现表单数据的校验、错误信息的提示等功能。

works2的标签使用非常灵活,可以根据开发者的需求进行扩展和定制。

开发者可以编写自己的标签类,满足项目特定的需求。

works2还提供了一些扩展标签的机制,使开发者可以扩展works2的标签库,以增强works2的功能。

总结来说,works2中标签的使用使开发者能够以一种更简单、更直观的方式来处理Web应用程序的各种业务逻辑和数据展示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<ww:elseif />
if标签的反向执行路径. 换言之, 如果前一个if标签的布尔条件是false且本标签的布尔条件是true的话, 就运算标签主体内容.
迭代标签
<ww:iterator /> 在一个集合(collection)上迭代.
<ww:generator />
国际化支持标签: 提供国际化视图支持.
通用标签
<ww:property /> 获取结果的属性值. 如果值未指定, 将返回栈顶值.
<ww:push />
将一个值压入值栈.
<ww:param />
设置父标签的参数. 仅用于其他标签内部, 用于设置父标签某些属性的值.
<ww:set />
将值栈中的某个对象的值设置到一个scope(page, stack, application, session)中. 如果值未给定, 将使用栈顶值. 如果scope未给定, 使用"webwork"的缺省scope.
<ww:url />
构建一个编码的URL.
组件化标签
<ww:form /> 所有其他UI标签的容器
<ww:textfield />
创建一个文本框
<ww:password />
创建一个密码输入框
<ww:textarea />
创建一个文本输入域
<ww:checkbox />
创建一个复选框
<ww:select />
将国际化资源包(resource bundle)放入值栈中, 为text标签使用.
创建一个下拉框
<ww:radio />
创建一组单选按钮
<ww:checkboxlist />
创建一组复选框
<ww:label />
创建一个标签
<ww:hidden />
创建一个隐藏域
<ww:doubleselect />
创建一组相关联的下拉框
WebWork标签库分为七大类:
通用标签: 最常用, 最基本的标签;
组件化标签: 鼓励视图的组件化;
流程控制标签: 在JSP页面中管理控制流程;
迭代标签: 迭代元素并操作可迭代(iterable)的对象;
UI标签: 生成HTML表单字段和控件;
VUI标签: 在WebWork2.0版本之后,VUI 标签已经从WebWork里移除.因为它们在4年中基本没有被使用过;
<ww:combobox />
创建一个下拉输入框(既可以选择下拉框中的选项,也可以自己输入内容)
<ww:component />
创建一个自定义的控件(通过Velocity模版的信息)
国际化标签
<ww:text /> 输出一个经过国际化处理的字符串.
<ww:i18n />
<ww:action /> 在标签库的上下文环境中执行一个活动. 标签的主体用来显示活动执行的结果.
<ww:bean />
创建一个JavaBean, 初始化它的属性并放入ActionContext以便后续使用.
<ww:include />
包含另一个页面或活动.
流程控制标签 生成迭代器(Itera Nhomakorabeaor).
<ww:append />
添加几个迭代器.
<ww:subset />
获取一个迭代器的子集.
<ww:merge />
合并几个迭代器.
<ww:sort />
对迭代器进行排序.
UI标签
UI标签包装了HTML控件以便与核心框架紧密集成. 这些标签设计目标是最小化代码中的逻辑部分, 并用一个模版系统代理最终的HTML绘制. UI标签试图覆盖最普遍的情景(scenario), 并提供了一个component标签以创建定制组件. UI标签还内建支持显示内嵌的
这个if-else的标签集合就像if-else脚本一样.
<ww:if /> 有条件执行路径. 换言之, 如果布尔条件是true的话, 就运算标签主体内容.
<ww:else />
if标签的反向执行路径. 换言之, 如果前一个if标签的布尔条件是false的话, 就运算标签主体内容.
相关文档
最新文档