JSP彩色验证码

[不指定 2005/10/25 22:22 | by ipaddr ]
生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变)
原型参考ALIBABA  http://china.alibaba.com/member/showimage

产生验证码图片的文件-----image.jsp

<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %>
<%!
Color getRandColor(int fc,int bc){//给定范围获得随机颜色
       Random random = new Random();
       if(fc>255) fc=255;
       if(bc>255) bc=255;
       int r=fc+random.nextInt(bc-fc);
       int g=fc+random.nextInt(bc-fc);
       int b=fc+random.nextInt(bc-fc);
       return new Color(r,g,b);
       }
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

// 在内存中创建图象
int width=60, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

// 获取图形上下文
Graphics g = image.getGraphics();

//生成随机类
Random random = new Random();

// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);

//设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));

//画边框
//g.setColor(new Color());
//g.drawRect(0,0,width-1,height-1);


// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
       int xl = random.nextInt(12);
       int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}

// 取随机产生的认证码(4位数字)
String sRand="";
for (int i=0;i<4;i++){
   String rand=String.valueOf(random.nextInt(10));
   sRand+=rand;
   // 将认证码显示到图象中
   g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
   g.drawString(rand,13*i+6,16);
}

// 将认证码存入SESSION
session.setAttribute("rand",sRand);


// 图象生效
g.dispose();

// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());


%>

---------------使用验证码图片的文件---------a.jsp------------------------------------

<%@ page contentType="text/html;charset=gb2312" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>认证码输入页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</head>
<body>
<form method=post action="check.jsp">
<table>
<tr>
<td align=left>系统产生的认证码:</td>
<td><img border=0 src="image.jsp"></td>
</tr>
<tr>
<td align=left>输入上面的认证码:</td>
<td><input type=text name=rand maxlength=4 value=""></td>
</tr>
<tr>
<td colspan=2 align=center><input type=submit value="提交检测"></td>
</tr>
</form>
</body>
</html>

-----------------验证的页面----------check.jsp

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<title>认证码验证页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</head>

<body>
<%
String rand = (String)session.getAttribute("rand");
String input = request.getParameter("rand");
%>
系统产生的认证码为: <%= rand %><br>
您输入的认证码为: <%= input %><br>
<br>
<%
 if (rand.equals(input)) {
%>
<font color=green>输入相同,认证成功!</font>
<%
 } else {
%>
<font color=red>输入不同,认证失败!</font>
<%
 }
%>
</body>
</html>

一.安装Apache2
下载地址:http://www.apache.org
下载installer的安装版本,直接根据提示安装完成。
配置httpd.conf
(ipaddr,bcomcn一直漂原创笔记,转载请注明)

二.安装PHP
下载地址:http://www.php.net
下载Windows的ZIP包,解压到c:\php
1.将c:\php加入到系统环境变量PATH
如果不加入环境变量,很多库需要拷到系统目录,我觉得还是加环境变量方便
2.将c:\php\php4ts.dll文件拷到c:\windows(2000是c:\winnt)
此步不可省略
3.修改php.ini-recommand为php.ini,修改php.ini,移动到c:\windows
注:如果php.ini不拷到c:\windows,则需要在httpd.conf里配置PHPInDir="C:\php"
配置PHP的选项:
doc_root = c:\website\htdocs
extension_dir = c:\php\extensions
session.save_path = c:\php\temp

4.修改httpd.conf
加入:
LoadModule php4_module "c:/php/sapi/php4apache2.dll"
#注:网上很多文章此处有错误,误写成"c:/php/php4apache2.dll"
AddType application/x-httpd-php .php
DirectoryIndex .... index.php (在索引页中,加入index.php,支持JSP后,加入index.jsp)
修改DocumentRoot指向网站根目录.

三.安装Mysql
直接到www.mysql.org下载For Windows版的,根据提示安装即可。

四.安装phpmyadmin
到www.phpmyadmin.net下载最新版的phpmyadmin
解压到网站根目录的/mysql中
将config.inc.php里的auth_type改为http
如果是4.1版本以上的Mysql,需要将认证密码改一下:
登录Mysql:
use mysql
update user set Password=old_password('zhoutang');
flush privileges;

五.安装Tomcat
三步安装Tomcat
在Wind2000系统上都已经成功安装Tomcat,只需要三步:

