页面与代码分离这一特性如何在 JSP 源码中得以实现呢?那么本文将给你一个答案. 在传统的 JSP 源码程序中, 页面与代码分离还不是很普遍的应用我们将 HTML 代码与 Java 代码混合在 一起编写,这样虽然方便,但同时也导致页面难以维护,HTML 开发人员和 JSP 开发人员负担加重,我们 可以将这种传统的技术成为页面拉数据技术. 怎样才能做到将
HTML 源码开发和 JSP 源码开发分离呢?答案就是使用 Tag 技术, 通过使用 Tag 技术, 我们就可以实现页面与代码分离,在需要数据的地方,大家先约定好标签,然后由 Tag 的后台处理程序去 替换这些标签,显示数据.我称这种技术叫做向页面推数据,页面只要定义好格式就行了.这样,我们可 以让 HTML 开发人员专注于页面的外观,而
Java 程序员则不用理会页面显示,专注于后台
程序,大大提高 了程序的可维护性和方便性.便于各程序员之间的协作开发. 首先你要懂一些 Tag 技术,然后才能阅读本文.下面是样例程序: 一,替换字符串的 replace 函数 通过这个函数的使用来开始我们的页面与代码分离.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. } } // 加上没有匹配的子串 strDeststrDest = strDest + strSource; // 返回 return strDest; // 替换字符串函数 // String strSource - 源字符串 // String strFrom // String strTo - 要替换的子串 - 替换为的字符串
public static String replace(String strSource, String strFrom, String strTo) { // 如果要替换的子串为空,则直接返回源串 if(strFrom == null || strFrom.equals("")) return strSource; String strDest = ""; // 要替换的子串长度 int intFromLen = strFrom.length(); int intPos; // 循环替换字符串 while((intPos = strSource.indexOf(strFrom)) != -1) { // 获取匹配字符串的左边子串 strDeststrDest = strDest + strSource.substring(0,intPos); // 加上替换后的子串 strDeststrDest = strDest + strTo; // 修改源串为匹配子串后的子串 strSourcestrSource = strSource.substring(intPos + intFromLen);
29.
二,Tld 文(MyBookTag.tld) 定义你的标签 标签的定义也是在 JSP 源码中实现页面与代码分离的重要一步.
30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. <?
xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD
JSP Tag Library 1.2//EN" "java.sun/dtd/
web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name></short-name> <tag> <name>ListBook</name> <tag-class>com.book.taglib.ListBookTag</tag-class> <body-content>JSP</body-content> </tag> </taglib>
的后台处理文件,负责解释标签(ListBookTag.java) 三,Tag 的后台处理文件,负责解释标签
45. 46. 47. 48. 49. 50. 51. 52. 53. 54.
55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. } // 标志开始位置执行 public int doStartTag(){ return EVAL_BODY_BUFFERED; public class ListBookTag extends BodyTagSupport { import javax.servlet.jsp.JspTagException; import javax.servlet.jsp.tagext.BodyTagSupport; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.PageContext; import javax.servlet.jsp.JspWriter; import javax.servlet.ServletRequest; import com.book.model.bookmodel; import com.book.utils.StringHelper; import java.util.*; import java.lang.*; package com.book.taglib;
66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. "); 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. )); 103. 104. 105. 106. 107.
// 标志结束位置执行 public int doEndTag