﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-tangtb</title><link>http://www.blogjava.net/redhatlinux/</link><description>Hadoop,SpringMVC,ExtJs,Struts2,Spring,SpringSecurity,Hibernate,Struts</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:55:01 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:55:01 GMT</pubDate><ttl>60</ttl><item><title>IBM WebSphere MQ Choosing a primary installation(选择主安装)</title><link>http://www.blogjava.net/redhatlinux/archive/2018/01/29/433030.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Mon, 29 Jan 2018 06:53:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2018/01/29/433030.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/433030.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2018/01/29/433030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/433030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/433030.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: IBM WebSphere MQ Choosing a primary installation(选择主安装)&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2018/01/29/433030.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/433030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2018-01-29 14:53 <a href="http://www.blogjava.net/redhatlinux/archive/2018/01/29/433030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 多线程访问WebSphere MQ（摘自官网）</title><link>http://www.blogjava.net/redhatlinux/archive/2017/03/22/432396.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 22 Mar 2017 07:29:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2017/03/22/432396.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/432396.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2017/03/22/432396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/432396.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/432396.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如果要从程序内的多个线程同时访问同一个队列管理器，应为需要同时访问的每个线程都创建一个新的 MQQueueManager 对象。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2017/03/22/432396.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/432396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2017-03-22 15:29 <a href="http://www.blogjava.net/redhatlinux/archive/2017/03/22/432396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ganglia整合Nagios监控Hadoop集群</title><link>http://www.blogjava.net/redhatlinux/archive/2015/02/25/423030.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 25 Feb 2015 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2015/02/25/423030.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/423030.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2015/02/25/423030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/423030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/423030.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ganglia是UC Berkeley发起的一个开源集群监视项目，设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要 是用来监控系统性能，如：cpu 、mem、硬盘利用率， I/O负载、网络流量情况等，通过曲线很容易见到每个节点的工作状态，对合理调整、分配系统资源，提高系统整体性能起到重要作用&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2015/02/25/423030.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/423030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2015-02-25 14:48 <a href="http://www.blogjava.net/redhatlinux/archive/2015/02/25/423030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pig安装配置及基本使用</title><link>http://www.blogjava.net/redhatlinux/archive/2014/06/04/414405.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 04 Jun 2014 14:14:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/06/04/414405.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414405.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/06/04/414405.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414405.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414405.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Pig是一个基于Hadoop的大规模数据分析平台对高级过程语言，适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询，该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算，Pig 可以简化 Hadoop 的使用。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/06/04/414405.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414405.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-06-04 22:14 <a href="http://www.blogjava.net/redhatlinux/archive/2014/06/04/414405.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HBase完全分布式安装配置</title><link>http://www.blogjava.net/redhatlinux/archive/2014/06/04/414404.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 04 Jun 2014 14:00:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/06/04/414404.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414404.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/06/04/414404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414404.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: HBase是一个分布式的、面向列的开源数据库，该技术来源于 Fay Chang 所撰写的Google论文“Bigtable：一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统（File System）所提供的分布式数据存储一样，HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库，它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/06/04/414404.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-06-04 22:00 <a href="http://www.blogjava.net/redhatlinux/archive/2014/06/04/414404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Redis安装</title><link>http://www.blogjava.net/redhatlinux/archive/2014/06/03/414362.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Tue, 03 Jun 2014 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/06/03/414362.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414362.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/06/03/414362.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414362.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库，并提供多种语言的API。从2010年3月15日起，Redis的开发工作由VMware主持。<br>Redis 是一个高性能的key-value数据库和Memcached类似，它支持存储的value类型相对更多，包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash（哈希类型）。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/06/03/414362.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-06-03 22:48 <a href="http://www.blogjava.net/redhatlinux/archive/2014/06/03/414362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows远程调试Hadoop</title><link>http://www.blogjava.net/redhatlinux/archive/2014/06/03/414359.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Tue, 03 Jun 2014 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/06/03/414359.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414359.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/06/03/414359.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414359.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414359.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前置条件<br>成功安装配置Hadoop集群<br>成功编译安装Hadoop Eclipse插件<br>本地有和服务器相同版本的Hadoop安装包，并已解压（本例使用hadoop-1.1.2）<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/06/03/414359.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414359.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-06-03 21:09 <a href="http://www.blogjava.net/redhatlinux/archive/2014/06/03/414359.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sqoop安装配置及数据导入导出</title><link>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414291.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Sat, 31 May 2014 06:41:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414291.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414291.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414291.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414291.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414291.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Sqoop项目开始于2009年，最早是作为Hadoop的一个第三方模块存在，后来为了让使用者能够快速部署，也为了让开发人员能够更快速的迭代开发，Sqoop独立成为一个Apache项目。<br>Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具，可以将一个关系型数据库（例如 ： MySQL ,Oracle ,Postgres等）中的数据导进到Hadoop的HDFS中，也可以将HDFS的数据导进到关系型数据库中。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/05/31/414291.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-05-31 14:41 <a href="http://www.blogjava.net/redhatlinux/archive/2014/05/31/414291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hadoop安装配置(更新)</title><link>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414290.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Sat, 31 May 2014 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414290.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414290.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414290.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hadoop由 Apache Software Foundation 公司于 2005 年秋天作为Lucene的子项目Nutch的一部分正式引入。它受到最先由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。<br>Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。<br>Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序,用户可以在不了解分布式底层细节的情况下，开发分布式程序。充分利用集群的威力高速运算和存储。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/05/31/414290.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-05-31 14:30 <a href="http://www.blogjava.net/redhatlinux/archive/2014/05/31/414290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hadoop Eclipse插件编译</title><link>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414289.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Sat, 31 May 2014 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414289.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/414289.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/05/31/414289.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/414289.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/414289.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/05/31/414289.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/414289.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-05-31 14:14 <a href="http://www.blogjava.net/redhatlinux/archive/2014/05/31/414289.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux日常操作【附件】更新</title><link>http://www.blogjava.net/redhatlinux/archive/2014/01/09/408746.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Thu, 09 Jan 2014 12:34:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2014/01/09/408746.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/408746.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2014/01/09/408746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/408746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/408746.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以下列出来的是本人日常用到的linux系统命令、vi操作命令和命令行快捷键，标红的为最常用到的，其它有的是偶尔用到，有的是现用现从网上搜索，在这个做个备忘，并没有全部列出，以后想起来或者用到了再添加。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2014/01/09/408746.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/408746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2014-01-09 20:34 <a href="http://www.blogjava.net/redhatlinux/archive/2014/01/09/408746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3.1新特性—EJB3.1-A Significant Step Towards Maturity(走向成熟的重要一步)</title><link>http://www.blogjava.net/redhatlinux/archive/2009/09/17/295439.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Thu, 17 Sep 2009 06:04:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2009/09/17/295439.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/295439.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2009/09/17/295439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/295439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/295439.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 引言<br>Enterprise Java Beans (EJB)是Java Enterprise Edition (Java EE) 平台的服务器端的组件架构，旨在快速、简单的构建分布式、事务，安全和可扩展的应用程序。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2009/09/17/295439.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/295439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2009-09-17 14:04 <a href="http://www.blogjava.net/redhatlinux/archive/2009/09/17/295439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FusionCharts简易封装-JFusionChart_v1.0</title><link>http://www.blogjava.net/redhatlinux/archive/2009/04/29/268084.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 29 Apr 2009 04:36:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2009/04/29/268084.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/268084.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2009/04/29/268084.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/268084.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/268084.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      出于个人兴趣，对FusionCharts做了一个简易的封装(由于工作原因，还有一些图形没有实现，会尽快补上)。设计初衷就是让服务器端生成FusionCharts所需要的XML文件更方便。希望所有看过的人能给我留个言，发表一下自己的看法或者直接发代码，能把这个小东西做得更完善。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2009/04/29/268084.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/268084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2009-04-29 12:36 <a href="http://www.blogjava.net/redhatlinux/archive/2009/04/29/268084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP协议（收藏）</title><link>http://www.blogjava.net/redhatlinux/archive/2009/02/17/255109.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Tue, 17 Feb 2009 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2009/02/17/255109.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/255109.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2009/02/17/255109.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/255109.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/255109.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: HTTP是一个属于应用层的面向对象的协议，由于其简捷、快速的方式，适用于分布式超媒体信息系统。它于1990年提出，经过几年的<br>使用与发展，得到不断地完善和扩展。目前在WWW中使用的是HTTP/1.0的第六版，HTTP/1.1的规范化工作正在进行之中，而且HTTP-<br>NG(Next Generation of HTTP)的建议已经提出。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2009/02/17/255109.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/255109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2009-02-17 15:25 <a href="http://www.blogjava.net/redhatlinux/archive/2009/02/17/255109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript 获取客户端计算机硬件及系统信息</title><link>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254254.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 11 Feb 2009 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254254.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/254254.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254254.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/254254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/254254.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2009/02/11/254254.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/254254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2009-02-11 15:14 <a href="http://www.blogjava.net/redhatlinux/archive/2009/02/11/254254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】解决有关Ext Grid导出Excel在JSP等环境中不可用的问题</title><link>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254236.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 11 Feb 2009 05:31:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254236.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/254236.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254236.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/254236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/254236.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-size: 14pt; color: #d65656; font-family: 隶书">&nbsp;解决有关Ext Grid导出Excel在JSP等环境中不可用的问题</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有关ExtGrid导出Excel的实现方式，网上已经有很多，官方也给出了一个方案，代码不是很完善，不过已经有高人对这个进行了修正。具体实现方式及代码我这里就不再多说了，大家可以参看：<br />
<a href="http://www.dojochina.com/index.php?q=node/1254">http://www.dojochina.com/index.php?q=node/1254</a>，附件：<a href="/Files/redhatlinux/gridToExcel.js.txt">gridToExcel.js.txt</a><br />
<strong>其基本思想是：</strong>客户端根据Grid数据生成Excel格式的XML数据，然后发送到一个服务端文件，服务端文件通<br />
过设定Content-Type来实现Excel的下载。其中&#8220;导出Excel&#8221;按钮点击执行的代码如下：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_78_595_Open_Image" onclick="this.style.display='none'; Codehighlighter1_78_595_Open_Text.style.display='none'; Codehighlighter1_78_595_Closed_Image.style.display='inline'; Codehighlighter1_78_595_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_78_595_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_78_595_Closed_Text.style.display='none'; Codehighlighter1_78_595_Open_Image.style.display='inline'; Codehighlighter1_78_595_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(Ext.isIE6&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isIE7&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isSafari&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isSafari2&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isSafari3)&nbsp;</span><span id="Codehighlighter1_78_595_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_78_595_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_112_302_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_302_Open_Text.style.display='none'; Codehighlighter1_112_302_Closed_Image.style.display='inline'; Codehighlighter1_112_302_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_112_302_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_302_Closed_Text.style.display='none'; Codehighlighter1_112_302_Open_Image.style.display='inline'; Codehighlighter1_112_302_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">&nbsp;Ext.fly('frmDummy'))&nbsp;</span><span id="Codehighlighter1_112_302_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_112_302_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;frm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.createElement('form');&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm.id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'frmDummy';&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm.name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;id;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frm.className&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'x</span><span style="color: #000000">-</span><span style="color: #000000">hidden';&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(frm);&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_326_591_Open_Image" onclick="this.style.display='none'; Codehighlighter1_326_591_Open_Text.style.display='none'; Codehighlighter1_326_591_Closed_Image.style.display='inline'; Codehighlighter1_326_591_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_326_591_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_326_591_Closed_Text.style.display='none'; Codehighlighter1_326_591_Open_Image.style.display='inline'; Codehighlighter1_326_591_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;Ext.Ajax.request(</span><span id="Codehighlighter1_326_591_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_326_591_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'</span><span style="color: #000000">/</span><span style="color: #000000">exportexcel.php',&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method:&nbsp;'POST',&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;form:&nbsp;Ext.fly('frmDummy'),&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_460_509_Open_Image" onclick="this.style.display='none'; Codehighlighter1_460_509_Open_Text.style.display='none'; Codehighlighter1_460_509_Closed_Image.style.display='inline'; Codehighlighter1_460_509_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_460_509_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_460_509_Closed_Text.style.display='none'; Codehighlighter1_460_509_Open_Image.style.display='inline'; Codehighlighter1_460_509_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;callback:&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(o,&nbsp;s,&nbsp;r)&nbsp;</span><span id="Codehighlighter1_460_509_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_460_509_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert(r.responseText);&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">,&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isUpload:&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">,&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img id="Codehighlighter1_554_584_Open_Image" onclick="this.style.display='none'; Codehighlighter1_554_584_Open_Text.style.display='none'; Codehighlighter1_554_584_Closed_Image.style.display='inline'; Codehighlighter1_554_584_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_554_584_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_554_584_Closed_Text.style.display='none'; Codehighlighter1_554_584_Open_Image.style.display='inline'; Codehighlighter1_554_584_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;params:&nbsp;</span><span id="Codehighlighter1_554_584_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_554_584_Open_Text"><span style="color: #000000">{exportContent:&nbsp;vExportContent}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img id="Codehighlighter1_602_703_Open_Image" onclick="this.style.display='none'; Codehighlighter1_602_703_Open_Text.style.display='none'; Codehighlighter1_602_703_Closed_Image.style.display='inline'; Codehighlighter1_602_703_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_602_703_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_602_703_Closed_Text.style.display='none'; Codehighlighter1_602_703_Open_Image.style.display='inline'; Codehighlighter1_602_703_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_602_703_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_602_703_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;document.location&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'data:application</span><span style="color: #000000">/</span><span style="color: #000000">vnd.ms</span><span style="color: #000000">-</span><span style="color: #000000">excel;base64,'&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Base64.encode(vExportContent);&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<p>例子中服务端使用的PHP，这段代码在PHP中可能可以很好的工作，但是如果到了JSP等环境下，就出现了问<br />
题，导出数据可能是空。<br />
&nbsp;问题出在哪里呢？上面这部分代码中的ajax提交其实并不是真正的ajax提交，因为ajax提交是在后台执行，因<br />
此不可能实现下载，可以看到这里有form和isUpload两个参数：Ext的ajax请求中如果配置了isUpload:true，则其<br />
ajax就不是真正的ajax请求，而是通过创建一个隐藏的Iframe，并通过form的target指向这个iframe来提交数据，并<br />
且发送的header里将content-type设为了multipart/form，在JSP中不能成功导出的原因就在这里。这样的提交方式<br />
其参数通过request.getParameter是取不到的，当然你可以使用上传组件来获取，但这样代码就变得复杂。下面<br />
来解决这个问题，既然这里的Ajax使用是一个模拟的form提交，那我们其实可以完全不用。我们直接用form提<br />
交不是更省事吗？解决办法如下：创建一个隐藏form，其target设置为_blank，然后在其内部创建一个隐藏域存<br />
放xml数据，然后通过POST方式提交这个form即可。</p>
<p>实现代码：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;vExportContent&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;grid.getExcelXml();&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_120_527_Open_Image" onclick="this.style.display='none'; Codehighlighter1_120_527_Open_Text.style.display='none'; Codehighlighter1_120_527_Closed_Image.style.display='inline'; Codehighlighter1_120_527_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_120_527_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_120_527_Closed_Text.style.display='none'; Codehighlighter1_120_527_Open_Image.style.display='inline'; Codehighlighter1_120_527_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(Ext.isIE6&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isIE7&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isSafari&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isSafari2&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;Ext.isSafari3)&nbsp;</span><span id="Codehighlighter1_120_527_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_120_527_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;fd</span><span style="color: #000000">=</span><span style="color: #000000">Ext.get('frmDummy');&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img id="Codehighlighter1_169_441_Open_Image" onclick="this.style.display='none'; Codehighlighter1_169_441_Open_Text.style.display='none'; Codehighlighter1_169_441_Closed_Image.style.display='inline'; Codehighlighter1_169_441_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_169_441_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_169_441_Closed_Text.style.display='none'; Codehighlighter1_169_441_Open_Image.style.display='inline'; Codehighlighter1_169_441_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">fd)&nbsp;</span><span id="Codehighlighter1_169_441_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_169_441_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_218_427_Open_Image" onclick="this.style.display='none'; Codehighlighter1_218_427_Open_Text.style.display='none'; Codehighlighter1_218_427_Closed_Image.style.display='inline'; Codehighlighter1_218_427_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_218_427_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_218_427_Closed_Text.style.display='none'; Codehighlighter1_218_427_Open_Image.style.display='inline'; Codehighlighter1_218_427_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fd</span><span style="color: #000000">=</span><span style="color: #000000">Ext.DomHelper.append(Ext.getBody(),</span><span id="Codehighlighter1_218_427_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_218_427_Open_Text"><span style="color: #000000">{tag:'form',method:'post',id:'frmDummy',action:'exportexcel.jsp',&nbsp;target:'_blank',name:'frmDummy',cls:'x</span><span style="color: #000000">-</span><span style="color: #000000">hidden',cn:[&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_349_415_Open_Image" onclick="this.style.display='none'; Codehighlighter1_349_415_Open_Text.style.display='none'; Codehighlighter1_349_415_Closed_Image.style.display='inline'; Codehighlighter1_349_415_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_349_415_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_349_415_Closed_Text.style.display='none'; Codehighlighter1_349_415_Open_Image.style.display='inline'; Codehighlighter1_349_415_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_349_415_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_349_415_Open_Text"><span style="color: #000000">{tag:'input',name:'exportContent',id:'exportContent',type:'hidden'}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]}</span></span><span style="color: #000000">,</span><span style="color: #0000ff">true</span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_479_500_Open_Image" onclick="this.style.display='none'; Codehighlighter1_479_500_Open_Text.style.display='none'; Codehighlighter1_479_500_Closed_Image.style.display='inline'; Codehighlighter1_479_500_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_479_500_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_479_500_Closed_Text.style.display='none'; Codehighlighter1_479_500_Open_Image.style.display='inline'; Codehighlighter1_479_500_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;fd.child('#exportContent').set(</span><span id="Codehighlighter1_479_500_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_479_500_Open_Text"><span style="color: #000000">{value:vExportContent}</span></span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;fd.dom.submit();&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_534_633_Open_Image" onclick="this.style.display='none'; Codehighlighter1_534_633_Open_Text.style.display='none'; Codehighlighter1_534_633_Closed_Image.style.display='inline'; Codehighlighter1_534_633_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_534_633_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_534_633_Closed_Text.style.display='none'; Codehighlighter1_534_633_Open_Image.style.display='inline'; Codehighlighter1_534_633_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_534_633_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_534_633_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;document.location&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;'data:application</span><span style="color: #000000">/</span><span style="color: #000000">vnd.ms</span><span style="color: #000000">-</span><span style="color: #000000">excel;base64,'</span><span style="color: #000000">+</span><span style="color: #000000">Base64.encode(vExportContent);&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">}&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>JSP代码：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&lt;%</span><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />response.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Type</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">application/force-download</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />response.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Type</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">application/vnd.ms-excel</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />response.setHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">attachment;filename=export.xls</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />out.print(request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">exportContent</span><span style="color: #000000">"</span><span style="color: #000000">));&nbsp;<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">%&gt;</span></div>
<p><br />
&nbsp;完整代码下载：<a href="/Files/redhatlinux/grid2excel.rar">grid2excel.rar</a></p>
<img src ="http://www.blogjava.net/redhatlinux/aggbug/254236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2009-02-11 13:31 <a href="http://www.blogjava.net/redhatlinux/archive/2009/02/11/254236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】Ext.get()与Ext.fly()之区别</title><link>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254220.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 11 Feb 2009 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254220.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/254220.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2009/02/11/254220.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/254220.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/254220.html</trackback:ping><description><![CDATA[<p align="center"><span style="font-size: 18pt; font-family: 隶书">Ext.get()与Ext.fly()之区别</span><br />
从一开始接触Ext就看到有Ext.fly这个函数，当时觉得这个跟Ext.get没什么区别，加之当时对JS性能相关<br />
问题认识肤浅，也一直没有在意其区别，今日看learning extjs一书，看到了有专门对Ext.fly特别强调的一处：<br />
</p>
<p class="code"><code><strong>This&nbsp;isn't&nbsp;exactly&nbsp;a&nbsp;speed&nbsp;tip,&nbsp;but&nbsp;is&nbsp;more&nbsp;about&nbsp;conserving&nbsp;memory&nbsp;by&nbsp;using&nbsp;something&nbsp;called&nbsp;<br />
a&nbsp;"flyweight"&nbsp;to&nbsp;perform&nbsp;simple&nbsp;tasks,&nbsp;which&nbsp;results&nbsp;in&nbsp;higher&nbsp;speed&nbsp;by&nbsp;not&nbsp;clogging&nbsp;up&nbsp;the&nbsp;<br />
browser's&nbsp;memory</strong><br />
</code></p>
<p>大概意思也就是Ext.Fly采用flyweight模式使所有fly出来的元素共享内存，可以提高程序执行速度，减少内存占用。<br />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这段话激起了我对这个函数的兴趣，毕竟近段时间一直在搞JS性能优化相关问题，对&#8220;内存&#8221;这个字眼<br />
非常敏感。大概看了下Ext源码对get和fly实现的部分，然后在网上查看了一些资料，终于对他们之间的异同有<br />
了个比较深入的认识。<br />
Ext的官方开发人员给出了如下的解释：<br />
</p>
<p class="code"><code><strong>Ext.Element&nbsp;wraps&nbsp;a&nbsp;lot&nbsp;of&nbsp;functionality&nbsp;around&nbsp;DOM&nbsp;element/node,&nbsp;for&nbsp;example&nbsp;functions&nbsp;like&nbsp;hide,&nbsp;show,&nbsp;<br />
all&nbsp;animation&nbsp;stuff,&nbsp;dimensions&nbsp;getting&nbsp;and&nbsp;setting&nbsp;function&nbsp;and&nbsp;a&nbsp;lot&nbsp;more.&nbsp;<br />
<br />
Ext.Element&nbsp;keeps&nbsp;reference&nbsp;to&nbsp;DOM&nbsp;element&nbsp;it&nbsp;is&nbsp;wrapped&nbsp;around&nbsp;in&nbsp;dom&nbsp;property.&nbsp;Once&nbsp;you&nbsp;have&nbsp;an&nbsp;Ext.Element<br />
&nbsp;(e.g.&nbsp;you&nbsp;call&nbsp;Ext.get('some-d')&nbsp;it&nbsp;is&nbsp;an&nbsp;instance&nbsp;of&nbsp;Element&nbsp;class&nbsp;and&nbsp;you&nbsp;can&nbsp;work&nbsp;with&nbsp;it&nbsp;as&nbsp;such.&nbsp;<br />
<br />
Now,&nbsp;imagine&nbsp;that&nbsp;you&nbsp;need&nbsp;to&nbsp;hide&nbsp;1000&nbsp;DOM&nbsp;nodes,&nbsp;you&nbsp;call&nbsp;1000&nbsp;times&nbsp;Ext.get('some-one-of-<br />
1000-id').hide()&nbsp;so&nbsp;you&nbsp;create&nbsp;1000&nbsp;instances&nbsp;of&nbsp;Element&nbsp;just&nbsp;to&nbsp;call&nbsp;one&nbsp;function:&nbsp;hide.&nbsp;<br />
<br />
Ext.fly&nbsp;is&nbsp;one&nbsp;instance&nbsp;of&nbsp;Ext.Element&nbsp;with&nbsp;"replaceable"&nbsp;DOM&nbsp;node&nbsp;it&nbsp;is&nbsp;wrapped&nbsp;around.&nbsp;<br />
If&nbsp;you&nbsp;call&nbsp;1000&nbsp;times&nbsp;Ext.fly('some-one-of-1000-id').hide()&nbsp;you&nbsp;1000&nbsp;times&nbsp;replace&nbsp;dom&nbsp;property&nbsp;of&nbsp;one&nbsp;instance&nbsp;of&nbsp;Ext.Element.&nbsp;<br />
<br />
Result:&nbsp;higher&nbsp;performance,&nbsp;lower&nbsp;memory&nbsp;usage.&nbsp;<br />
<br />
You&nbsp;only&nbsp;need&nbsp;to&nbsp;keep&nbsp;in&nbsp;mind&nbsp;that&nbsp;you&nbsp;cannot&nbsp;keep&nbsp;Element&nbsp;returned&nbsp;by&nbsp;Ext.fly&nbsp;for&nbsp;later&nbsp;use&nbsp;as&nbsp;<br />
it's&nbsp;dom&nbsp;will&nbsp;sooner&nbsp;or&nbsp;later&nbsp;gets&nbsp;replaced&nbsp;by&nbsp;another&nbsp;one.<br />
</strong></code></p>
<p><strong>这段话中，大致的意思如下：<br />
</strong></p>
<p>Ext.Element是Ext对Dom元素的一个强有力封装，它封装了很多方便对dom操作的接口(并通过Element的dom属性<br />
引用对应的dom元素)，因此每创建一个Element元素都将消耗不少的内存(主要是大量的操作接口消耗)，因此如<br />
果创建过多的Element元素必然导致内存占用的剧增和系统性能的下降。<br />
</p>
<p>Ext.get和Ext.fly返回的都是一个Element对象，但是Ext.get返回的是一个独立的Element，拥有自己独立的操作接口<br />
封装，可以将其返回值保存到变量中，以便以后调用操作等，这样为重用带来了方便。但是它的一个很大缺<br />
点就是内存消耗问题，假如调用Ext.get(id)1000次，则会在内存中创建1000个独立Element，其内存占用可想而<br />
知。但是很多时候我们可能仅仅只是对该dom元素执行一次很简单的操作，如隐藏(hide)，这样如果每次都创建<br />
一个独立Element放在内存中，实在是对内存的巨大浪费，因此当我们在只需要执行一次操作或者一个很简单<br />
的操作时，采用Ext.get就显得很不合理。Ext.fly正是为了解决这个问题而出现，它通过使每次创建的Element共<br />
享内存中的一套操作接口来达到节省内存的效果。</p>
<p><strong>下面来看Ext.fly的实现代码(我简单加了一些注释)：<br />
</strong></p>
<pre jquery1234322781687="5">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_22_23_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_23_Open_Text.style.display='none'; Codehighlighter1_22_23_Closed_Image.style.display='inline'; Codehighlighter1_22_23_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_22_23_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_22_23_Closed_Text.style.display='none'; Codehighlighter1_22_23_Open_Image.style.display='inline'; Codehighlighter1_22_23_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;flyFn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">()</span><span id="Codehighlighter1_22_23_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_22_23_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />flyFn.prototype&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;El.prototype;&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;_cls&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;flyFn();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">将Element的所有操作接口放在_cls中&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;dom&nbsp;is&nbsp;optional&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #008000"><img id="Codehighlighter1_160_184_Open_Image" onclick="this.style.display='none'; Codehighlighter1_160_184_Open_Text.style.display='none'; Codehighlighter1_160_184_Closed_Image.style.display='inline'; Codehighlighter1_160_184_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_160_184_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_160_184_Closed_Text.style.display='none'; Codehighlighter1_160_184_Open_Image.style.display='inline'; Codehighlighter1_160_184_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">El.Flyweight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(dom)</span><span id="Codehighlighter1_160_184_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_160_184_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.dom&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dom;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">仅包含一个dom属性的Object&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />El.Flyweight.prototype&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_cls;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">将操作接口复制给Element实例对象&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">11</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">El.Flyweight.prototype.isFlyweight&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">true</span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">标志该Element是flyweight对象&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">12</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_352_353_Open_Image" onclick="this.style.display='none'; Codehighlighter1_352_353_Open_Text.style.display='none'; Codehighlighter1_352_353_Closed_Image.style.display='inline'; Codehighlighter1_352_353_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_352_353_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_352_353_Closed_Text.style.display='none'; Codehighlighter1_352_353_Open_Image.style.display='inline'; Codehighlighter1_352_353_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />El._flyweights&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_352_353_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_352_353_Open_Text"><span style="color: #000000">{}</span></span><span style="color: #000000">;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">flyweight对象缓存容器&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img id="Codehighlighter1_405_747_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_747_Open_Text.style.display='none'; Codehighlighter1_405_747_Closed_Image.style.display='inline'; Codehighlighter1_405_747_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_405_747_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_405_747_Closed_Text.style.display='none'; Codehighlighter1_405_747_Open_Image.style.display='inline'; Codehighlighter1_405_747_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />El.fly&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">(el,&nbsp;named)</span><span id="Codehighlighter1_405_747_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_405_747_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;named&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;named&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;'_global';&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;el&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Ext.getDom(el);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">取得dom对象&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">18</span><span style="color: #008000"><img id="Codehighlighter1_488_517_Open_Image" onclick="this.style.display='none'; Codehighlighter1_488_517_Open_Text.style.display='none'; Codehighlighter1_488_517_Closed_Image.style.display='inline'; Codehighlighter1_488_517_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_488_517_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_488_517_Closed_Text.style.display='none'; Codehighlighter1_488_517_Open_Image.style.display='inline'; Codehighlighter1_488_517_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">el)</span><span id="Codehighlighter1_488_517_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_488_517_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_550_646_Open_Image" onclick="this.style.display='none'; Codehighlighter1_550_646_Open_Text.style.display='none'; Codehighlighter1_550_646_Closed_Image.style.display='inline'; Codehighlighter1_550_646_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_550_646_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_550_646_Closed_Text.style.display='none'; Codehighlighter1_550_646_Open_Image.style.display='inline'; Codehighlighter1_550_646_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">El._flyweights[named])</span><span id="Codehighlighter1_550_646_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_550_646_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;El._flyweights[named]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;El.Flyweight();&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">仅在第一次调用Ext.fly时创建一个Flyweight对象并缓存&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">23</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;El._flyweights[named].dom&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;el;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">将flyweight对象的dom属性指向该el&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">25</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;El._flyweights[named];&nbsp;<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000">;</span></div>
<br />
从上面的代码不难看出，仅在第一次调用Ext.fly时创建一个Flyweight对象（该对象包含了Element的所有操作接口）并将其缓存，</pre>
<p>之后的所有fly操作都只是修改该flyweight对象的dom属性，每次fly返回的结果都是共享的同一个flyweight对象。<br />
这样每次fly返回的Element相比Ext.get而言，减少了每次创建Element时对大量的操作接口的创建。所有fly的对象<br />
都共享一套Element操作接口，内存占用自然少了很多，而且执行速度也得到了提升。在大量的创建操作中效<br />
果会更加明显。</p>
<p>由于fly的操作原理，我们不能将fly的返回结果保存在变量中以便重用，因为每次fly操作都将可能改变该变量的<br />
dom指向。如下面的代码就是不正确的：<br />
</p>
<pre jquery1234322781687="11">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;my_id&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Ext.fly('my_id');&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />Ext.fly('another_id');&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">此时my_id的dom引用已经变为another_id&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">3</span><span style="color: #008000"><img id="Codehighlighter1_116_192_Open_Image" onclick="this.style.display='none'; Codehighlighter1_116_192_Open_Text.style.display='none'; Codehighlighter1_116_192_Closed_Image.style.display='inline'; Codehighlighter1_116_192_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_116_192_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_116_192_Closed_Text.style.display='none'; Codehighlighter1_116_192_Open_Image.style.display='inline'; Codehighlighter1_116_192_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #000000">my_id.highlight('FF0000',</span><span id="Codehighlighter1_116_192_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_116_192_Open_Text"><span style="color: #000000">{&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">此处的操作将是对&nbsp;&nbsp;another_id元素的操作&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #008080">4</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;endColor:'0000FF',&nbsp;duration:&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000">);</span></div>
</pre>
<p>在以后使用中，一定要合理的利用Ext.get和Ext.fly，避免滥用Ext.get这个&#8220;重量级&#8221;的方法。<br />
<br />
转自：http://www.ajaxbbs.net/post/extjs/Ext-fly-and-Ext-get.html</p><img src ="http://www.blogjava.net/redhatlinux/aggbug/254220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2009-02-11 11:51 <a href="http://www.blogjava.net/redhatlinux/archive/2009/02/11/254220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ExtJs2.x开发环境--Eclipse、Adobe Dreamweaver安装和配置ExtJs2.x开发插件</title><link>http://www.blogjava.net/redhatlinux/archive/2008/10/27/236809.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Mon, 27 Oct 2008 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/10/27/236809.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/236809.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/10/27/236809.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/236809.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/236809.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spket是目前支持Ext 2.0最为出色的IDE。 它采用.jsb project file 文件并将继承于基类和所有文档的内容嵌入到生成代码提示的Script doc中。虽然有比较好用的开发插件，但是我个人建议和我一样的初学者还是应该采用手写代码的方式去学习ExtJs，这样便于更好的掌握和理解ExtJs。毕竟工具还是为了项目的快速开发而设计的，学习就应该一步一个脚印。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/10/27/236809.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/236809.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-10-27 11:08 <a href="http://www.blogjava.net/redhatlinux/archive/2008/10/27/236809.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【个人收藏】几个用ExtJs构建的应用演示(更新中....)</title><link>http://www.blogjava.net/redhatlinux/archive/2008/10/24/236384.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Fri, 24 Oct 2008 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/10/24/236384.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/236384.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/10/24/236384.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/236384.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/236384.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 收藏的几个用ExtJs构建的应用演示，本人学习时找到的，希望对大家学习有所帮助，可以看看别人的代码是如何组织的，因为ExtJs的代码组织起来比较困难，代码量也很大。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/10/24/236384.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/236384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-10-24 13:20 <a href="http://www.blogjava.net/redhatlinux/archive/2008/10/24/236384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【个人收藏】ExtJs2.2视频教程在线观看及下载</title><link>http://www.blogjava.net/redhatlinux/archive/2008/10/24/236354.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Fri, 24 Oct 2008 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/10/24/236354.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/236354.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/10/24/236354.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/236354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/236354.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ExtJs2.2视频教程在线观看及下载，由DOJO中国 | 程序员联盟亲情打造，正在学习中,感觉很不错，讲得非常细，也让我对ExtJs有了新的认识，感谢DOJOCHINA,感谢陈治文老师&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/10/24/236354.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/236354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-10-24 11:19 <a href="http://www.blogjava.net/redhatlinux/archive/2008/10/24/236354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些重要的AOP概念和术语(摘自Spring开发参考手册)</title><link>http://www.blogjava.net/redhatlinux/archive/2008/09/03/226653.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 03 Sep 2008 05:23:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/09/03/226653.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/226653.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/09/03/226653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/226653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/226653.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     面向切面编程（AOP）通过提供另外一种思考程序结构的途经来弥补面向对象编程（OOP）的不足。在OOP中模块化的关键单元是类（classes），而在AOP中模块化的单元则是切面。切面能对关注点进行模块化，例如横切多个类型和对象的事务管理。（在AOP术语中通常称作横切（crosscutting）关注点。）&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/09/03/226653.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/226653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-09-03 13:23 <a href="http://www.blogjava.net/redhatlinux/archive/2008/09/03/226653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【总结-含源码】Spring Security学习总结二</title><link>http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Mon, 01 Sep 2008 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/226010.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/226010.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/226010.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      前一篇文章里介绍了Spring Security的一些基础知识，相信你对Spring Security的工作流程已经有了一定的了解，如果你同时在读源代码，那你应该可以认识的更深刻。在这篇文章里，我们将对Spring Security进行一些自定义的扩展，比如自定义实现UserDetailsService，保护业务方法以及如何对用户权限等信息进行动态的配置管理。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/226010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-09-01 10:08 <a href="http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【总结-含源码】Spring Security学习总结一(补命名空间配置)</title><link>http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 20 Aug 2008 02:25:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/223148.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/223148.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/223148.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      在认识Spring Security之前，所有的权限验证逻辑都混杂在业务逻辑中，用户的每个操作以前可能都需要对用户是否有进行该项操作的权限进行判断，来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方，难以维护。AOP（Aspect Oriented Programming）和Spring Security为我们的应用程序很好的解决了此类问题，正如系统日志，事务管理等这些系统级的服务一样，我们应该将它作为系统一个单独的”切面”进行管理，以达到业务逻辑与系统级的服务真正分离的目的，Spring Security将系统的安全逻辑从业务中分离出来。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/223148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-08-20 10:25 <a href="http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】Spring Security-2.0.x参考文档的”使用命名空间简化配置“</title><link>http://www.blogjava.net/redhatlinux/archive/2008/08/06/220380.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 06 Aug 2008 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/08/06/220380.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/220380.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/08/06/220380.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/220380.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/220380.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       从Spring-2.0开始可以使用命名空间的配置方式。 使用它呢，可以通过附加xml架构，为传统的spring beans应用环境语法做补充。你可以在spring参考文档得到更多信息。命名空间元素可以简单的配置单个bean，或使用更强大的，定义一个备用配置语法，这可以更加紧密的匹配问题域，隐藏用户背后的复杂性。简单元素可能隐藏事实，多种bean和处理步骤添加到应用环境中。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/08/06/220380.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/220380.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-08-06 11:58 <a href="http://www.blogjava.net/redhatlinux/archive/2008/08/06/220380.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】集成ACEGI 进行权限控制</title><link>http://www.blogjava.net/redhatlinux/archive/2008/08/06/220365.html</link><dc:creator>tangtb</dc:creator><author>tangtb</author><pubDate>Wed, 06 Aug 2008 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/redhatlinux/archive/2008/08/06/220365.html</guid><wfw:comment>http://www.blogjava.net/redhatlinux/comments/220365.html</wfw:comment><comments>http://www.blogjava.net/redhatlinux/archive/2008/08/06/220365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/redhatlinux/comments/commentRss/220365.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/redhatlinux/services/trackbacks/220365.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       Acegi是一个能够为基于Spring的应用系统提供描述性安全保护的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean，充分利用了Spring对依赖注入和面向切面编程的支持。<br>    Acegi也能够通过保护方法调用在更底层的级别上强制安全性。使用Spring AOP，Acegi代理对象，将“切面”应用于对象，以确保用户只有在拥有恰当授权时才能调用受保护的方法。<br>    集成Acegi到自己的项目中, 并且将用户信息和权限放到数据库, 提供方法允许权限动态变化,变化后自动加载最新的权限。&nbsp;&nbsp;<a href='http://www.blogjava.net/redhatlinux/archive/2008/08/06/220365.html'>阅读全文</a><img src ="http://www.blogjava.net/redhatlinux/aggbug/220365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/redhatlinux/" target="_blank">tangtb</a> 2008-08-06 10:41 <a href="http://www.blogjava.net/redhatlinux/archive/2008/08/06/220365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>