第一步:

下载准备必备文件:
1.jakarta-tomcat-5.0.28.exe (安装文件) http://jakarta.apache.org/tomcat/index.html
(Tomcat4.1是老版本,支持的JSP和Serverlet版本低一点,Tomcat5.0是新版稳定版本,5.5是开发版本.)
2.j2sdk-1_4_2_09-windows-i586-p.exe (Jdk1.4) http://java.sun.com/j2se/1.4/download.html
3.mysql-connector-java-3.1.10.zip (支持数据库) http://www.mysql.com/downloads/api-jdbc.html

第二步:
运行j2sdk-1_4_2_09-windows-i586-p.exe,安装在c:\program files\jsdk

在windows2000的控制面板 中 选择 '系统',在'高级'页 选择'环境变量'
新增:

JAVA_HOME=c:\program files\jsdk
CLASSPATH=.;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
PATH=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(PATH是加在原PATH后面)

第一行是设置Windows下JAVA_HOME环境变量,是必须设定的,后面两行主要对Windows下命令窗口起作用(DOS窗口)。注意CLASSPATH的第一个参数是“.”,如果这个不设置,使用java hello.helloWorld 会报Exception in thread "main" java.lang.NoClassDefFoundError
此步完成后,进入DOS模式,可以运行java -version查看Java版本就表示JDK安装成功.

第三步:

运行jakarta-tomcat-5.0.28.exe,并且,将Tomcat安装为Windows的服务运行。
解压mysql-connector-java-3.1.10.zip,我们需要里面的mysql-connector-java-3.1.10-bin.jar文件,拷贝这个文件到tomcat的安装目录的common/lib下面

启动Tomcat,只需启动Windows服务里的Tomcat就行

在浏览器键入http://localhost:8080/ 看到Tomcat的启动页面.


测试:
Tomcat+JDK+mySQL完整测试:
a.在tomcat/webapps下建立子目录test
b.复制目录(注意是整个目录)tomcat/webapps/ROOT/WEB-INF到新建的test目录下
c.在test目录下新建index.jsp文件:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html><title测试JSP连接Mysql页面</title><body>
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost:3306/mysql?user=root&password=&useUnicode=true&characterEncoding=GB2312";
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from user";
ResultSet rs=stmt.executeQuery(sql); %>
<table><tr><td>您的第一个字段内容为:</td>
<td>您的第二个字段内容为:</td>
</tr>
<%while(rs.next()) {%>
<tr><td>
<%=rs.getString(1)%> </td><td>
<%=rs.getString(2)%> </td></tr>
<%}%>
</table>
<%out.print("Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功(ipaddr)!");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
d.在浏览器中输入:http://localhost:8080/test,若出现“Tomcat+JDK+mySQL完整测试,恭喜你,数据库操作成功!”,则说明你的Tomcat+JDK+mySQL整体配置成功。

六.整合Tomcat和Apache.
在http://jakarta.apache.org/下载mod_jk-1.2.14-apache-2.0.54.so
将mod_jk-1.2.14-apache-2.0.54.so改名为mod_jk.so放到Apache的Modules目录下.(mod_jk2已不被官方支持)
a.在Apache的配置文件httpd.conf里加入:(httpd.conf中的相对路径指相对httpd.conf里的ServerRoot)
#------------------------------------
#Tomcat Config
#----------
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile "conf/workers.properties"
# Where to put jk logs
JkLogFile "logs/mod_jk.log"
# Set the jk log level [debug/error/info]
JkLogLevel info
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
#------------------------------------
#JkMount指示,将哪些请求发到Tomcat,如果在其它目录也有servlet,也需在这里映射,
#比如,如果/axis/下面有很几个servlet,可以分别映射,也可以JkMount /axis ajp13全部映射,所有/axis下的访问,都交给tomcat.
#另外,如果要用tomcat的admin管理,还需要JkMount /admin/* ajp13
#注意,JkMount后面的ajp13是Worker名,应该在下面的workers.properties中定义.
b.在apache的CONF目录下,新建一个workers.properties文件,内容如下:
#指定Tomcat的主目录以及JDK
workers.tomcat_home=C:\Program Files\Apache Software Foundation\Tomcat
workers.java_home=C:\Program Files\jsdk

