免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
页面与代码分离这一特性如何在JSP源码中得以实现呢?那么本文将给你一个答案。在传统的JSP源码程序中,页面与代码分离还不是很普遍的应用我们将HTML代码与Java代码混合在一起编写,这样虽然方便,但同时也导致页面难以维护,HTML开发人员和JSP开发人员负担加重,我们可以将这种传统的技术成为页面拉数据技术。怎样才能做到将HTML源码开发和JSP源码开发分离呢?答案就是使用Tag技术,通过使用Tag技术,我们就可以实现页面与代码分离,在需要数据的地方,大家先约定好标签,然后由Tag的后台处理程序去替换这些标签,显示数据。我称这种技术叫做向页面推数据,页面只要定义好格式就行了。这样,我们可以让HTML开发人员专注于页面的外观,而Java程序员则不用理会页面显示,专注于后台程序,大大提高了程序的可维护性和方便性。便于各程序员之间的协作开发。首先你要懂一些Tag技术,然后才能阅读本文。下面是样例程序:一、替换字符串的replace函数通过这个函数的使用来开始我们的页面与代码分离。1. /替换字符串函数 2. /StringstrSource-源字符串 3. /StringstrFrom-要替换的子串 4. /StringstrTo-替换为的字符串 5. publicstaticStringreplace(StringstrSource,StringstrFrom,StringstrTo) 6. 7. /如果要替换的子串为空,则直接返回源串 8. if(strFrom=null|strFrom.equals() 9. returnstrSource; 10. StringstrDest=; 11. /要替换的子串长度 12. intintFromLen=strFrom.length(); 13. intintPos; 14. /循环替换字符串 15. while(intPos=strSource.indexOf(strFrom)!=-1) 16. 17. /获取匹配字符串的左边子串 18. strDeststrDest=strDest+strSource.substring(0,intPos); 19. /加上替换后的子串 20. strDeststrDest=strDest+strTo; 21. /修改源串为匹配子串后的子串 22. strSourcestrSource=strSource.substring(intPos+intFromLen); 23. 24. /加上没有匹配的子串 25. strDeststrDest=strDest+strSource; 26. /返回 27. returnstrDest; 28. 29. 二、Tld文(MyBookTag.tld) 定义你的标签标签的定义也是在JSP源码中实现页面与代码分离的重要一步。30. ?xmlversion=1.0encoding=ISO-8859-1? 31. !DOCTYPEtaglib 32. PUBLIC-/SunMicrosystems,Inc./DTDJSPTagLibrary1.2/EN 33. /dtd/web-jsptaglibrary_1_2.dtd 34. taglib 35. tlib-version1.0/tlib-version 36. jsp-version1.2/jsp-version 37. short-name/short-name 38. tag 39. nameListBook/name 40. tag-classcom.book.taglib.ListBookTag/tag-class 41. body-contentJSP/body-content 42. /tag 43. /taglib 44. 三、Tag的后台处理文件,负责解释标签(ListBookTag.java)45. packagecom.book.taglib; 46. 47. importjava.util.*; 48. importjava.lang.*; 49. 50. importcom.book.model.bookmodel; 51. importcom.book.utils.StringHelper; 52. 53. importjavax.servlet.jsp.JspTagException; 54. importjavax.servlet.jsp.tagext.BodyTagSupport; 55. importjavax.servlet.jsp.tagext.BodyContent; 56. importjavax.servlet.jsp.PageContext; 57. importjavax.servlet.jsp.JspWriter; 58. importjavax.servlet.ServletRequest; 59. 60. publicclassListBookTagextendsBodyTagSupport 61. 62. /标志开始位置执行 63. publicintdoStartTag() 64. returnEVAL_BODY_BUFFERED; 65. 66. /标志结束位置执行 67. publicintdoEndTag()throwsJspTagException 68. intmax=0; 69. StringListBody=null; 70. intnumber=1; 71. /获取页码信息,也就是request对象中的内容 72. StringserialNo=pageContext.getRequest().getParameter(serialNo); 73. /转换为整数 74. try 75. number=Integer.parseInt(serialNo); 76. 77. catch(Exceptione) 78. number=1; 79. 80. if(number1) 81. number=1; 82. /获取保存在Session中的数据集,当然这里也可以从数据库中取数据 83. VectorbookVector=(Vector)pageContext.getSession().getAttribute(bookVector); 84. if(number*10bookVector.size() 85. max=number*10; 86. else 87. max=bookVector.size(); 88. if(bookVector.size()0) 89. /获取标签内部的内容 90. BodyContentbc=getBodyContent(); 91. for(inti=(number-1)*10;imax;i+) 92. /获取一条记录 93. bookmodelmodel=(bookmodel)bookVector.get(i); 94. if(model=null) 95. model=newbookmodel(); 96. /替换内容(就是在这里输出数据的,替换) 97. Stringbody=bc.getString(); 98. body=StringHelper.replace(body,$_SerialNo,model.getBookid(); 99. body=StringHelper.replace(body,$_BookName,model.getBookname(); 100. body=StringHelper.replace(body,$_Author,model.getAuthor(); 101. body=StringHelper.replace(body,$_PHouse,model.getPhouse(); 102. body=StringHelper.replace(body,$_Price,model.getPrice().toString(); 103. body=StringHelper.replace(body,$_index,Integer.toString(i); 104. /向页面输出 105. try 106. pageContext.getOut().print(body); 107. 108. catch(Exceptione) 109. 110. 111. 112. 113. returnEVAL_PAGE; 114. 115. 116. 四、页面JSP源码(BookList.jsp)至此我们可以操作JSP来实现页面与代码分离。117. %pagecontentType=text/html;charset=GBK% 118. %tagliburi=/MyBookTagprefix=MyBookTag% 119. html 120. head 121. title一个基于J2EE的图书DEMO/title 122. 123. scriptlanguage=javascript 124. functionreturnBack() 125. document.form1.action=BookAdmin.jsp; 126. 127. /script 128. 129. /head 130. bodybgcolor=#FFFFFFtext=#000000leftmargin=0topmargin=0 131. 132. 133. h2align=centerfontface=黑体color=#0000CC图书列表/font/h2 134. formname=form1method=post 135. tablewidth=750border=1cellspacing=0align=centercellpadding=3bordercolor=#A5ABB6bordercolordark=#ffffff 136. tralign=center 137. tdwidth=100bgcolor=FEFBF4height=41序号/td 138. tdwidth=200bgcolor=FEFBF4height=41图示名称/td 139. tdwidth=100bgcolor=FEFBF4height=41图书作者/td 140. tdwidth=200bgcolor=FEFBF4height=41出版社/td 141. tdwidth=50bgcolor=FEFBF4height=41图书价格/td 142. tdwidth=100bgcolor=FEFBF4height=41操作/td 143. /tr 144. !-这里使用标签技术,如果不用,就麻烦了,相信您一定有感触- 145. MyBookTag:ListBook 146. tralign=center 147. tdwidth=100height=19$_SerialNo/td 148. tdwidth=200height=19$_BookName/td 149. tdwidth=100$_Author/td 150. tdwidth=200$_PHouse/td 151. tdwidth=50height=19$_Price/td 152. tdwidth=100height=19align=left 153. ahref=bookEditTable.jsp?ItemNo=$_index 154. fontcolor=#0000CC编辑/font 155. /a 156. |ahref=bookview.jsp?ItemNo=$_index 157. fontcolor=#FF0000查看/font 158. /a 159. /td 160. /tr 161. /MyBookTag:ListBook 162. 163. /table 164. tablewidth=400border=0 16
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年汕尾市遴选公务员笔试真题汇编及答案解析(夺冠)
- 2025云南昆明富民县人民医院招聘编外合同制人员11人备考题库附答案解析(夺冠)
- 2025年农业大数据平台建设项目可行性研究报告
- 2023年三明市遴选公务员考试真题汇编附答案解析(夺冠)
- 2023年广元市遴选公务员考试真题汇编带答案解析
- 2023年克拉玛依市直属机关遴选公务员考试真题汇编带答案解析
- 2023年上海市选调公务员笔试真题汇编附答案解析
- 2025年户外运动休闲服务项目可行性研究报告
- 2023年伊春市税务系统遴选考试真题汇编含答案解析(夺冠)
- 安全管理领域安全员面试经典案例分析
- 2025年国企央企笔试题库及答案
- 2025年河北省健康体检主检医师题库
- 12S522混凝土模块式排水检查井图集
- 大型保险公司合规经营红线培训课件
- COSO-ERM-Presentation-September-2017原版完整详细
- 人教版英语九年级unit12全单元课件
- 高血压脑出血的外科治疗课件
- 回转窑拆除方案
- 金融科技合规实务课件(完整版)
- 中医气功学导论期末试卷附答案
- 新课程改革下农村中小学学生学习方式研究
评论
0/150
提交评论