Struts中的标签库.docx
- 文档编号:9277224
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:51
- 大小:259.28KB
Struts中的标签库.docx
《Struts中的标签库.docx》由会员分享,可在线阅读,更多相关《Struts中的标签库.docx(51页珍藏版)》请在冰豆网上搜索。
Struts中的标签库
Struts中的标签库
一、标签库概述
1、为什么要使用标签库
●Scriptlet脚本
Scriptlet脚本对于快而杂(fast-and-dirty)的编码来说是一种不错的选择,但scriptlet会用Java代码将各种类型的HTML混杂在一起,从而使得程序的调试和设计极其错综复杂。
同时scriptlet也不能重用,这常常导致开发者不得不在JSP页面之间进行复制-粘贴操作,进而导致同一段代码出现多个版本。
而且,scriptlet还加大了错误处理的难度,因为JSP没有提供干净利落的方式来报告脚本错误。
●表示层与业务业务层完全分离
在Struts中为了倡导表示层与业务业务层完全分离,提供了一系列的标签库以代表一些通用的功能。
2、在Struts中提供了如下几类的标签库
●Bean标记:
用来在JSP页中管理bean
●逻辑标记:
用来在JSP页中控制流程
●HTML标记:
用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程
●模板标记:
使用动态模板构造普通格式的页
3、应用要点
对Struts的标签库的使用还是需要小心,不必完全使用Struts的标签库,个人感觉Struts这种替代Html语句的标签库有一种牵强附会,给使用者掌握带来难度。
使用者除熟悉html外,还必须理解Struts的对应标签库用法!
二、Struts中的HTML标签库
1、概述
(1)Struts中的HTML标签库
Struts中的HTML中的标签库能够完成标准的HTML标签相同的功能,在Struts中倡导使用HTML标签库的主要原因是,这些标签可以和Struts中的其它组件特别是ActionForm保持协调。
因为,Struts可以将表单中的各个成员域影射到ActionForm中的成员数据。
在Struts中的HTML标签库大致分为如下的几类:
●用于生成基本的HTML元素的标签
●用于生成HTML表单的标签
●显示错误或者正常消息的标签
(2)以下提供常见HTML标记和Struts相对比较表单:
HTMLTag
StrutsEquivalent
StrutsAddedBenefit
html>
html>
Addslocalesupportforinternationalization
img> Addscapabilitytoloadfromalttextandimagefrommessageresourcesfile base> 自动插入Web程序的URL地址 link> link> Allowsthelinktobeloadedfromtherequestorotherbean (3)常见HTML表单输入项和Struts实例 常见HTML表单输入项和Struts实例 Function HTMLTag StrutsEquivalent Textfield name = "myname" size = "20"> text property = "myname" size = "20" /> Textarea type = "textarea" cols = "50" rows = "4" name = "mytarea" > textarea property = "mytarea" cols = "50" rows = "4"> Radiobutton name = "rad1" value = "sel1"> radio property = "rad1" value = "sel1"> Checkbox name = "chk1" value = " sel1"> checkbox property = " chk1" value = "sel1"> SubmitButton value = "Submit" property = "Submit"> submitSubmit> submit> Resetbutton reset/> Selectionboxandoptions Item 1 select property ="item"> option value="i1"> Item 1 option> select> 2、用于生成基本的HTML元素的标签 (1)主要包括 html>和 base> (2) html> 它是HTML标签库中最容易的标签。 它有三个属性: locale和xhtml和lang属性。 如: htmllang=”true”>将被转化为 (3) base> 只有当这个标签是内嵌在一个head标签部分时,它才有效生成HTML的 3、 link>创建超链接 (1) link>的优点 生成HTML的标签,利用它来创建超链接有两个优点: ●允许在URL中以多种方式包含请求的参数; ●同时在用户关闭Cookie时,会采用URL重写把SessionID作为请求的参数包含在URL中,用于跟踪用户的Session状态。 ●可以实现利用Action类来进行后端的业务组件的调度 (2)它有如下几个重要的属性 ●forward: 指定全局转发的链接 首先在Struts的配置文件的 然后在JSP页面中创建出 link>标签 linkforward="index"> LinktoGlobalActionForward link> ●href: 指定完整的URL链接 linkhref="http: //jakarta.apache.org/struts/index.html"> Generatean"href"directly link> ●page: 指定相对于当前网页的URL链接 linkpage="/HtmlBasic.do"> Arelativelinkfromthispage link> (3)在 link>中的URL或者URI中包含单个请求的参数变量,而它的参数的值存储在当前的网页可访问的一个变量中 例一 <% StringstringBean="ValuetoPassonURL"; %> linkpage="/HtmlBasic.do"paramId="urlParamName"paramName="stringBean"> URLencodeaparameterbasedonastringbeanvalue link> 例二 useBeanid="customerBean"scope="page"class="htmltaglibs.beans.CustomerBean"/> setPropertyname="customerBean"property="name"value="weiqin"/> linkpage="/HtmlBasic.do"paramId="urlParamName"paramName="customerBean"paramProperty="name"> URLencodeaparameterbasedonacustomerbeanvalue link> 上面的意思是: http: //127.0.0.1: 8080/htmltaglibs/HtmlBasic.do? urlParamName=weiqin 而名称为urlParamName的参数的值是由对象名称为customerBean的JavaBean中的名称为“name”的属性值。 (4)在 link>中的URL或者URI中包含多个请求的参数,此时应该将各个参数变量保存到一个Map类型的Java类中。 <% java.util.HashMapmyMap=newjava.util.HashMap(); myMap.put("myString",newString("myStringValue")); myMap.put("myArray",newString[]{"str1","str2","str3"}); pageContext.setAttribute("map",myMap); %> linkpage="/HtmlBasic.do"name="map"> 根据Map中的参数对URL进行编码 link> 最后产生如下的效果: http: //127.0.0.1: 8080/htmltaglibs/HtmlBasic.do? myArray=str1&myArray=str2&myArray=str3&myString=myStringValue。 请见下面的图示 例: <% java.util.HashMapqueryParamMap=newjava.util.HashMap(); queryParamMap.put("menuID","5"); queryParamMap.put("bookID",newInteger(bookID).toString()); queryParamMap.put("currentShowPage",newInteger(getShowGuideBarParamBeanID.getCurrentShowPage()).toString()); pageContext.setAttribute("queryParamMapName",queryParamMap); %> linkpage="/BuyBook/buyBookURI.do"name="queryParamMapName"styleClass="gray">购买 link> 将产生下面的超链接 menuID=5¤tShowPage=1&bookID=571"class="gray">购买 4、 img> (1)作用 生成HTML的 (2)最重要的属性 ●page: 图象文件相对于模块的路径;前面必须带有一个斜线。 ●height: 图象的高度。 ●width: 图象的宽度。 ●alt: 如果找不到图象,显示的文本。 (3)示例 例如: imgpage="/logo.gif"height="50"width="200"alt="CompanyLogo"/> 会转换成: 5、基本的表单标签 (1)综述 所有可以在 属性 描述 onblur 字段失去了焦点 onchange 字段失去了焦点并且数值被更改了 onclick 字段被鼠标点击 ondblclick 字段被鼠标双击 onfocus 字段接收到输入焦点 onkeydown 字段拥有焦点并且有键按下 onkeypress 字段拥有焦点并且有键按下并释放 onkeyup 字段拥有焦点并且有键被释放 onmousedown 鼠标指针指向字段并且点击 onmousemove 鼠标指针指向字段并且在字段内移动 onmouseout 鼠标指针指向控件,但是指针在元素外围移动 onmouseover 鼠标指针没有指向字段,但是指针在元素内部移动 onmouseup 鼠标指针指向字段,并且释放了鼠标按键 如: buttonproperty="register"value="注册"style="botton1"onclick="location='/UserManage/userregister.jsp'"/> (2) form>标记属性如下: 属性 描述 Action 与表单相关的操作。 在配置中,这个操作也用来标识与表单相关的ActionFormbean Enctype 表单HTTP方法的编码类型 Focus 表单中需要初始化焦点的字段 Method 表单使用的HTTP方法 Name 与表单相关的ActionFormbean的名称。 如果没有设置这个属性,bean的名称将会从配置信息中获得 onreset 表单复位时的JavaScript事件句柄 onsubmit 表单提交时的JavaScript事件句柄 Scope 搜索ActionFormbean的范围。 如果没有设置,将从配置文件中获取 Style 使用的格式 styleClass 这个元素的格式表类 Type ActionFormbean的完整名称。 如果没有设置,将从配置文件获得 (3)Form标签的使用要求 在该标签中必须包含一个action属性,它是这个标签中唯一必需的属性。 如果不具备该属性则JSP页面会抛出一个异常。 之后你必须给这个action属性指定一个有效值。 如果你有这样一个标签: formaction="/login">,那么你的Struts配置文件的元素中必须有一个如下显示为粗体的元素: input="/login.jsp"> (4)其它的应用 使用focus属性时你需要给它指定元素的名称。 比如,以下代码是定焦在第二个Text元素上的: formaction="/login"focus="password"> UserName: textproperty="userName"/> textproperty="password"/> submit/> form> (5)查看某一个标签的各个属性 只需要查看其对应的*.tld文件中的声明 6、 cancel>标签 (1)作用 利用它可以生成“取消”按钮,用户按下该按钮后将产生一个取消事件,这个事件由Action类来处理,但如何处理则由我们在execute()方法中编程实现。 (2) cancel>标签所对应的HTML标签 cancel>Cancel cancel> 将生成如下的HTML标签内容 (3)在Action类中处理“取消”按钮的事件---请见JBXStruts项目 publicActionForwardexecute(ActionMappingactionMapping,ActionFormactionForm,HttpServletRequesthttpServletRequest,HttpServletResponsehttpServletResponse) { if(this.isCancelled(httpServletRequest)) { return(actionMapping.findForward("cancelDo")); } } Action类中的isCancelled()方法用来判断取消事件有没有发生,如果这个方法的返回为true,就表示取消事件发生了,可以在程序中进行相关的操作。 7、 该标签中的一个很重要的属性是“redisplay”,它用于重新显示以前输入到这个区域中的值。 该属性的缺省值为true。 然而,为了使password不能被重新显示,你或许希望将该属性的值设为false。 例如: passwordproperty="password"redisplay="false"/> 8、Checkbox和RadioButton按钮 (1)Checkbox按钮 checkboxproperty="checkbox1"/>对于Checkbox而言,由于其属性为true和false。 因此在ActionForm中的成员属性定义时应该定义为boolean类型。 (2)RadioButton按钮 而 radioproperty="radioVal"value="Value1"/>由于其返回的值为字符串(它必须包含“value”属性),因此在ActionForm中的成员属性定义时应该定义为String类型。 (3)ActionForm中的属性定义 privatebooleancheckbox1; publicbooleangetCheckbox1() { returnthis.checkbox1; } publicvoidsetCheckbox1(booleancheckbox1) { this.checkbox1=checkbox1; } privateStringradioVal=""; publicStringgetRadioVal() { return(this.radioVal); } publicvoidsetRadioVal(StringradioVal) { this.radioVal=radioVal; } 9、Multibox标签 (1)Multibox与checkbox的不同 它与 checkbox>一样,可以提供 multibox>标签可以生成一组复选框,代表一组概念中的各个项目并且可以实现多选。 比如 ●对于checkbox而言,每个checkbox的属性名称都不一样 读书: checkboxproperty="checkbox1"/> 运动: checkboxproperty="checkbox2"/> ●对于 multibox>标签而言,每个checkbox的属性名称都一样 您的爱好: multiboxproperty="intestring"value="读书"/>读书 multiboxproperty="intestring"value="运动"/>运动 multiboxproperty="intestring"value="艺术"/>艺术 (2)应用场合 如果应用中有多个Checkbox并且希望在ActionFormBean中用单个数组来表示它们,就可以采用 multibox>。 (3)在ActionForm中的属性定义 针对上面的 multibox>标签的ActionForm中的成员属性定义为一个数组(必须是数组这样才可以实现多选的效果),该数组的名称为标签中的成员属性名称。 privateString[]intestring; publicString[]getIntestring() { returnintestring; } publicvoidsetIntestring(String[]intestring) { this.intestring=intestring; } 当用户提交表单时,所有被选中的复选框的值都会被存放到ActionFormBean中的相应数组中。 如果某个复选框没有被选中,那么数组就不会包含它的值。 因此它可以动态地决定被选中的复选框的数目。 (3)显示出用户的选择项目 您的爱好为: <% String[]intestring=(String[])request.getAttribute("intestring"); for(intindex=0;index {//考虑到有中文,应该进行转换编码格式 out.print(newString(intestring[index].getBytes("ISO-8859-1"),"GB2312")+"、"); } %> 10、 select>和 option>、 options> (1)作用 利用它可以创建出下拉列表(可以是单选或者多选),同时在 select>内可以包含多个 option>、 options>和
标签以实现在页面中内嵌图片
Password:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts 中的 标签
![提示](https://static.bdocx.com/images/bang_tan.gif)