ps=/
#Worker列表
worker.list=ajp12, ajp13

worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1


worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1

c.修改Tomcat主目录下的conf/server.xml
在</Host前面,加上主目录>
<Context path="" docBase="D:\website\apache" debug="0" reloadable="true" > </Context>

注意,这里的docBase应该与httpd.conf里的DocumentRoot一致.才能叫整合;path="",不能写成path="/".

#或者,修改<Host>中的appBase指定网站根目录.

d.如果开了防火墙,logs/mod_jk.log里面会有好多错误,提示连接Localhost:8009失败的,打开防火墙的这个端口.

e.如果不需要通过8080端口访问,刚可以在conf/server.xml中,注释掉8080端口的connector

配置完成,测试成功.


打造人脉-成就事业[转载]-

[不指定 2005/10/17 22:33 | by ipaddr ]
虽然你很真心对待朋友,但可能你的朋友并不多,不管如何,在中国这样的关系社会,没有朋友是成不了事的.虽然很坦诚交朋友,但在人际交往中,我经常犯错误,转载CU的文章,警示自己:


在上一章的叙述中,我们谈到我们的学校教育对于我们的成功起不到很大的作用,学校几乎不会教导我们怎么与人打交道,不会教导我们怎么去面对各种困境,而实际上这两个方面是决定我们是否能成功的关键因素。在我们走入社会后,我们最缺乏的就是人脉,我们要面对的一个重大的课题是如何建立我们的人际关系网络。下面讨论一些常用的技巧和一般的指导理论。

处理人际关系的绝技[1]

1、 如果你要采蜜,不可弄翻蜂巢——不要批评、指责、抱怨。

关于批评、指责、抱怨带来的恶果,我们在这里就不讨论了;我们所有的人都深受其害。我们所要做的是警惕自己的言行3个礼拜,从内心中完全地禁止批评、指责、抱怨他人的动机。

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、 要让别人乐于照着你希望的去做,你就必须让他明白,他对你有多么的重要,而他便会觉得这件事对他也有多么重要。

我们可以简单地归纳为:尊重他人、仔细倾听、从对方角度思考问题、谈论对方的想得到的东西、求同存异。

人际关系结构

上面我们讨论的是些具体的一些与人交往的技巧,下面我们讨论一下掩藏在纷繁复杂的人际关系中的内在规律,探讨一下不同的人要拥有什么样的人际结构才有利于我们的成功。

人际关系一般由如下几部分组成:

1、 血缘关系,天生的,不可改变,是我们每个人都应该珍惜的宝物。

2、 亲戚关系,一半是先天的,一半是后天的。如刘备娶了孙权的小妹就与刘备形成了亲戚关系。清朝黄族通过联姻的方式来搞好汉、满、蒙族的关系,进而稳固他们的政权就是采用的这种方式。

3、 同学关系。同学关系成为现代人际关系中的重要方面,尤其是对于高学历人来说。与同学关系的好坏对于我们未来的发展具有重大的影响。很多的小公司就是由同学合伙开办的,大家熟知的微软公司就是极好的例子。

4、 志趣相投的朋友。这种关系较为稳固,值得我们花大心思去维护、培养,以诚相待;关爱是搞好关系的关键。

5、 知己。这种朋友最难得,无论怎么强调其重要性都不为过;宽容、坦诚、友爱是其中的要素。

6、 伴侣。这是一生中对我们每个人都有重大影响的人际关系。我们需要严格地挑选我们的伴侣,一个好的伴侣可以使我们的力量超过三个人,一个不合适的伴侣会使我们两个人的力量小于半个人的力量。

7、 性格不同的朋友。这种朋友在交接过程中有一定的难度,但是对个人的发展却非常重要。我们需要从那些与我们不同的朋友身上不断地学习新的东西。正所谓“三人行,必有我师焉,择其善者而从之,其不善者而改之。”性格一样的朋友在一起容易引起共鸣,但也就是因为这个共鸣会使我们考虑问题时流于片面;因此保持一定数量的与我们性格不同的朋友,是个明智的选择。

8、 合作伙伴。如果我们与其他人一起创业,合作伙伴的选择至关重要,我们需要综合考虑我们的目标、性格来决定我们的合作伙伴。

