ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:37.52KB ,
资源ID:5688927      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5688927.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(struts2自定义标签.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

struts2自定义标签.docx

1、struts2自定义标签Struts2中实现自定义分页标签 Struts2中实现自定义标签很简单,主要分为3步: 1.创建taglib文件(.tld),编写标签声明。 2.编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不需要Struts2的支持,一般情况下,只需要继承javax.servlet.jsp.tagext.BodyTagSupport类,重写doStartTag,doEndTag等方法即可。这里在实现自定义标签时,继承的2个类分别是org.apache.struts2.views.jsp.ComponentTagSupp

2、ort和ponents.Component,ComponentTagSupport实际上是对BodyTagSupport的一次封装,看一下ComponentTagSupport类的继承关系就明了了:Java代码 1. java.lang.Object 2. extendedbyjavax.servlet.jsp.tagext.TagSupport 3. extendedbyjavax.servlet.jsp.tagext.BodyTagSupport 4. extendedbyorg.apache.struts2.views.jsp.StrutsBodyTagSupport 5. extend

3、edbyorg.apache.struts2.views.jsp.ComponentTagSupportjava.lang.Objectextended by javax.servlet.jsp.tagext.TagSupportextended by javax.servlet.jsp.tagext.BodyTagSupportextended by org.apache.struts2.views.jsp.StrutsBodyTagSupportextended by org.apache.struts2.views.jsp.ComponentTagSupport继承ComponentTa

4、gSupport类是为了获得标签中的属性值,并包装成Component对象。继承Component类是为了从Struts2中的ValueStack中获得相对应的值。1.声明自定义标签。首先,需要创建一个tld文件,这是一个标准的XML文件,这个文件中就包含有对自定义标签的声明,声明指出了标签的名字,实现标签的类,标签的属性等信息。当在页面中使用该标签时,web服务器就会从这个文件中找出相对应的标签类,并实例化后执行。这个文件其实与struts.xml文件的作用相类似。tangs.tldXml代码 1. 2. !DOCTYPEtaglibPUBLIC-/SunMicrosystems,Inc./

5、DTDJSPTagLibrary1.2/EN1. 2. 3. 2.2.34. 1.25. tangs6. /tangs7. TangsTags8. 9. 10. pages11. com.tangs.tag.PageTag/标签类 12. empty13. /标签中的属性 14. cpage/属性名 15. true/是否必须 16. true/表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定 17. 18. 19. total20. true21. true22. 23. 24. url25. true26. true27. 28. 29. !DOCTYPE taglib PUB

6、LIC -/Sun Microsystems, Inc./DTD JSP Tag Library 1.2/EN 2.2.31.2tangs/tangsTangs Tagspagescom.tangs.tag.PageTag /标签类empty /标签中的属性cpage /属性名true /是否必须true /表示该自定义标签的某属性的值可以直接指定或者通过动态计算指定totaltruetrueurltruetrue2.编写标签类PageTag.javaJava代码 1. packagecom.tangs.tag; 2. 3. importcom.opensymphony.xwork2.util

7、.ValueStack; 4. importjavax.servlet.http.HttpServletRequest; 5. importjavax.servlet.http.HttpServletResponse; 6. importponents.Component; 7. importorg.apache.struts2.views.jsp.ComponentTagSupport; 8. 9. /* 10. *分页标签 11. *authortangs 12. */13. publicclassPageTagextendsComponentTagSupport 14. privateS

8、tringcpage;/当前页 15. privateStringtotal;/总页数 16. privateStringurl;/请求地址 17. 18. publicvoidsetCpage(Stringcpage) 19. this.cpage=cpage; 20. 21. 22. publicvoidsetTotal(Stringtotal) 23. this.total=total; 24. 25. 26. publicvoidsetUrl(Stringurl) 27. this.url=url; 28. 29. 30. Override31. publicComponentgetB

9、ean(ValueStackarg0,HttpServletRequestarg1,HttpServletResponsearg2) 32. returnnewPages(arg0);/返回PagesComponent,分页的逻辑处理都在这个Component中 33. 34. 35. /获得参数 36. protectedvoidpopulateParams() 37. super.populateParams(); 38. 39. Pagespages=(Pages)component; 40. pages.setCpage(cpage); 41. pages.setTotal(total

10、); 42. pages.setUrl(url); 43. 44. package com.tangs.tag;import com.opensymphony.xwork2.util.ValueStack;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import ponents.Component;import org.apache.struts2.views.jsp.ComponentTagSupport;/* 分页标签* author tangs*/pu

11、blic class PageTag extends ComponentTagSupport private String cpage; /当前页private String total; /总页数private String url; /请求地址public void setCpage(String cpage) this.cpage = cpage;public void setTotal(String total) this.total = total;public void setUrl(String url) this.url = url;Overridepublic Compone

12、nt getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) return new Pages(arg0); /返回Pages Component,分页的逻辑处理都在这个Component中/获得参数protected void populateParams() super.populateParams();Pages pages = (Pages)component;pages.setCpage(cpage);pages.setTotal(total);pages.setUrl(url); Pag

