网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网站开发-> JSP技术-> html与jsp开发分离技术

html与jsp开发分离技术
作者:佚名 来源:InterNet 加入时间:2005-3-25
相关文章
  • jsp连接数据库大全
  • Jsp如何实现网页的重定向
  • 编写线程安全的JSP程序
  • 用缓冲技术提高JSP应用的性能和稳定性
  • Jsp结合XML+XSLT将输出转换为Html格式
  • JSP数据库连接池的必要性
  • 在JSP页面中实现检索数据的分页显示
  • 在jsp中作HTTP认证的方法
  • JSP通过JDBC与Oracle相连
  • 通过Jsp发送动态图像
  • 相关书籍:
  • JSP数据库开发实例精粹
  • JSP软件工程案例精解
  • JSP语法
  • JSP数据库编程指南
  • JSP由浅入深
  •  在传统的JSP程序中,我们将HTML代码与Java代码混合在一起编写,这样虽然方便,但同时也导致页面难以维护,HTML开发人员和JSP开发人员负担加重,我们可以将这种传统的技术成为页面拉数据技术。

        怎样才能做到将HTML开发和JSP开发分离呢?答案就是使用Tag技术,通过使用Tag技术,我们就可以在页面程序中不出现JSP代码,在需要数据的地方,大家先约定好标签,然后由Tag的后台处理程序去替换这些标签,显示数据。我称这种技术叫做向页面推数据,页面只要定义好格式就行了。这样,我们可以让HTML开发人员专注于页面的外观,而Java程序员则不用理会页面显示,专注于后台程序,大大提高了程序的可维护性和方便性。便于各程序员之间的协作开发。

        首先你要懂一些Tag技术,然后才能阅读本文。下面是样例程序:

    一、首先是替换字符串的replace函数

      // 替换字符串函数
      // 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)
          {
              // 获取匹配字符串的左边子串
              strDest = strDest + strSource.substring(0,intPos);
              // 加上替换后的子串
              strDest = strDest + strTo;
              // 修改源串为匹配子串后的子串
              strSource = strSource.substring(intPos + intFromLen);
          }
          // 加上没有匹配的子串
          strDest = strDest + strSource;
          // 返回
          return strDest;
      }

    二、Tld文(MyBookTag.tld) 定义你的标签


    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE taglib
            PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
            "http://java.sun.com/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>

    三、Tag的后台处理文件,负责解释标签(ListBookTag.java)

    package com.book.taglib;

    import java.util.*;
    import java.lang.*;

    import com.book.model.bookmodel;
    import com.book.utils.StringHelper;

    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;

    public class ListBookTag extends BodyTagSupport {

       // 标志开始位置执行
       public int doStartTag(){
         return EVAL_BODY_BUFFERED;
       }
       // 标志结束位置执行
       public int doEndTag()throws JspTagException {
         int max = 0;
         String ListBody = null;
         int number = 1;
        // 获取页码信息,也就是request对象中的内容
         String serialNo = pageContext.getRequest().getParameter("serialNo");
        // 转换为整数
         try{
           number = Integer.parseInt(serialNo);
         }
         catch(Exception e){
           number = 1;
         }
         if (number < 1)
             number = 1;
         // 获取保存在Session中的数据集,当然这里也可以从数据库中取数据
         Vector bookVector = (Vector)pageContext.getSession().getAttribute("bookVector");
         if(number*10<bookVector.size())
             max = number*10;
         else
             max = bookVector.size();
         if(bookVector.size()>0){
             // 获取标签内部的内容
             BodyContent bc = getBodyContent();
             for (int i = (number - 1) * 10; i < max; i++) {
               // 获取一条记录
               bookmodel model = (bookmodel) bookVector.get(i);
               if (model == null)
                 model = new bookmodel();
               // 替换内容(就是在这里输出数据的,替换)
               String body = bc.getString();
               body = StringHelper.replace(body, "$_SerialNo", model.getBookid());
               body = StringHelper.replace(body, "$_BookName", model.getBookname());
               body = StringHelper.replace(body, "$_Author",  model.getAuthor());
               body = StringHelper.replace(body, "$_PHouse", model.getPhouse());
               body = StringHelper.replace(body, "$_Price", model.getPrice().toString());
               body = StringHelper.replace(body, "$_index", Integer.toString(i));
               // 向页面输出
               try{
                 pageContext.getOut().print(body);
               }
               catch(Exception e){

               }
             }
          }
         return EVAL_PAGE;
       }
    }

    四、JSP页面(BookList.jsp)

    <%@page contentType="text/html; charset=GBK"%>
    <%@ taglib uri="/MyBookTag" prefix="MyBookTag" %>
    <html>
    <head>
    <title>一个基于J2EE的图书DEMO</title>

    <script language="javascript">
    function returnBack(){
        document.form1.action = "BookAdmin.jsp";
    }
    </script>

    </head>
    <body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0">


    <h2 align="center"><font face="黑体" color="#0000CC">图书列表</font></h2>
    <form name="form1" method="post">
      <table width="750" border="1" cellspacing="0" align="center" cellpadding="3" bordercolor="#A5ABB6" bordercolordark="#ffffff">
        <tr align="center">
          <td width="100" bgcolor="FEFBF4" height="41">序号</td>
          <td width="200" bgcolor="FEFBF4" height="41">图示名称</td>
          <td width="100" bgcolor="FEFBF4" height="41">图书作者</td>
          <td width="200" bgcolor="FEFBF4" height="41">出版社</td>
          <td width="50" bgcolor="FEFBF4" height="41">图书价格</td>
          <td width="100" bgcolor="FEFBF4" height="41">操作</td>
        </tr>
       <!--这里使用标签技术,如果不用,就麻烦了,相信您一定有感触-->
       <MyBookTag:ListBook>
        <tr align="center">
          <td width="100" height="19">$_SerialNo</td>
          <td width="200" height="19">$_BookName</td>
          <td width="100">$_Author</td>
          <td width="200">$_PHouse</td>
          <td width="50" height="19">$_Price</td>
          <td width="100" height="19" align="left">
          <a href="bookEditTable.jsp?ItemNo=$_index">
            <font color="#0000CC">编辑</font>
          </a>
          |<a href="bookview.jsp?ItemNo=$_index">
            <font color="#FF0000">查看</font>
          </a>
          </td>
        </tr>
       </MyBookTag:ListBook>

      </table>
      <table width="400" border="0">
        <tr>
          <td width="100%" align="right">
            <div align="right">
              <input type="submit" name="Submit" value="返回" onClick="javascript:returnBack();" class="annew1">
            </div>
          </td>
        </tr>
      </table>
      </form>
      <p align="left"> </p>
    </body>
    </html


    [文章录入员:nancy]

    相关文章
  • jsp连接数据库大全
  • Jsp如何实现网页的重定向
  • 编写线程安全的JSP程序
  • 用缓冲技术提高JSP应用的性能和稳定性
  • Jsp结合XML+XSLT将输出转换为Html格式
  • JSP数据库连接池的必要性
  • 在JSP页面中实现检索数据的分页显示
  • 在jsp中作HTTP认证的方法
  • JSP通过JDBC与Oracle相连
  • 通过Jsp发送动态图像
  • 相关书籍:
  • JSP数据库开发实例精粹
  • JSP软件工程案例精解
  • JSP语法
  • JSP数据库编程指南
  • JSP由浅入深
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    JSP技术
    ASP/ASP.NET
    PHP技术
    JSP技术
    XML技术
    CGI/PERL
    WEB服务器
    WordPress专题
    其它
    电脑教程阅读排行
    ·几个常见的关于日期的问题
    ·WebLogic的初步研究(1)...
    ·WebLogic的初步研究(2)...
    ·新手入门经典:Jsp环境配置
    ·JSP动态输出Excel及中文乱...
    ·jsp基础学习资料
    ·MySQL实现分页JSP+JAV...
    ·jsp连接数据库大全
    ·Tomcat4.01全攻略
    ·JSP的安装、启动及简单示例