9、 成功人士。俗话说:“近墨者黑,近朱者赤。”我们周围有一大批成功人士的话,我们迟早也会成功;因为他们的成功经验、失败教训、资金、技术是我们成功的宝贵财富。

10、 业务朋友。这是我们工作中直接面对的朋友,不要小看周围的任何人物;不要把他们当作简单的产品服务对象。坚持和尽可能多的业务人士做朋友,会使我们更加容易掌握市场讯息,更加容易处理投诉、服务等问题。

11、 专业朋友。这包括与我们水平相当的专业朋友,和技术水平比我们更高和更低的朋友。我们知识中有一大部分是我们所需要的专业知识,维持相当数量的专业朋友会使我们在遇到专业问题时找到好的帮手,会使我们在发表文章、评定职称、提升影响力方面有意想不到的好处。

12、 有重大影响力的朋友。这些人可能是我们的长辈、上级,可能与我们没有直接的关联,但是他们对我们的成功产生重大的影响。如朋友的家属,政府部门、朋友的朋友,这些没有直接关系的朋友,只要能够获得他们的帮助,会大大增添我们成功的机会;如果他们使坏,将使我们的损失不可预料。

13、 一次性的朋友。这里说的一次性朋友泛指那些接触时间很短暂,却总要接触的朋友。比如说从你们公司买了个小东西的客户,一个朋友的朋友,一个你经常要打交道的政府工作人员,处理不好与这些朋友的关系会使我们的工作效率打大折扣。

14、 娱乐圈朋友。这种朋友一般是在娱乐场所中结识的朋友。比如说篮球友、足球友、乒乓球友、羽毛球友、象棋友、舞友等。这种朋友一般比较容易结识;交往时大家也没有什么顾忌,一般是以真面目出现。结交这样的朋友可以使我们有持续的兴趣在我们的娱乐上,只要我们的娱乐项目有益于身心健康,我们就可以从中受益非浅。我们也可以从这些朋友中选择那些有益于事业发展的人士作为我们的合作伙伴,不断创造我们成功的机会。

15、 朋友的朋友。通过朋友介绍结识新的朋友,这是构建我们人际网络的重要方法。

个人的人际关系网络都是不同的,不同目标、不同的理想需要不同的人际关系网络去支持,人际关系网络没有最好的,只有最适合的;如果我们想成为一个技术专家,那么我们就要在结交“专业朋友”上面多下工夫,要是我们把力量的大部分用在结交“娱乐圈朋友”的话我们就很难成为一个技术专家。

我们把各种朋友进行分类,其目的就在于我们要从中发现影响我们工作、事业的最主要的人际关系因素;使我们有目的有意识的加强相关方面的交往,我们要把很大一部分精力发在那些对我们的事业最有影响力的人际关系上,为我们的成功创造良好的人际关系环境,当然这一切都是建立在双赢的原则上。


 1.人生是不公平的,习惯去接受它吧。

  2.这个世界不会在乎你的自尊,这个世界期望你先做出成绩,再去强调自己的感受。

  3.你不会一离开学校就有百万年薪,你不会马上就是拥有移动电话的副总裁,两者你都必须靠努力赚来。

  4.如果你觉得你的老板很凶,等你当了老板就知道了,老板是没有工作任期保障的。

  5.在速食店煎个汉堡并不是作贱自己,你的祖父母对煎汉堡有完全不同的定义。

  6.如果你一事无成,不是你父母的错,所以不要只会对自己犯的错发牢骚,从错误中去学习。

  7.在你出生前,你的父母并不像现在这般无趣,他们变成这样是因为忙着付你的开销,洗你的衣服,听你吹嘘自己有多了不起,所以在你拯救被父母这代人破坏的热带雨林前,先整理一下自己的房间吧。

  8.在学校里可能有赢家和输家,在人生中却还言之过早,学校可能会不断给你机会找到正确的答案,真实人生中却完全不是这么回事。

  9.人生不是学期制,人生没有寒假,没有哪个雇主有兴趣协助你寻找自我,请用自己的空暇做这件事吧。

  10.电视上演的并不是真实的人生,真实人生中每个人都要离开咖啡厅去上班。


Javascript远程调用其它页面

[不指定 2005/10/09 22:55 | by ipaddr ]
1.

<script language="javascript">
function getHttp()
{
  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.Open("GET", "http://www.xxxx.com/port.jsp", false);
  xmlhttp.Send();
  alert(xmlhttp.responseText);
}
</script>