13、es.javaJava代码 1. packagecom.tangs.tag; 2. 3. importcom.opensymphony.xwork2.util.ValueStack; 4. importjava.io.IOException; 5. importjava.io.Writer; 6. importjava.util.logging.Level; 7. importjava.util.logging.Logger; 8. importponents.Component; 9. 10. /* 11. *分页逻辑Bean 12. *authortangs 13. */14. publi

14、cclassPagesextendsComponent 15. privateStringcpage; 16. privateStringtotal; 17. privateStringurl; 18. 19. publicStringgetCpage() 20. returncpage; 21. 22. 23. publicvoidsetCpage(Stringcpage) 24. this.cpage=cpage; 25. 26. 27. publicStringgetTotal() 28. returntotal; 29. 30. 31. publicvoidsetTotal(Strin

15、gtotal) 32. this.total=total; 33. 34. 35. publicStringgetUrl() 36. returnurl; 37. 38. 39. publicvoidsetUrl(Stringurl) 40. this.url=url; 41. 42. 43. 44. publicPages(ValueStackarg0) 45. super(arg0); 46. 47. 48. Override49. publicbooleanstart(Writerwriter) 50. booleanresult=super.start(writer); 51. try

16、 52. StringBuilderstr=newStringBuilder(); 53. booleanisValid=true; 54. 55. /从ValueStack中取出数值 56. if(isValid) 57. if(total.startsWith(%)&total.endsWith() 58. total=total.substring(2,total.length()-1); 59. total=(String)this.getStack().findValue(total); 60. isValid=total=null?false:true; 61. else 62.

17、isValid=false; 63. 64. 65. if(isValid) 66. if(cpage.startsWith(%)&cpage.endsWith() 67. cpage=cpage.substring(2,cpage.length()-1); 68. cpage=(String)this.getStack().findValue(cpage); 69. isValid=cpage=null?false:true; 70. else 71. isValid=false; 72. 73. 74. if(isValid) 75. if(url.startsWith(%)&url.en

18、dsWith() 76. url=url.substring(2,url.length()-1); 77. url=(String)this.getStack().findValue(url); 78. isValid=url=null?false:true; 79. else 80. isValid=false; 81. 82. 83. 84. if(isValid) 85. IntegercpageInt=Integer.valueOf(cpage); 86. /当前页与总页数相等 87. if(cpage.equals(total) 88. /如果total=1,则无需分页,显示“第1页共1页” 89. if(1.equals(total) 90. str.append(第+cpage+页); 91. str.append(共+total+页); 92. else 93. /到达最后一页,显示“首页上一页末页” 94. str.append(首页上一页ahref=); 101. str.append(url); 102. str.append(?cpage=+total+&total=+total+&url=+url);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1