《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > XSLT技术在JavaWeb开发中的应用

XSLT技术在JavaWeb开发中的应用

2009-03-05
作者:易小华

引 言
随着Web2.0的提出,web开发将成为未来软件发展的主导,各行各业都离不开网络,因此软件开发人员也一直在探讨一种好的开发框架模型,使得开发的软件在给用户最好的体验,最大限度地满足客户需的同时,也给开发人员最大的便利和好的分工。本文从一个侧面分析了XSLT技术在JavaWeb开发中的应用,这种探讨是符合软件开发目的的可行的方案。
1 技术背景
Servlet是开发服务器端应用程序的一种强大的语言,它使用Java语言编写,提供了对整个JAVA API的完全访问,而且具有一个完备的Servlet API来处理HTTP请求,使用java语言编写使他与其他相关技术相比具有易于编写,简单,平台无关,可扩展性强,好维护,安全,面向对象等优点,给程序员在使用最先进的技术上带来了极大的便利性,另外他只需装载一次从而速度较快。但是由于它在数据处理结果显示也就是界面设计方面的天生不足,使他在当今强调分工的社会得不到很好普及,因为编写服务器端代码的人一般是软件开发人员,用Servlet使得他们不仅要编写业务逻辑,还要考虑怎么设计界面,而这些只是美工的专长,显然不利于分工,很容易分散程序员的精力。那么怎样来解决这个问题呢方法有很多譬如:JSP技术,XML技术。
使用XML技术很好的解决了这个问题不失为一种上上之策。XML是一种可扩展标记语言它在描述结构型数据信息,并对他进行有效性验证,以及转化处理和显示上有自己得天独厚的优势,因为使用Schema可以很好的描述现实世界中业务数据的规则,使用DOM技术将XML文档抽象成一棵节点树进行数据处理非常便利和灵活,使用Xpath和XSLT语言又可以实现数据的灵活显示,实现与用户交互的界面设计的灵活性也就是按需取值。另外使用自定义标记是文档具有很好的可读性。这两者各自的优点便利性和强大的功能正好实现了优势互补,非常适合Web开发中的分工和配合,另外现在随着JAVA和XML这两大语言的流行,也正说明了他们的融和将是一种必然的趋势。
具体实现的探讨
.
可行的模型:
下面是Servlet和XML结合应用的一种可行的MVC模型:  

      

        

        

下面通过一个实例来解释这个模型:
实例从表Paper中取出数据,再生成XMl文档,再通过XSLT显示。
(用户请求Display.java,Display.java通过ConnectionPool.java和 CommonTable.java从数据库Paper中提取数据并在XMLFile.java提供的接口下动态生成XML文档Display.xml,最后通过XSLT文档Display.xsl将XML文档转换成html页面提供给用户).
1. 数据库连接与操作:ConnectionPool.java(负责建立数据库连接)使用连接池实现。CommonTable.java(代码略)它用于对数据库进行各种操作。
2. XML文档的处理:XMLFile.java这是实现Sevlet与XML连接的关键,代码略:
3. XML文档(Display.xml)和XSLT转换(Display.xsl):(代码略)
4. 使用Servlet生成XML文档:Display.java
.Display.java
import common.XFile.*; //  引进XMLFile.class
import common.database.*; // 引入数据库操作包
import javax.servlet.*; // 引入Servlet包
import javax.servlet.http.*;
import java.io.*; // 文件操作
import java.util.*;
public class Display extends HttpServlet { // 该实例对象可以实现对已有XML静
  private XMLFile file; // 态文档中插入动态内容(替换标记),并对一些字符进行替
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 换以方便插入数据库。
        response.setContentType("text/xml"); // 设置为XML类型
        PrintWriter out = new PrintWriter (response.getOutputStream());
        file=new XMLFile("xml\\Display.xml"); // 引入实例文档
        CommonTable table1=new CommonTable("Paper"); // 建立对Paper的数据库炒
        // 作对象,获取Title,data,author,记录数等数据
        Vector title=table1.selectCol("Title","PaperID");
        Vector date=table1.selectCol("SubmitTime", "PaperID");
        Vector author=table1.selectCol("author", "PaperID");
        int number=table1.count ("PaperID", "");
        String replace="";
        int i;
//  根据提取的数据生成动态XML数据
            for(i=number-1; i>=0; i--)
            {
                Vector num=table1.find("PaperID","Title='"+title.elementAt(i).toString()+"'","",1,1,100);
                String t=num.get(0).toString();
          long tmLong=Long.parseLong(date.elementAt(i).toString());
          Date currentDate=new Date(tmLong);
                replace+=""+title.elementAt(i).toString ()+""+
           ""+author.elementAt(i).toString()+""+
           ""+(currentDate.getYear()+1900)+"."+(currentDate.getMonth()+1)+"."+(currentDate.getDate())+""+
                    "visit.html?ID="+t+""+
              "
";
             }
// 对一些特殊字符进行替换,以方便插入数据库
        file.replaceAll("<%replace%>",replace);
        file.replaceAll("<%replace1%>",replace1);
        file.replaceAll("^","'");
        out.println(file.getContent());
        out.close();
    }
}
下面可以对JSP和XML对界面设计的应用可以做一个比较:
.JSP:
1.  JSP构造页面太痛苦. 代码嵌入页面导致页面臃肿, 逻辑复杂, 不易编辑.
2. 程序员和美工的接口必须精确定义. 复杂的嵌套输出必须构造复杂的显示类作为接口.
3. 调试JSP必须等到前端程序结束才能看到效果.
4. 调试JSP效率极低, 一点点小的修改都会引起jsp的重新编译.
.XSLT:
1.JDK1.4已经自带XML API和XSLT, 并且支持XSLT 1.0标准. IE6也支持同样标准.
2. 开发前先制作接口用的demo XML, 程序员的输出必须符合此格式. 美工根据此格式制作XSL. 接口可视化, 明确定义.
3. 只要定义好接口XML, 两边几乎不需要再联合调试. 美工利用接口XML和IE6就可以直接看到效果.
4. 程序员只要保证输出的XML的是否符合接口, 直观的做文字性对比.
5. 大量页面可重用的部分能方便的抽象出来, 在XSL文件中include/import进来. 高度重用, 标准化.
6. 写XSL可大量采用template, 结构清晰, 修改方便, 写页面变成搭积木, 不再有jsp的层层嵌套.
7. 对于不同的终端设备, 可以定制不同的XSL, 很方便的就能够支持手机, pda...
8. 在程序中利用支持XML的工具, 比如Mysql, 可以直接生成XML结果, 无需复杂编程
9.实现美工与程序员的很好的分工,使开发更加简单。
总  结
总之,随着互联网的日趋成熟,和XML,JAVA语言的日益流行JAVA和XML技术结合带来的好处将呈现在大家眼前。
附注:
参考文献:

1. 《JavaSevlet编程》Jason Hunter,William Crawford 中国电力出版社 2002年6月
2. 《XML技术及其使用》沈裕和  北京信息工程学院内部教材  2005
3. 《java核心技术》卷Ⅱ Cay S.Horstmann 机械工业出版社 2003.1
4. 《XML技术内幕》  Natanya Pitts  机械工业出版社 2002年1月

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。