2.
下面是126.com邮箱申请的用户名检测。
if (window.XMLHttpRequest)
{
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
document.getElementById( "content" ).innerHTML = ".......正在验证,请稍候.........";
req.onreadystatechange = processChech;
req.open( "get", "./checkusername.jsp?username="+username, false );
req.send();

3.
以前看到很多网友问,自己有两台服务器,如何这两台服务器上的mdb数据库数据的互访。今天作了个远程的接口,以xml形式返回mdb中的数据。用的主要思想是通过recordset对象的save方法将数据填充到一个xml dom里,但是,这种方法产生的XML不够简洁,自动产生的XML包含了schema信息,它描述这个XML里允许有什么节点和属性以及采用何种数据类型,而且数据节点也增加了名称空间。schema信息在需要数据验证的地方或进行更复杂的处理或许很有用,但是,大多数情况下,我们使用的是瘦客户机,我们不需要schema信息。我们可以利用XSLT来分离出我们想要的信息,去掉多余的信息。

代码如下:
<%
'生成xsl样式
str = chr(13)&chr(10)&chr(9)
xslt="<?xml version=""1.0""?>" & chr(13)&chr(10) & "<xsl:stylesheet version=""1.0"""_
     &" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"""_
     &" xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"""_
     &" xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"""_
     &" xmlns:rs=""urn:schemas-microsoft-com:rowset"""_
     &" xmlns:z=""#RowsetSchema"">"& str_
& "<xsl:output omit-xml-declaration=""yes""/>"&str_
&  "<xsl:template match=""/"">"& str&chr(9)_
    & "<xsl:element name=""xml"">"& str&chr(9)&chr(9)_
         &"<xsl:for-each select=""/xml/rs:data/z:row"">"& str&chr(9)&chr(9)&chr(9)_
             &"<xsl:element name=""row"">"& str&chr(9)&chr(9)&chr(9)&chr(9)_
                 &"<xsl:for-each select=""@*"">"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                    & "<xsl:element name=""{name()}"">"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                        & "<xsl:value-of select="".""/>"& str&chr(9)&chr(9)&chr(9)&chr(9)&chr(9)_
                     &"</xsl:element>"& str&chr(9)&chr(9)&chr(9)&chr(9)_
                & "</xsl:for-each>"& str&chr(9)&chr(9)&chr(9)_
            & "</xsl:element>"& str&chr(9)&chr(9)_
         &"</xsl:for-each>"& str&chr(9)_
     &"</xsl:element>"& str_
 &"</xsl:template>"& chr(13)&chr(10)_
&"</xsl:stylesheet>"

'读取数据库
curDir = Server.MapPath("data.mdb")
set conn=server.createobject("adodb.connection")
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & curDir
set rs=conn.Execute("select * from admins")
Dim objXMLDOM
Set objXMLDOM = Server.CreateObject("MSXML2.DOMDocument.3.0")
'将recordset对象保存到dom里
rs.save objXMLDOM, 1
Set rs = Nothing
Dim strCleanXML, objXMLDOM_XSLT
Set objXMLDOM_XSLT = CreateObject("MSXML2.DOMDocument")
objXMLDOM_XSLT.loadXml(xslt)
'用xsl格式化数据
strCleanXML = objXMLDOM.transformNode(objXMLDOM_XSLT)
 
Set objXMLDOM = Nothing
Set objXMLDOM_XSLT = Nothing
'输出数据
Response.Write strCleanXML
%>

      因为xml是跨平台的,所以呢不论是asp还是jsp或者客户端都可以通过该接口获得数据,然后用自己的样式来显示数据。比如,在客户端我们可以使用javascript操作xmlhttp来获得www.xxxx.com上某个mdb的数据:
<script language="javascript">
function req(){
  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  xmlhttp.Open("GET", "http://www.xxxx.com/mdb_inerface.asp", false);
  'mdb_interface.asp既为放在www.xxxx.com上的mdb接口文件
  xmlhttp.Send();
  alert(xmlhttp.responseText);
}
</script>
</HEAD>
<body>
<input type="button" onclick="req();" value=" 获 取 " /></br>

4.服务器端,可以使用SOAP,客户端,用javascript存取。

分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]