随笔-51  评论-14  文章-0  trackbacks-0
         往往JSP通常用来动态的生成HTML文件,来代替Servlet的作用,其实JSP还可以做很多事情,比如我以前提到的生成JPEG流,还可以用在XML文档中,很惊讶吧。
        通过一个例子简要叙述一下用JSP生成XML文件,我们要做的是把一个数据库的内容写到一个XML文件中,并且以HTML的格式显示出来。
        数据库的结构如下:
CREATE TABLE `music` (
  `year` 
int(4) NOT NULL default '0
',
  `title` tinytext NOT NULL,
  `artist` tinytext NOT NULL,
  `country` tinytext NOT NULL,
  `company` tinytext NOT NULL,
  `price` tinyint(
4) NOT NULL default '0
'
) ENGINE
=InnoDB DEFAULT CHARSET=gbk;
        下面是index.jsp文件(别担心,虽然扩展名是jsp,可它确实是XML):
<%@ page language="java" contentType="text/xml;charset=gbk"%>
<%@ page import="java.sql.*"%>
<?xml version="1.0" encoding="gbk" ?>
<?xml-stylesheet type="text/xsl" href="cd.xslt"?>
<CATALOG>
<%
String server 
= "127.0.0.1";//数据库服务器地址
String port = "3306";//数据库服务器端口
String db = "music";//数据库名
String user = "root";//用户名
String pass = "root";//密码
String URL = "jdbc:mysql://" + server + ":" + port + "/" + db + "?user=" + user
  
+ "&password=" + pass;//完整的URL

Connection conn = null;//连接
Statement stmt = null;//语句
ResultSet rs = null;//结果集

try
{
  Class.forName(
"com.mysql.jdbc.Driver");//加载类
  conn = DriverManager.getConnection(URL);//取得连接
  stmt = conn.createStatement();
  rs 
= stmt.executeQuery("SELECT * FROM music");//查询music表

  while (rs.next())
  {
//遍历生成XML

%>
<CD>
<TITLE><%=rs.getString("title")%></TITLE>
<ARTIST><%=rs.getString("artist")%></ARTIST>
<COUNTRY><%=rs.getString("country")%></COUNTRY>
<COMPANY><%=rs.getString("company")%></COMPANY>
<PRICE><%=rs.getString("price")%></PRICE>
<YEAR><%=rs.getString("year")%></YEAR>
</CD>
<%
}
}
catch (Exception e)
{
  e.printStackTrace();
//异常输出

}
%>

</CATALOG>
            下面是与XML文档对应的XSLT文档cd.xlst:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<body>
<table border="2" bgcolor="yellow">
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th><th>Company</th><th>Price</th><th>Year</th>



</tr>
<xsl:for-each select="CATALOG/CD">
<tr>
<td><xsl:value-of select="TITLE"/></td>
<td><xsl:value-of select="ARTIST"/></td>
<td><xsl:value-of select="COUNTRY"/></td>
<td><xsl:value-of select="COMPANY"/></td>
<td><xsl:value-of select="PRICE"/></td>
<td><xsl:value-of select="YEAR"/></td>

</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

生成效果:
 


问题:我希望将JSP中的内容写到servlet中,同时在JSP中使用标签库将生成的xml与已有的xslt连接起来,这该怎么做?请达人们帮助解答,谢谢。
posted on 2008-04-06 19:26 Hank1026 阅读(459) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: