论坛首页 Web前端技术论坛

关于基于 XMLHTTP 做表示层开发的探讨

浏览 66181 次
该帖已经被评为精华帖
作者 正文
   发表时间:2004-03-24  
<%@ page 
language="java"
contentType="text/xml; charset=GB18030"
pageEncoding="GB18030"
%>
<%
	response.setContentType("text/xml");;
	out.println("<tree>");;
	out.println("<tree text=\"Load &amp;tree1.xml&amp;\" src=\"tree1.xml\" />");;
	out.println("<tree text=\"Loaded Item 1\" action=\"http://webfx.eae.net\" />");;
	out.println("<tree text=\"Loaded Item 2\">");;
	out.println("<tree text=\"Loaded Item 2.1\" action=\"javascript:alert(2.1);\" />");;
	out.println("</tree>");;
	out.println("<tree text=\"Loaded Item 3 (with target);\" action=\"http://www.google.com\" target=\"_new\" />");;
	out.println("<tree text=\"Load &amp;tree1.xml&amp;\" src=\"tree1.xml\" />");;
	out.println("</tree>");;
%>
0 请登录后投票
   发表时间:2004-03-24  
上面的写法有点笨,我没有改了。
大量的out.print可以省去的。
抬头的地方注意是text/xml不是text/html。

调用:
本地的xml:
addItem('xml/tree1.xml');
用jsp产生xml:
addItem(,'http://jsp的url',);
0 请登录后投票
   发表时间:2004-03-24  
jaqwolf:
我在client是这样处理的,例子就是网站上的xmlextras.zip,
try {
switch (sOutFormat) {
  case "plainText":
   document.getElementById("out").innerHTML = stripHtml(xmlHttp.responseText);
   break;
  case "xmlText":
   document.getElementById("out").innerHTML = stripHtml(xmlHttp.responseXML.xml);
   break;
  case "xmlTree":
   document.getElementById("out").innerHTML = createXmlTree(xmlHttp.responseXML, 0);
   break;
}
}
catch (exc) {
document.getElementById("out").innerHTML = "An error occured &lt;br/&gt;" +
   "Message: " + exc.message + "&lt;br/&gt;" +
   "File: " + exc.fileName + "&lt;br/&gt;" +
   "Line: " + exc.lineNumber + "&lt;br/&gt;" +
   "Name: " + exc.name;
}
但是使用(xmlHttp.responseXML.xml);和(xmlHttp.responseXML, 0);
方式都不能正确显示,使用(xmlHttp.responseText);方式可以。

不知道client调用需要改动什么?
0 请登录后投票
   发表时间:2004-03-24  
目前,实现的形式是:
  服务器端生成XML文件,客户端可以解析XML文件。
  比如网站上的xmlextras.zip中demo.html中,
&lt;option "url"&gt;http://webfx.eae.net/dhtml/xmlextras/tree.xml&lt;/option&gt;
但是,这些文件放在服务器端是需要维护,比如定期删除。这样比较复杂,
能否通过形成xml dom的形式。既是:

服务器端不是生成XML文件,而是通过jsp通过out.println的形式输出xml
客户端读取服务器发送过来的XML,然后解析,形成所要的数据结构。

请问能否给出一个完整、简单的例子实现这个流程。
谢谢!
0 请登录后投票
   发表时间:2004-03-25  
引用
服务器端不是生成XML文件,而是通过jsp通过out.println的形式输出xml
客户端读取服务器发送过来的XML,然后解析,形成所要的数据结构。

我上面给出的代码正是这样做的。
所谓的动态产生xml传到客户端,--》就是服务端打印xml。
完整的例子除开那个打印的jsp文件,就还有一个html如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>XLoadTree Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="js/xtree.js"></script>
<script type="text/javascript" src="js/xmlextras.js"></script>
<script type="text/javascript" src="js/xloadtree.js"></script>
<link type="text/css" rel="stylesheet" href="css/xtree.css" />
<style type="text/css">
body {
	background:	white;
	color:		black;
}
</style>
</head>
<body>

<script type="text/javascript">
/// XP Look
webFXTreeConfig.rootIcon		= "images/xp/folder.png";
webFXTreeConfig.openRootIcon	= "images/xp/openfolder.png";
webFXTreeConfig.folderIcon		= "images/xp/folder.png";
webFXTreeConfig.openFolderIcon	= "images/xp/openfolder.png";
webFXTreeConfig.fileIcon		= "images/xp/file.png";
webFXTreeConfig.lMinusIcon		= "images/xp/Lminus.png";
webFXTreeConfig.lPlusIcon		= "images/xp/Lplus.png";
webFXTreeConfig.tMinusIcon		= "images/xp/Tminus.png";
webFXTreeConfig.tPlusIcon		= "images/xp/Tplus.png";
webFXTreeConfig.iIcon			= "images/xp/I.png";
webFXTreeConfig.lIcon			= "images/xp/L.png";
webFXTreeConfig.tIcon			= "images/xp/T.png";

var tree = new WebFXTree("Thread");;
tree.add(new WebFXTreeItem("Tree Item (No Sub Item);"););;
tree.add(new WebFXLoadTreeItem("Tree Item 1", "/jaqforums/posts.jsp"););;
tree.add(new WebFXLoadTreeItem("Tree Item 2", "tree.xml"););;

document.write(tree);;
</script>

</body>
</html>
0 请登录后投票
   发表时间:2004-03-27  
在服务器端输出xml最好不要用字符串连接的方式,那样的话有些特殊字符会有问题的,还是用dom或者jdom来生成比较好
0 请登录后投票
   发表时间:2004-03-27  
jaqwolf 写道
用途都比较类似。不过是后者并非ms一家支持。听起来能适应更多的浏览器。你有否考虑过使用xmlrpc?

xml-rpc 我没有用过,没多少经验。据我所知 guty 是这里用的最多的。
XMLHTTP Mozilla 已经支持的很好了,而且和 IE 是兼容的(XMLHTTP 最早就是 IE 独有的技术)。我们只计划支持 IE 和 Mozilla 两大浏览器。
llandyl 写道
如何使用jsp写服务器端生成XML文件?最好有个简单的例子。

我们已经不写 JSP 了。输出 XML 最好的方式是使用 Servlet 而不是 JSP,把 Content-type  设置为 text/xml 就可以了,另外注意在 XML 头信息中把字符集设对(一般 GBK 就足够了)。
0 请登录后投票
   发表时间:2004-03-27  
请问dlee:

   你们client一般是如何处理的?能否给出简单的例子?

   谢谢!
0 请登录后投票
   发表时间:2004-03-27  
我最近比较忙,没时间写这样的例子。建议你去熟读 MSDN 中有关 XMLHTTP 的内容,然后使用 Google 到网上去搜索。
0 请登录后投票
   发表时间:2004-03-28  
是时间考虑采用下一代的B/S模式了, 在目前的流行的架构中, browser的能力太弱.

dlee他们采用的XMLHTTP是是对传统BS模式颠覆的一次尝试, 但是还不够彻底. 而且我不认为其他人可以很快上手, 在这上面需要花上相当长的时间找一条最佳实践的路.

如果你需要Rich Content应用, 那么Macromedia的Flex, M$的avalon, Mozilla的XUL这些下一代的B/S技术更值得关注.
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics