﻿<?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-泰坦领域</title><link>http://www.blogjava.net/xtitan/</link><description>学习与生活的痕迹</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:57:33 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:57:33 GMT</pubDate><ttl>60</ttl><item><title>openlayers 标记1</title><link>http://www.blogjava.net/xtitan/archive/2010/03/16/315568.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Tue, 16 Mar 2010 03:59:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2010/03/16/315568.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/315568.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2010/03/16/315568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/315568.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/315568.html</trackback:ping><description><![CDATA[<div align="center">&nbsp;&nbsp;&nbsp;<strong>
OpenLayers基础知识：</strong>
<script type="text/javascript">document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type="text/javascript">                        function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
<br />
</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<script type="text/javascript">document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type="text/javascript">                        function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
OpenLayers是一个开源的js框架，用于在您的浏览器中实现地图浏览的效果和基本的zoom，pan等功能。OpenLayers支持的地图来源
包括了WMS，GoogleMap，KaMap，MSVirtualEarth等等，您也可以用简单的图片作为源，在这一方面OPenLayers提供了
非常多的选择。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<script type="text/javascript">document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length > 300) {
text = text + "\r\n\n本文来自CSDN博客，转载请标明出处：" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
</script>
<script type="text/javascript">                        function StorePage() { d = document; t = d.selection ? (d.selection.type != 'None' ? d.selection.createRange().text : '') : (d.getSelection ? d.getSelection() : ''); void (keyit = window.open('http://www.365key.com/storeit.aspx?t=' + escape(d.title) + '&u=' + escape(d.location.href) + '&c=' + escape(t), 'keyit', 'scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes')); keyit.focus(); }</script>
要使用OpenLayers，您可以到它的官方网站http://www.openlayers.org下载他的压缩
包，解压后可以看到其中的一些目录和
文件。拷贝dist目录下的OpenLayer.js、根目录下的lib目录、根目录下的img目录到你网站的scripts目录下（当然，这个只是例
子，您网站的目录结构您自己说得算，只要保证OpenLayers.js，/lib，/img在同一目录中即可）。 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenLayers中最重要的2个对象Map和Layer.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenLayers.Map的实体化方法：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var map = new OpenLayers.Map("map");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里参数"map"对应页面中显示Map地图的DIV的id名称。<br />
&nbsp;&nbsp;&nbsp;&nbsp; OpenLayers.Layer为创建图层对象,OpenLayers提供了很多图层的扩展：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.Image <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.HTTPRequest <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Layer.Grid <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.WMS <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Layer.KaMap <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.EventPane <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Layer.Google <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.VirtualEarth <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Layer.Markers <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.Text <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Layer.GeoRSS <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Layer.Boxes <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Layer.TMS<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image类封装一个实际图象作为图曾内容 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTPRequest类可以接收一个动态生成的图片，你可以通过HTTPRequest类的参数向
服务器发送参数 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Grid类是HTTPRequest类的子类，提供更加详细的方法 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WMS类用于连接WMS服务器以获得图象 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KaMap
类用于连接MapServer <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EventPane类作为用于接收用户操作的图层 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Google类用于从Google获得图象，它仍然需
要你从Google获得API KEY，并且include <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VirtualEarth类用于操作VirtualEarth的图层 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Markers
类用于生成接收和显示用户本地标记的图层 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Text类用于接收CSV文件 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GeoRSS类是Marker类的子类，用于封装接收
GeoRSS并在图层中作出marker <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Boxes同样也是Marker类的子类，可以用div来做marker，而非image <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TMS
用于接收TMS服务器的地图<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; OpenLayers还提供了丰富的Control类为地图浏览添加一些工具，继承自OpenLayers.Control类 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Control.LayerSwitcher <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Control.MouseDefaults <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Control.MousePosition <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Control.MouseToolbar <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Control.OverviewMap <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Control.PanZoom <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Control.PanZoomBar <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * OpenLayers.Control.Permalink <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
OpenLayers.Control.Scale <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这些类的实例会在地图浏览的&#8220;窗口&#8221;上增加一些工具栏或是&#8220;按钮&#8221;，增加互动性和功
能性。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenLayers对常用的数据结构进行了封装 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # OpenLayers.LonLat <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #
OpenLayers.Size <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # OpenLayers.Pixel <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # OpenLayers.Bounds以便于操作。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 现在写个最简单的例子做记录：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;">@&nbsp;page&nbsp;language</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">java</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;pageEncoding</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">UTF-8</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.01&nbsp;Transitional//EN"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">WMS&nbsp;MAP&nbsp;INIT</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">title</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="http://localhost:8080/geoserver/openlayers/OpenLayers.js"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">style&nbsp;</span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text/css"</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #800000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#map&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">{</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;">&nbsp;100%</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;">&nbsp;100%</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;border</span><span style="background-color: #f5f5f5; color: #000000;">:</span><span style="background-color: #f5f5f5; color: #0000ff;">&nbsp;1px&nbsp;solid&nbsp;black</span><span style="background-color: #f5f5f5; color: #000000;">;</span><span style="background-color: #f5f5f5; color: #ff0000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">}</span><span style="background-color: #f5f5f5; color: #800000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">style</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">script&nbsp;</span><span style="color: #ff0000;">defer</span><span style="color: #0000ff;">="defer"</span><span style="color: #ff0000;">&nbsp;type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">&gt;</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;init(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">数据存储的左、下、右、上的范围，默认为NULL</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;bounds&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;OpenLayers.Bounds(<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">17831.799</span><span style="background-color: #f5f5f5; color: #000000;">,&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">91085.208</span><span style="background-color: #f5f5f5; color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">18221.799</span><span style="background-color: #f5f5f5; color: #000000;">,&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">91287.26</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">创建一个OpenLayers.Map构造新的地图。</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;options&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controls:&nbsp;[],<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxExtent:&nbsp;bounds,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxResolution:&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">1.5234375</span><span style="background-color: #f5f5f5; color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;projection:&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">EPSG:4326</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;units:&nbsp;'degrees'<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;map&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;OpenLayers.Map('map',&nbsp;options);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">创建一个图层信息</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;layer&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #f5f5f5; color: #0000ff;">new</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;OpenLayers.Layer.WMS(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">State</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">,&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">http://127.0.0.1:8080/geoserver/wms</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">,&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layers:&nbsp;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">dwg:0_line</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});</span><span style="background-color: #f5f5f5; color: #008000;">//<br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">将创建的图层对象添加到Map对象</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.addLayer(layer);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="background-color: #f5f5f5; color: #008000;">//</span><span style="background-color: #f5f5f5; color: #008000;">显示地图</span><span style="background-color: #f5f5f5; color: #008000;"><br />
</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.zoomToMaxExtent();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">script</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">head</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">body&nbsp;</span><span style="color: #ff0000;">onload</span><span style="color: #0000ff;">="init()"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">div&nbsp;</span><span style="color: #ff0000;">id</span><span style="color: #0000ff;">="map"</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">div</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">body</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">html</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span></div>
<img src ="http://www.blogjava.net/xtitan/aggbug/315568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2010-03-16 11:59 <a href="http://www.blogjava.net/xtitan/archive/2010/03/16/315568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>GEOSERVER2.0.1 NG 应用配置指南（1）</title><link>http://www.blogjava.net/xtitan/archive/2010/03/15/315423.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Mon, 15 Mar 2010 01:30:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2010/03/15/315423.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/315423.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2010/03/15/315423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/315423.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/315423.html</trackback:ping><description><![CDATA[&nbsp; 最新GEOSERVER服务器版本：geoserver-2.0.1-ng<br />
&nbsp; 下载地址：http://nchc.dl.sourceforge.net/project/geoserver/GeoServer/2.0.1/geoserver-2.0.1-ng.exe<br />
<br />
&nbsp; 1.点击安装文件将geoserver进行安装,并填写服务器管理的账号和密码<br />
&nbsp; 2.点击Start GeoServer 启动服务器<br />
&nbsp; 3.打开http://localhost:8080/geoserver/web/进入服务器管理页面，输入账号密码进行登录<br />
&nbsp; 4.点击workspaces（左侧），点击Add new workspace，填写Name和Namespace URI，点击save确定一个工作空间<br />
&nbsp; 5.点击Store，点击Add new Store，选择PostGIS&nbsp;&nbsp; - PostGIS Database(这个是配置连接数据库的，如果是直接使用shp文件则选择Shapefile&nbsp;&nbsp; - ESRI(tm) Shapefiles (*.shp))<br />
&nbsp; 6.选择<span>Workspace(第四步建立的)，填写数据源名称(</span><span>Data Source Name</span><span>),填写</span><span><span>Connection Parameters的内容(数据库的连接信息)，勾上</span></span><span>Enabled为启动后save保存。(服务器会自动判断是否连接上，连不上有提示进行查看修改)<br />
&nbsp; 7.点击Layers进行图层配置，点击Add a new resource，选择图层的来源(刚才填写的工作空间和数据源名称)<br />
&nbsp; 8.这时可以查看到数据源中的所有图层列表，选择一个需要配置的点击Publish进行配置<br />
&nbsp; 9.主要配置有：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Declared SRS(使用的4326)：用来构建像素坐标系与真实世界的大地坐标系（或其它一些本地坐标系）之间双向的映射关系。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SRS handling(第一个)：其中有三个选型<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第一个是 大概意思是说强制使用你在SRS里设置的那个，本地投影文件忽略。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第二个是 大概意思是说使用本地投影文件重投影你设置的SRS。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
第三个是 大概意思是说保留使用本地投影文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Native Bounding Box：点击下方的Compute from data<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lat/Lon Bounding Box：点击下方的Compute from native bounds<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Publishing：点击上面的第二页Publishing,这里主要是配置图层的样式，样式添加在后面会介绍<br />
&nbsp;&nbsp;&nbsp;&nbsp; 图层就配置完成了，点击save保存。<br />
&nbsp; 10.左侧菜单栏最下面的Layer Preview找到自己配置的图层点击OpenLayers就可以查看图层是否正常使用，并查看效果<br />
<br />
<br />
&nbsp; 附1：图层组<br />
&nbsp;&nbsp;&nbsp; 1.左侧Data中点击Layer Groups，点击Add new layer group，输入图层组名称后提交<br />
&nbsp;&nbsp;&nbsp; 2.Bounds中点击find查找SRS(4326)<br />
&nbsp;&nbsp;&nbsp; 3.点击Generate Bounds 自动填写坐标系信息<br />
&nbsp;&nbsp;&nbsp; 4.点击Add Layer来添加图层<br />
&nbsp;&nbsp;&nbsp; 5.save保存<br />
&nbsp;&nbsp;&nbsp; 6.Layer Preview中点击图层组的OpenLayers进行效果查看<br />
<br />
&nbsp; 附2：样式<br />
&nbsp;&nbsp;&nbsp; 1.左侧Data中点击Style,点击Add a new style来创建一个新的样式<br />
&nbsp;&nbsp;&nbsp; 2.填写名称，将样式代码输入编辑框或者下方SLD file直接上传样式文件<br />
&nbsp;&nbsp;&nbsp; 3.点击submit提交保存<br />
&nbsp;&nbsp;&nbsp; 我使用的编写图层样式工具udig<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<img src ="http://www.blogjava.net/xtitan/aggbug/315423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2010-03-15 09:30 <a href="http://www.blogjava.net/xtitan/archive/2010/03/15/315423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析整合整套WEBGIS的应用框架</title><link>http://www.blogjava.net/xtitan/archive/2010/03/12/315284.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Fri, 12 Mar 2010 07:45:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2010/03/12/315284.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/315284.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2010/03/12/315284.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/315284.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/315284.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 记录GIS学习信息。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; Shapefile格式地图文件：存储地图信息<br />
&nbsp;&nbsp;&nbsp;&nbsp; shp2pgsql工具：将Shp地图文件信息导入postgis空间数据库<br />
&nbsp;&nbsp;&nbsp;&nbsp; Geoserver2.0.1：GIS地图服务器，连接postgis空间数据库取得数据，配置图层文件后可以用于WEBGIS显示<br />
&nbsp;&nbsp;&nbsp;&nbsp; OpenLayers：用于开发WebGIS客户端的JavaScript包。页面显示GIS的各项操作都在这里编辑。也是学习研究如何应用的重点<br />
&nbsp;&nbsp;&nbsp;&nbsp; Geotools:一套开放源码的 Java API,它提供了一套空间数据操作的核心算法,为在兼容OGC标准的空间对象模型中进行基础的几何操作提供2D空间谓词API.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 流程：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 使用shp2pgsql工具将Shapefile格式地图文件的数据信息导入postgis空间数据库进行存储，在Geoserver中配置数据库连接后取得图层，配置图层信息和样式后为可用状态。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在JAVA的WEBGIS项目中连接Geoserver取得空间数据，用Geotools进行数据运算处理后将数据传输给前台显示层的OpenLayers，用OpenLayers制作出各种显示功能及样式。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 写的也许不对，请大家指教。我现在是准备将WEBGIS框架进行分析整理后进行逐个攻克，然后延伸。<br />
<a onclick="var e=document.getElementById('id15c_hf_0');&#13;&#10;e.name='vectorResources:4:resourcelink'; e.value='x';var&#13;&#10;f=document.getElementById('id15c');var ff=f;if (ff.onsubmit !=&#13;&#10;undefined) { if (ff.onsubmit()==false) return false;&#13;&#10;}f.submit();e.value='';e.name='';return false;" href="http://localhost:8080/geoserver/web/?wicket:bookmarkablePage=:org.geoserver.web.data.store.NewDataPage#"></a>
<img src ="http://www.blogjava.net/xtitan/aggbug/315284.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2010-03-12 15:45 <a href="http://www.blogjava.net/xtitan/archive/2010/03/12/315284.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)12条有用的Flex代码</title><link>http://www.blogjava.net/xtitan/archive/2009/04/13/265221.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Mon, 13 Apr 2009 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2009/04/13/265221.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/265221.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2009/04/13/265221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/265221.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/265221.html</trackback:ping><description><![CDATA[1.复制内容到系统剪贴板 <br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">System.setClipboard(strContent);&nbsp;</span></div>
2.复制一个ArrayCollection <br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">dummy&nbsp;solution(&nbsp;well,&nbsp;it&nbsp;works&nbsp;)&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">var&nbsp;bar:ArrayCollection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ArrayCollection();&nbsp;<br />
<img id="Codehighlighter1_120_152_Open_Image" onclick="this.style.display='none'; Codehighlighter1_120_152_Open_Text.style.display='none'; Codehighlighter1_120_152_Closed_Image.style.display='inline'; Codehighlighter1_120_152_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_120_152_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_120_152_Closed_Text.style.display='none'; Codehighlighter1_120_152_Open_Image.style.display='inline'; Codehighlighter1_120_152_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;each&nbsp;(&nbsp;var&nbsp;i:Object&nbsp;in&nbsp;ac&nbsp;)</span><span id="Codehighlighter1_120_152_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_152_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bar.addItem(&nbsp;i&nbsp;);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;fantastic&nbsp;!&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;var&nbsp;bar:ListCollectionView&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ListCollectionView(&nbsp;ListCollectionView(&nbsp;ac&nbsp;).list&nbsp;);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
3.打开一个新浏览器窗口 <br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">navigateToURL(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;URLRequest(</span><span style="color: #000000">'</span><span style="color: #000000">http://ntt.cc</span><span style="color: #000000">'</span><span style="color: #000000">),&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">_blank</span><span style="color: #000000">'</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
4.刷新浏览器<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">navigateToURL(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;URLRequest(</span><span style="color: #000000">"</span><span style="color: #000000">javascript:location.reload();</span><span style="color: #000000">"</span><span style="color: #000000">),</span><span style="color: #000000">"</span><span style="color: #000000">_self</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span></div>
5.关闭浏览器<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">navigateToURL(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;URLRequest(</span><span style="color: #000000">"</span><span style="color: #000000">javascript:window.close()</span><span style="color: #000000">"</span><span style="color: #000000">),</span><span style="color: #000000">"</span><span style="color: #000000">_self</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
6.设置Alert 窗口的背景为透明<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Alert&nbsp;<br />
<img id="Codehighlighter1_11_78_Open_Image" onclick="this.style.display='none'; Codehighlighter1_11_78_Open_Text.style.display='none'; Codehighlighter1_11_78_Closed_Image.style.display='inline'; Codehighlighter1_11_78_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_11_78_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_11_78_Closed_Text.style.display='none'; Codehighlighter1_11_78_Open_Image.style.display='inline'; Codehighlighter1_11_78_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_11_78_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_11_78_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;modalTransparency:</span><span style="color: #000000">0.0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;modalTransparencyBlur:</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
7.取随机颜色<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">lbl.setStyle(</span><span style="color: #000000">'</span><span style="color: #000000">color</span><span style="color: #000000">'</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0xffffff</span><span style="color: #000000">*</span><span style="color: #000000">Math.random());&nbsp;</span></div>
<p>8.清除子串左侧空格 </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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;function&nbsp;LTrim(s&nbsp;:&nbsp;String):String&nbsp;<br />
<img id="Codehighlighter1_46_261_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_261_Open_Text.style.display='none'; Codehighlighter1_46_261_Closed_Image.style.display='inline'; Codehighlighter1_46_261_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_46_261_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_46_261_Closed_Text.style.display='none'; Codehighlighter1_46_261_Open_Image.style.display='inline'; Codehighlighter1_46_261_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_46_261_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_46_261_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;i&nbsp;:&nbsp;Number&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">32</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">13</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">9</span><span style="color: #000000">)&nbsp;<br />
<img id="Codehighlighter1_192_215_Open_Image" onclick="this.style.display='none'; Codehighlighter1_192_215_Open_Text.style.display='none'; Codehighlighter1_192_215_Closed_Image.style.display='inline'; Codehighlighter1_192_215_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_192_215_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_192_215_Closed_Text.style.display='none'; Codehighlighter1_192_215_Open_Image.style.display='inline'; Codehighlighter1_192_215_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_192_215_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_192_215_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s.substring(i,s.length);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
9.清除字串右侧空格<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;function&nbsp;RTrim(s&nbsp;:&nbsp;String):String&nbsp;<br />
<img id="Codehighlighter1_46_266_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_266_Open_Text.style.display='none'; Codehighlighter1_46_266_Closed_Image.style.display='inline'; Codehighlighter1_46_266_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_46_266_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_46_266_Closed_Text.style.display='none'; Codehighlighter1_46_266_Open_Image.style.display='inline'; Codehighlighter1_46_266_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_46_266_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_46_266_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;i&nbsp;:&nbsp;Number&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.length&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">32</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">13</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">s.charCodeAt(i)&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">9</span><span style="color: #000000">)&nbsp;<br />
<img id="Codehighlighter1_202_225_Open_Image" onclick="this.style.display='none'; Codehighlighter1_202_225_Open_Text.style.display='none'; Codehighlighter1_202_225_Closed_Image.style.display='inline'; Codehighlighter1_202_225_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_202_225_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_202_225_Closed_Text.style.display='none'; Codehighlighter1_202_225_Open_Image.style.display='inline'; Codehighlighter1_202_225_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_202_225_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_202_225_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">--</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s.substring(</span><span style="color: #000000">0</span><span style="color: #000000">,i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
10.清除字串左右的空格<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;function&nbsp;Trim(s&nbsp;:&nbsp;String):String&nbsp;<br />
<img id="Codehighlighter1_45_83_Open_Image" onclick="this.style.display='none'; Codehighlighter1_45_83_Open_Text.style.display='none'; Codehighlighter1_45_83_Closed_Image.style.display='inline'; Codehighlighter1_45_83_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_45_83_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_45_83_Closed_Text.style.display='none'; Codehighlighter1_45_83_Open_Image.style.display='inline'; Codehighlighter1_45_83_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_45_83_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_45_83_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;LTrim(RTrim(s));&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
11.获取数据类型 <br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">getQualifiedClassName(data)</span></div>
12.生成随机字符串.<br />
<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"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;function&nbsp;GenerateCheckCode():String&nbsp;<br />
<img id="Codehighlighter1_48_642_Open_Image" onclick="this.style.display='none'; Codehighlighter1_48_642_Open_Text.style.display='none'; Codehighlighter1_48_642_Closed_Image.style.display='inline'; Codehighlighter1_48_642_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_48_642_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_48_642_Closed_Text.style.display='none'; Codehighlighter1_48_642_Open_Image.style.display='inline'; Codehighlighter1_48_642_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_48_642_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_48_642_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">init&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;ran:Number;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;number:Number;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;code:String;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;checkCode:String&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">""</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">get&nbsp;4&nbsp;radom&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(var&nbsp;i:</span><span style="color: #0000ff">int</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">4</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;<br />
<img id="Codehighlighter1_238_612_Open_Image" onclick="this.style.display='none'; Codehighlighter1_238_612_Open_Text.style.display='none'; Codehighlighter1_238_612_Closed_Image.style.display='inline'; Codehighlighter1_238_612_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_238_612_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_238_612_Closed_Text.style.display='none'; Codehighlighter1_238_612_Open_Image.style.display='inline'; Codehighlighter1_238_612_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_238_612_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_238_612_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ran</span><span style="color: #000000">=</span><span style="color: #000000">Math.random();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;number&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">Math.round(ran</span><span style="color: #000000">*</span><span style="color: #000000">10000</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">get&nbsp;result&nbsp;like&nbsp;0.1234&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(number&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;<br />
<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;code&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;String.fromCharCode(</span><span style="color: #000000">48</span><span style="color: #000000">+</span><span style="color: #000000">(number&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">0's&nbsp;ASCII&nbsp;code&nbsp;is&nbsp;48&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;<br />
<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;code&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;String.fromCharCode(</span><span style="color: #000000">65</span><span style="color: #000000">+</span><span style="color: #000000">(number&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">26</span><span style="color: #000000">))&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;A's&nbsp;ASCII&nbsp;code&nbsp;is&nbsp;65&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkCode&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;code;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;checkCode;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
 <img src ="http://www.blogjava.net/xtitan/aggbug/265221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2009-04-13 09:50 <a href="http://www.blogjava.net/xtitan/archive/2009/04/13/265221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java多线程程序设计详细解析</title><link>http://www.blogjava.net/xtitan/archive/2009/03/16/260136.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Mon, 16 Mar 2009 15:47:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2009/03/16/260136.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/260136.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2009/03/16/260136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/260136.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/260136.html</trackback:ping><description><![CDATA[一、理解多线程 <br />
多线程是这样一种机制，它允许在程序中并发执行多个指令流，每个指令流都称为一个线程，彼此间互相独立。 <br />
线程又称为轻量级进程，它和进程一样拥有独立的执行控制，由操作系统负责调度，区别在于线程没有独立的存储空间，而是和所属进程中的其它线程共享一个存储空间，这使得线程间的通信远较进程简单。 <br />
多个线程的执行是并发的，也就是在逻辑上&#8220;同时&#8221;，而不管是否是物理上的&#8220;同时&#8221;。如果系统只有一个CPU，那么真正的&#8220;同时&#8221;是不可能的，但是由于CPU的速度非常快，用户感觉不到其中的区别，因此我们也不用关心它，只需要设想各个线程是同时执行即可。 <br />
多线程和传统的单线程在程序设计上最大的区别在于，由于各个线程的控制流彼此独立，使得各个线程之间的代码是乱序执行的，由此带来的线程调度，同步等问题，将在以后探讨。 <br />
二、在Java中实现多线程 <br />
我们不妨设想，为了创建一个新的线程，我们需要做些什么？很显然，我们必须指明这个线程所要执行的代码，而这就是在Java中实现多线程我们所需要做的一切！ <br />
真是神奇！Java是如何做到这一点的？通过类！作为一个完全面向对象的语言，Java提供了类java.lang.Thread来方便多线程编程，这个类提供了大量的方法来方便我们控制自己的各个线程，我们以后的讨论都将围绕这个类进行。 <br />
那么如何提供给 Java 我们要线程执行的代码呢？让我们来看一看 Thread 类。Thread 类最重要的方法是run()，它为Thread类的方法start()所调用，提供我们的线程所要执行的代码。为了指定我们自己的代码，只需要覆盖它！ <br />
方法一：继承 Thread 类，覆盖方法 run()，我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。下面是一个例子： <br />
public class MyThread extends Thread <br />
{ <br />
int count= 1, number; <br />
public MyThread(int num) <br />
{ <br />
number = num; <br />
System.out.println <br />
("创建线程 " + number); <br />
} <br />
public void run() { <br />
while(true) { <br />
System.out.println <br />
("线程 " + number + ":计数 " + count); <br />
if(++count== 6) return; <br />
} <br />
} <br />
public static void main(String args[]) <br />
{ <br />
for(int i = 0; <br />
i 〈 5; i++) new MyThread(i+1).start(); <br />
} <br />
} <br />
<br />
这种方法简单明了，符合大家的习惯，但是，它也有一个很大的缺点，那就是如果我们的类已经从一个类继承（如小程序必须继承自 Applet 类），则无法再继承 Thread 类，这时如果我们又不想建立一个新的类，应该怎么办呢？ <br />
我们不妨来探索一种新的方法：我们不创建Thread类的子类，而是直接使用它，那么我们只能将我们的方法作为参数传递给 Thread 类的实例，有点类似回调函数。但是 Java 没有指针，我们只能传递一个包含这个方法的类的实例。 <br />
那么如何限制这个类必须包含这一方法呢？当然是使用接口！（虽然抽象类也可满足，但是需要继承，而我们之所以要采用这种新方法，不就是为了避免继承带来的限制吗？） <br />
Java 提供了接口 java.lang.Runnable 来支持这种方法。 <br />
方法二：实现 Runnable 接口 <br />
Runnable接口只有一个方法run()，我们声明自己的类实现Runnable接口并提供这一方法，将我们的线程代码写入其中，就完成了这一部
分的任务。但是Runnable接口并没有任何对线程的支持，我们还必须创建Thread类的实例，这一点通过Thread类的构造函数public
Thread(Runnable target);来实现。下面是一个例子： <br />
public class MyThread implements Runnable <br />
{ <br />
int count= 1, number; <br />
public MyThread(int num) <br />
{ <br />
number = num; <br />
System.out.println("创建线程 " + number); <br />
} <br />
public void run() <br />
{ <br />
while(true) <br />
{ <br />
System.out.println <br />
("线程 " + number + ":计数 " + count); <br />
if(++count== 6) return; <br />
} <br />
} <br />
public static void main(String args[]) <br />
{ <br />
for(int i = 0; i 〈 5; <br />
i++) new Thread(new MyThread(i+1)).start(); <br />
} <br />
} <br />
<br />
严格地说，创建Thread子类的实例也是可行的，但是必须注意的是，该子类必须没有覆盖 Thread 类的 run 方法，否则该线程执行的将是子类的 run 方法，而不是我们用以实现Runnable 接口的类的 run 方法，对此大家不妨试验一下。 <br />
使用 Runnable
接口来实现多线程使得我们能够在一个类中包容所有的代码，有利于封装，它的缺点在于，我们只能使用一套代码，若想创建多个线程并使各个线程执行不同的代
码，则仍必须额外创建类，如果这样的话，在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。 <br />
综上所述，两种方法各有千秋，大家可以灵活运用。 <br />
下面让我们一起来研究一下多线程使用中的一些问题。 <br />
三、线程的四种状态 <br />
1. 新状态：线程已被创建但尚未执行（start() 尚未被调用）。 <br />
2. 可执行状态：线程可以执行，虽然不一定正在执行。CPU 时间随时可能被分配给该线程，从而使得它执行。 <br />
3. 死亡状态：正常情况下 run() 返回使得线程死亡。调用 stop()或 destroy() 亦有同样效果，但是不被推荐，前者会产生异常，后者是强制终止，不会释放锁。 <br />
4. 阻塞状态：线程不会被分配 CPU 时间，无法执行。 <br />
四、线程的优先级 <br />
线程的优先级代表该线程的重要程度，当有多个线程同时处于可执行状态并等待获得 CPU 时间时，线程调度系统根据各个线程的优先级来决定给谁分配
CPU 时间，优先级高的线程有更大的机会获得 CPU 时间，优先级低的线程也不是没有机会，只是机会要小一些罢了。 <br />
你可以调用 Thread 类的方法 getPriority() 和 setPriority()来存取线程的优先级，线程的优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间，缺省是5(NORM_PRIORITY)。 <br />
五、线程的同步 <br />
由于同一进程的多个线程共享同一片存储空间，在带来方便的同时，也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突，有效避免了同一个数据对象被多个线程同时访问。 <br />
由于我们可以通过 private 关键字来保证数据对象只能被方法访问，所以我们只需针对方法提出一套机制，这套机制就是 synchronized 关键字，它包括两种用法：synchronized 方法和 synchronized 块。 <br />
1. synchronized 方法：通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如： <br />
public synchronized void accessVal(int newVal); <br />
<br />
synchronized 方法控制对类成员变量的访问：每个类实例对应一把锁，每个 synchronized
方法都必须获得调用该方法的类实例的锁方能执行，否则所属线程阻塞，方法一旦执行，就独占该锁，直到从该方法返回时才将锁释放，此后被阻塞的线程方能获得
该锁，重新进入可执行状态。<br />
这种机制确保了同一时刻对于每一个类实例，其所有声明为 synchronized
的成员函数中至多只有一个处于可执行状态（因为至多只有一个能够获得该类实例对应的锁），从而有效避免了类成员变量的访问冲突（只要所有可能访问类成员变
量的方法均被声明为 synchronized）。 <br />
在 Java 中，不光是类实例，每一个类也对应一把锁，这样我们也可将类的静态成员函数声明为 synchronized ，以控制其对类的静态成员变量的访问。 <br />
synchronized 方法的缺陷：若将一个大的方法声明为synchronized 将会大大影响效率，典型地，若将线程类的方法
run() 声明为 synchronized ，由于在线程的整个生命期内它一直在运行，因此将导致它对本类任何 synchronized
方法的调用都永远不会成功。当然我们可以通过将访问类成员变量的代码放到专门的方法中，将其声明为 synchronized
，并在主方法中调用来解决这一问题，但是 Java 为我们提供了更好的解决办法，那就是 synchronized 块。 <br />
2. synchronized 块：通过 synchronized关键字来声明synchronized 块。语法如下： <br />
synchronized(syncObject) <br />
{ <br />
//允许访问控制的代码 <br />
} <br />
<br />
synchronized 块是这样一个代码块，其中的代码必须获得对象 syncObject （如前所述，可以是类实例或类）的锁方能执行，具体机制同前所述。由于可以针对任意代码块，且可任意指定上锁的对象，故灵活性较高。 <br />
六、线程的阻塞 <br />
为了解决对共享存储区的访问冲突，Java
引入了同步机制，现在让我们来考察多个线程对共享资源的访问，显然同步机制已经不够了，因为在任意时刻所要求的资源不一定已经准备好了被访问，反过来，同
一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题，Java 引入了对阻塞机制的支持。 <br />
阻塞指的是暂停一个线程的执行以等待某个条件发生（如某资源就绪），学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞，下面让我们逐一分析。 <br />
1. sleep() 方法：sleep() 允许 指定以毫秒为单位的一段时间作为参数，它使得线程在指定的时间内进入阻塞状态，不能得到CPU
时间，指定的时间一过，线程重新进入可执行状态。典型地，sleep()
被用在等待某个资源就绪的情形：测试发现条件不满足后，让线程阻塞一段时间后重新测试，直到条件满足为止。 <br />
2. suspend() 和 resume()
方法：两个方法配套使用，suspend()使得线程进入阻塞状态，并且不会自动恢复，必须其对应的resume()
被调用，才能使得线程重新进入可执行状态。典型地，suspend() 和 resume()
被用在等待另一个线程产生的结果的情形：测试发现结果还没有产生后，让线程阻塞，另一个线程产生了结果后，调用 resume() 使其恢复。 <br />
3. yield() 方法：yield() 使得线程放弃当前分得的 CPU 时间，但是不使线程阻塞，即线程仍处于可执行状态，随时可能再次分得 CPU 时间。调用 yield() 的效果等价于调度程序认为该线程已执行了足够的时间从而转到另一个线程。 <br />
4. wait() 和 notify() 方法：两个方法配套使用，wait() 使得线程进入阻塞状态，它有两种形式，一种允许
指定以毫秒为单位的一段时间作为参数，另一种没有参数，前者当对应的 notify()
被调用或者超出指定时间时线程重新进入可执行状态，后者则必须对应的 notify() 被调用。 <br />
初看起来它们与 suspend() 和 resume() 方法对没有什么分别，但是事实上它们是截然不同的。区别的核心在于，前面叙述的所有方法，阻塞时都不会释放占用的锁（如果占用了的话），而这一对方法则相反。 <br />
上述的核心区别导致了一系列的细节上的区别。 <br />
首先，前面叙述的所有方法都隶属于 Thread 类，但是这一对却直接隶属于 Object
类，也就是说，所有对象都拥有这一对方法。初看起来这十分不可思议，但是实际上却是很自然的，因为这一对方法阻塞时要释放占用的锁，而锁是任何对象都具有
的，调用任意对象的 wait() 方法导致线程阻塞，并且该对象上的锁被释放。 <br />
而调用 任意对象的notify()方法则导致因调用该对象的 wait() 方法而阻塞的线程中随机选择的一个解除阻塞（但要等到获得锁后才真正可执行）。 <br />
其次，前面叙述的所有方法都可在任何位置调用，但是这一对方法却必须在 synchronized 方法或块中调用，理由也很简单，只有在synchronized 方法或块中当前线程才占有锁，才有锁可以释放。 <br />
同样的道理，调用这一对方法的对象上的锁必须为当前线程所拥有，这样才有锁可以释放。因此，这一对方法调用必须放置在这样的
synchronized
方法或块中，该方法或块的上锁对象就是调用这一对方法的对象。若不满足这一条件，则程序虽然仍能编译，但在运行时会出现
IllegalMonitorStateException 异常。 <br />
wait() 和 notify() 方法的上述特性决定了它们经常和synchronized
方法或块一起使用，将它们和操作系统的进程间通信机制作一个比较就会发现它们的相似性：synchronized方法或块提供了类似于操作系统原语的功
能，它们的执行不会受到多线程机制的干扰，而这一对方法则相当于 block 和wakeup 原语（这一对方法均声明为
synchronized）。 <br />
它们的结合使得我们可以实现操作系统上一系列精妙的进程间通信的算法（如信号量算法），并用于解决各种复杂的线程间通信问题。关于 wait() 和 notify() 方法最后再说明两点： <br />
第一：调用 notify() 方法导致解除阻塞的线程是从因调用该对象的 wait() 方法而阻塞的线程中随机选取的，我们无法预料哪一个线程将会被选择，所以编程时要特别小心，避免因这种不确定性而产生问题。 <br />
第二：除了 notify()，还有一个方法 notifyAll() 也可起到类似作用，唯一的区别在于，调用 notifyAll()
方法将把因调用该对象的 wait() 方法而阻塞的所有线程一次性全部解除阻塞。当然，只有获得锁的那一个线程才能进入可执行状态。 <br />
谈到阻塞，就不能不谈一谈死锁，略一分析就能发现，suspend() 方法和不指定超时期限的 wait() 方法的调用都可能产生死锁。遗憾的是，Java 并不在语言级别上支持死锁的避免，我们在编程中必须小心地避免死锁。 <br />
以上我们对 Java 中实现线程阻塞的各种方法作了一番分析，我们重点分析了 wait() 和
notify()方法，因为它们的功能最强大，使用也最灵活，但是这也导致了它们的效率较低，较容易出错。实际使用中我们应该灵活使用各种方法，以便更好
地达到我们的目的。 <br />
七、守护线程 <br />
守护线程是一类特殊的线程，它和普通线程的区别在于它并不是应用程序的核心部分，当一个应用程序的所有非守护线程终止运行时，即使仍然有守护线程在运
行，应用程序也将终止，反之，只要有一个非守护线程在运行，应用程序就不会终止。守护线程一般被用于在后台为其它线程提供服务。 <br />
可以通过调用方法 isDaemon() 来判断一个线程是否是守护线程，也可以调用方法 setDaemon() 来将一个线程设为守护线程。 <br />
八、线程组 <br />
线程组是一个 Java 特有的概念，在 Java 中，线程组是类ThreadGroup 的对象，每个线程都隶属于唯一一个线程组，这个线程组在线程创建时指定并在线程的整个生命期内都不能更改。 <br />
你可以通过调用包含 ThreadGroup 类型参数的 Thread 类构造函数来指定线程属的线程组，若没有指定，则线程缺省地隶属于名为 system 的系统线程组。 <br />
在 Java 中，除了预建的系统线程组外，所有线程组都必须显式创建。在 Java
中，除系统线程组外的每个线程组又隶属于另一个线程组，你可以在创建线程组时指定其所隶属的线程组，若没有指定，则缺省地隶属于系统线程组。这样，所有线
程组组成了一棵以系统线程组为根的树。 <br />
Java 允许我们对一个线程组中的所有线程同时进行操作，比如我们可以通过调用线程组的相应方法来设置其中所有线程的优先级，也可以启动或阻塞其中的所有线程。 <br />
Java 的线程组机制的另一个重要作用是线程安全。线程组机制允许我们通过分组来区分有不同安全特性的线程，对不同组的线程进行不同的处理，还可以通过线程组的分层结构来支持不对等安全措施的采用。 <br />
Java 的 ThreadGroup 类提供了大量的方法来方便我们对线程组树中的每一个线程组以及线程组中的每一个线程进行操作。 <br />
九、总结 <br />
在本文中，我们讲述了 Java 多线程编程的方方面面，包括创建线程，以及对多个线程进行调度、管理。我们深刻认识到了多线程编程的复杂性，以及线程切换开销带来的多线程程序的低效性，这也促使我们认真地思考一个问题：我们是否需要多线程？何时需要多线程？ <br />
多线程的核心在于多个代码块并发执行，本质特点在于各代码块之间的代码是乱序执行的。我们的程序是否需要多线程，就是要看这是否也是它的内在特点。 <br />
假如我们的程序根本不要求多个代码块并发执行，那自然不需要使用多线程；假如我们的程序虽然要求多个代码块并发执行，但是却不要求乱序，则我们完全可
以用一个循环来简单高效地实现，也不需要使用多线程；只有当它完全符合多线程的特点时，多线程机制对线程间通信和线程管理的强大支持才能有用武之地，这时
使用多线程才是值得的。
<img src ="http://www.blogjava.net/xtitan/aggbug/260136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2009-03-16 23:47 <a href="http://www.blogjava.net/xtitan/archive/2009/03/16/260136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>js中的replace问题和textarea回车符问题</title><link>http://www.blogjava.net/xtitan/archive/2008/07/22/216518.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Tue, 22 Jul 2008 01:14:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2008/07/22/216518.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/216518.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2008/07/22/216518.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/216518.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/216518.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;在textarea中输入回车符 在js读取textarea中的值有\r\n然后到业务层转换到string中就有可能变成空格形式然后被存入数据库，当在取出此值的时候则会变成空格的形式,因此我们需要将不显示的\r\n替换一下。<br />
&nbsp;&nbsp;&nbsp;&nbsp;在js取textarea的时候:<br />
&nbsp;&nbsp;&nbsp;&nbsp;如果用<br />
&nbsp;&nbsp;&nbsp;&nbsp;
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">textarea</span><span style="color: #000000">"</span><span style="color: #000000">).value;<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(</span><span style="color: #000000">"</span><span style="color: #000000">\r\n</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
&nbsp;&nbsp; 则只会将第一个\r\n替换成&lt;br&gt;,如何将所有n个\r\n替换成&lt;br&gt;呢？难道要无限个replace吗？<br />
&nbsp; 其实不用,replace可以和正则表达式结合,一次替换所有的\r\n。<br />
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;reg</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">\r\n</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />str</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(reg,</span><span style="color: #000000">"</span><span style="color: #000000">\r\n</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div>
这样str中所有的\r\n就替换成&lt;br&gt;了.然后可以将其存入数据库。<br />
<br />
在取出的时候 只用将值在替换回来即可<br />
<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"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;reg</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />stt</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(reg,</span><span style="color: #000000">"</span><span style="color: #000000">\r\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />document.getElementById(</span><span style="color: #000000">"</span><span style="color: #000000">textarea</span><span style="color: #000000">"</span><span style="color: #000000">).value</span><span style="color: #000000">=</span><span style="color: #000000">str;</span></div>
<br />
更加详细的分析和应用可以参考<a href="http://www.itlearner.com/article/2007/3666.shtml" target="_blank">JavaScript的replace方法与正则表达式结合应用讲解</a> <br />
<br />
下面是我写的2个函数 直接放到通用包中&nbsp; 以后使用可以替换<br />
<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"><img id="Codehighlighter1_30_179_Open_Image" onclick="this.style.display='none'; Codehighlighter1_30_179_Open_Text.style.display='none'; Codehighlighter1_30_179_Closed_Image.style.display='inline'; Codehighlighter1_30_179_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_30_179_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_30_179_Closed_Text.style.display='none'; Codehighlighter1_30_179_Open_Image.style.display='inline'; Codehighlighter1_30_179_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;replaceTextarea1(str)</span><span id="Codehighlighter1_30_179_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_30_179_Open_Text"><span style="color: #000000">{<br />
<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;reg</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">\r\n</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<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;reg1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(reg,</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(reg1,</span><span style="color: #000000">"</span><span style="color: #000000">&lt;p&gt;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;str;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_213_362_Open_Image" onclick="this.style.display='none'; Codehighlighter1_213_362_Open_Text.style.display='none'; Codehighlighter1_213_362_Closed_Image.style.display='inline'; Codehighlighter1_213_362_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_213_362_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_213_362_Closed_Text.style.display='none'; Codehighlighter1_213_362_Open_Image.style.display='inline'; Codehighlighter1_213_362_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;replaceTextarea2(str)</span><span id="Codehighlighter1_213_362_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_213_362_Open_Text"><span style="color: #000000">{<br />
<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;reg</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;br&gt;</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<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;reg1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;RegExp(</span><span style="color: #000000">"</span><span style="color: #000000">&lt;p&gt;</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">g</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(reg,</span><span style="color: #000000">"</span><span style="color: #000000">\r\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;str.replace(reg1,</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;str;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<img src ="http://www.blogjava.net/xtitan/aggbug/216518.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2008-07-22 09:14 <a href="http://www.blogjava.net/xtitan/archive/2008/07/22/216518.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[网站提速] - 给Tomcat，Apache配置gzip压缩(HTTP压缩)功能 (转载)</title><link>http://www.blogjava.net/xtitan/archive/2008/07/01/211824.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Tue, 01 Jul 2008 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2008/07/01/211824.html</guid><description><![CDATA[<div class="postbody">
<p><strong>背景：<br />
</strong>HTTP&nbsp;压缩可以大大提高浏览网站的速度，它的原理是，在客户端请求网页后，从服务器端将网页文件压缩，再下载到客户端，由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text&nbsp;，它可以节省40%左右的流量。更为重要的是，它可以对动态生成的，包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩，压缩效率惊人<br />
<br />
<strong>一，对于Tomcat5.0以后的版本是支持对输出内容进行压缩的.　使用的是gzip压缩格式</strong><br />
<br />
下面是tomcat5.5.20 中的$tomcat_home$/conf/server.xml的原内容</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: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #0000ff">&lt;</span> <span style="color: #800000">Connector&nbsp;</span> <span style="color: #ff0000">port</span> <span style="color: #0000ff">="80"</span> <span style="color: #ff0000">&nbsp;maxHttpHeaderSize</span> <span style="color: #0000ff">="8192"</span> <span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;2</span> <span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads</span> <span style="color: #0000ff">="150"</span> <span style="color: #ff0000">&nbsp;minSpareThreads</span> <span style="color: #0000ff">="25"</span> <span style="color: #ff0000">&nbsp;maxSpareThreads</span> <span style="color: #0000ff">="75"</span> <span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;3</span> <span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span> <span style="color: #0000ff">="false"</span> <span style="color: #ff0000">&nbsp;redirectPort</span> <span style="color: #0000ff">="8443"</span> <span style="color: #ff0000">&nbsp;acceptCount</span> <span style="color: #0000ff">="100"</span> <span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;4</span> <span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout</span> <span style="color: #0000ff">="20000"</span> <span style="color: #ff0000">&nbsp;disableUploadTimeout</span> <span style="color: #0000ff">="true"</span> <span style="color: #ff0000">&nbsp;URIEncoding</span> <span style="color: #0000ff">="utf-8"</span> <span style="color: #ff0000">&nbsp;</span> <span style="color: #0000ff">/&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span> <span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #008000">&lt;!--</span> <span style="color: #008000">&nbsp;Note&nbsp;:&nbsp;To&nbsp;disable&nbsp;connection&nbsp;timeouts,&nbsp;set&nbsp;connectionTimeout&nbsp;value<br />
</span><span style="color: #008080">&nbsp;6</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;0&nbsp;</span> <span style="color: #008000">--&gt;</span> <span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span> <span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span> <span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #008000">&lt;!--</span> <span style="color: #008000">&nbsp;Note&nbsp;:&nbsp;To&nbsp;use&nbsp;gzip&nbsp;compression&nbsp;you&nbsp;could&nbsp;set&nbsp;the&nbsp;following&nbsp;properties&nbsp;:<br />
</span><span style="color: #008080">&nbsp;9</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">10</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compression="on"&nbsp;<br />
</span><span style="color: #008080">11</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressionMinSize="2048"&nbsp;<br />
</span><span style="color: #008080">12</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noCompressionUserAgents="gozilla,&nbsp;traviata"&nbsp;<br />
</span><span style="color: #008080">13</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressableMimeType="text/html,text/xml"<br />
</span><span style="color: #008080">14</span> <span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span> <span style="color: #008000">--&gt;</span> </div>
从上面的<font color="#ff1493"><strong>第8行</strong></font>内容可以看出，要使用gzip压缩功能，你可以在Connector实例中加上如下属性即可<br />
1) compression="on" 打开压缩功能<br />
2) compressionMinSize="2048" 启用压缩的输出内容大小，这里面默认为2KB<br />
3) noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器，不启用压缩&nbsp;<br />
4) compressableMimeType="text/html,text/xml"　压缩类型<br />
<br />
我这里的配置内容为：<br />
<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: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Connector&nbsp;</span><span style="color: #ff0000">port</span><span style="color: #0000ff">="80"</span><span style="color: #ff0000">&nbsp;maxHttpHeaderSize</span><span style="color: #0000ff">="8192"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads</span><span style="color: #0000ff">="150"</span><span style="color: #ff0000">&nbsp;minSpareThreads</span><span style="color: #0000ff">="25"</span><span style="color: #ff0000">&nbsp;maxSpareThreads</span><span style="color: #0000ff">="75"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enableLookups</span><span style="color: #0000ff">="false"</span><span style="color: #ff0000">&nbsp;redirectPort</span><span style="color: #0000ff">="8443"</span><span style="color: #ff0000">&nbsp;acceptCount</span><span style="color: #0000ff">="100"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout</span><span style="color: #0000ff">="20000"</span><span style="color: #ff0000">&nbsp;disableUploadTimeout</span><span style="color: #0000ff">="true"</span><span style="color: #ff0000">&nbsp;URIEncoding</span><span style="color: #0000ff">="utf-8"</span><span style="color: #ff0000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compression</span><span style="color: #0000ff">="on"</span><span style="color: #ff0000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressionMinSize</span><span style="color: #0000ff">="2048"</span><span style="color: #ff0000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noCompressionUserAgents</span><span style="color: #0000ff">="gozilla,&nbsp;traviata"</span><span style="color: #ff0000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #ff0000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressableMimeType</span><span style="color: #0000ff">="text/html,text/xml,text/javascript,text/css,text/plain"</span><span style="color: #ff0000">&nbsp;&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Note&nbsp;:&nbsp;To&nbsp;disable&nbsp;connection&nbsp;timeouts,&nbsp;set&nbsp;connectionTimeout&nbsp;value<br />
</span><span style="color: #008080">10</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;0&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;Note&nbsp;:&nbsp;To&nbsp;use&nbsp;gzip&nbsp;compression&nbsp;you&nbsp;could&nbsp;set&nbsp;the&nbsp;following&nbsp;properties&nbsp;:<br />
</span><span style="color: #008080">13</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compression="on"&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressionMinSize="2048"&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;noCompressionUserAgents="gozilla,&nbsp;traviata"&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compressableMimeType="text/html,text/xml"<br />
</span><span style="color: #008080">18</span><span style="color: #008000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
<strong>二，对于Apache而言，有两种情况<br />
&nbsp;&nbsp;&nbsp;</strong>１）针对Apache2.0之前的版本，它原本是不支持的，不过可以通过添加第三方的module_gzip模块来启用<br />
&nbsp;&nbsp;&nbsp;２）针对Apache2.0及之后的版本，Apache提供支持, 不过不叫gzip，而叫mod_deflate<br />
下面就对Apache2.0及之后的版本作一个说明<br />
1) 去掉#LoadModule headers_module modules/mod_headers.so前面的注释#,<br />
2) 添加LoadModule deflate_module modules/mod_deflate.so<br />
3) 在VirtualHost中添加<br />
<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">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Location&nbsp;</span><span style="color: #ff0000">"/"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><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="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetOutputFilter&nbsp;DEFLATE<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="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BrowserMatch&nbsp;^Mozilla/4&nbsp;gzip-only-text/html<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="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BrowserMatch&nbsp;^Mozilla/4\.0[678]&nbsp;no-gzip<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="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BrowserMatch&nbsp;\bMSIE&nbsp;!no-gzip&nbsp;!gzip-only-text/html<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="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetEnvIfNoCase&nbsp;Request_URI&nbsp;\.(?:gif|jpe?g|png)$&nbsp;no-gzip&nbsp;dont-vary<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Header&nbsp;append&nbsp;Vary&nbsp;User-Agent&nbsp;env=!dont-vary<br />
</span><span style="color: #008080">8</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Location</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">9</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<br />
我这里面有一个完整的演示<br />
<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: #000000">#&nbsp;加载deflate模块<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />LoadModule&nbsp;headers_module&nbsp;modules/mod_headers.so<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />LoadModule&nbsp;deflate_module&nbsp;modules/mod_deflate.so<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">VirtualHost&nbsp;</span><span style="color: #ff0000">*:80</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;DocumentRoot&nbsp;f:/apacheTest<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Location&nbsp;</span><span style="color: #ff0000">"/"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetOutputFilter&nbsp;DEFLATE<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BrowserMatch&nbsp;^Mozilla/4&nbsp;gzip-only-text/html<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BrowserMatch&nbsp;^Mozilla/4\.0[678]&nbsp;no-gzip<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BrowserMatch&nbsp;\bMSIE&nbsp;!no-gzip&nbsp;!gzip-only-text/html<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetEnvIfNoCase&nbsp;Request_URI&nbsp;\.(?:gif|jpe?g|png)$&nbsp;no-gzip&nbsp;dont-vary<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Header&nbsp;append&nbsp;Vary&nbsp;User-Agent&nbsp;env=!dont-vary<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Location</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><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><span style="color: #0000ff">&lt;/</span><span style="color: #800000">VirtualHost</span><span style="color: #0000ff">&gt;</span></div>
<br />
</div>
<img src ="http://www.blogjava.net/xtitan/aggbug/211824.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2008-07-01 10:06 <a href="http://www.blogjava.net/xtitan/archive/2008/07/01/211824.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>页面缓存</title><link>http://www.blogjava.net/xtitan/archive/2007/10/17/153508.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Wed, 17 Oct 2007 03:26:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2007/10/17/153508.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/153508.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2007/10/17/153508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/153508.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/153508.html</trackback:ping><description><![CDATA[<br />
&lt;%<br />
&nbsp;response.setHeader("Pragma","No-cache");<br />
&nbsp;response.setHeader("Cache-Control","no-cache");<br />
&nbsp;response.setDateHeader("Expires", 0);<br />
%&gt;<br />
&lt;META http-equiv="Content-Type" content="text/html; charset=utf-8"&gt;<br />
&lt;META HTTP-EQUIV="pragma" CONTENT="no-cache"&gt;<br />
&lt;META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate"&gt;<br />
&lt;META HTTP-EQUIV="expires" CONTENT="0"&gt;
<img src ="http://www.blogjava.net/xtitan/aggbug/153508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2007-10-17 11:26 <a href="http://www.blogjava.net/xtitan/archive/2007/10/17/153508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4配置</title><link>http://www.blogjava.net/xtitan/archive/2007/10/13/152563.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Sat, 13 Oct 2007 06:09:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2007/10/13/152563.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/152563.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2007/10/13/152563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/152563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/152563.html</trackback:ping><description><![CDATA[<p>一、常用输出格式</p>
<p>%c&nbsp;&nbsp; 列出logger名字空间的全称，如加上{&lt;层数&gt;}表示出从最内层算起的指定层数的名字空间<br />
%X&nbsp; 按MDC（Mapped Diagnostic Context,线程映射表）输出日志。通常用于多个客户端连接同一台服务器，方便服务器区分是那个客户端访问留下来的日志。<br />
%p&nbsp; 日志信息级别<br />
%d&nbsp;&nbsp; %d{&lt;日期格式&gt;}:日志信息产生时间,使用ISO8601定义的日期格式<br />
%C&nbsp;&nbsp; 日志信息所在地（全限类名）<br />
%m&nbsp;&nbsp; 产生的日志具体信息<br />
%n&nbsp;&nbsp;&nbsp; 输出日志信息换行<br />
%F　显示调用logger的源文件名<br />
%l&nbsp;&nbsp;&nbsp;&nbsp; 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数<br />
%L&nbsp;&nbsp;&nbsp; 显示调用logger的代码行<br />
%M&nbsp;&nbsp; 显示调用logger的方法名<br />
%r&nbsp;&nbsp;&nbsp;&nbsp; 显示从程序启动时到记录该条日志时已经经过的毫秒数<br />
%t&nbsp;&nbsp;&nbsp;&nbsp; 输出产生该日志事件的线程名<br />
%%　显示一个<br />
二、log4j.properties<br />
</p>
<p>#控制包中日志输出级别<br />
log4j.logger.org.apache.struts = debug</p>
<p># 应用于控制台<br />
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender<br />
log4j.appender.Threshold=DEBUG<br />
log4j.appender.CONSOLE.Target=System.out<br />
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n<br />
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n</p>
<p>#应用于文件<br />
log4j.appender.FILE=org.apache.log4j.FileAppender<br />
log4j.appender.FILE.File=file.log<br />
log4j.appender.FILE.Append=false<br />
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n<br />
# Use this layout for LogFactor 5 analysis</p>
<p># 应用于文件回滚<br />
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender<br />
log4j.appender.ROLLING_FILE.Threshold=ERROR<br />
log4j.appender.ROLLING_FILE.File=rolling.log<br />
log4j.appender.ROLLING_FILE.Append=true<br />
log4j.appender.ROLLING_FILE.MaxFileSize=100KB<br />
log4j.appender.ROLLING_FILE.MaxBackupIndex=10<br />
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n</p>
<p><br />
#应用于socket<br />
log4j.appender.SOCKET=org.apache.log4j.net.SocketAppender<br />
log4j.appender.SOCKET.RemoteHost=localhost<br />
log4j.appender.SOCKET.Port=5001<br />
log4j.appender.SOCKET.LocationInfo=true<br />
# Set up for Log Facter 5<br />
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n</p>
<p><br />
# Log Factor 5 Appender<br />
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender<br />
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000</p>
<p># 发送日志给邮件<br />
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender<br />
log4j.appender.MAIL.Threshold=FATAL<br />
log4j.appender.MAIL.BufferSize=10<br />
log4j.appender.MAIL.From=web@www.wuset.com<br />
log4j.appender.MAIL.SMTPHost=www.wusetu.com<br />
log4j.appender.MAIL.Subject=Log4J Message<br />
log4j.appender.MAIL.To=web@www.wusetu.com<br />
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n</p>
<p># 用于数据库<br />
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender<br />
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test<br />
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver<br />
log4j.appender.DATABASE.user=root<br />
log4j.appender.DATABASE.password=<br />
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %-4r [%t] %-5p %c %x - %m%n')<br />
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %-4r [%t] %-5p %c %x - %m%n</p>
<p>#每日回滚日志文件<br />
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender<br />
log4j.appender.A1.File=SampleMessages.log4j<br />
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'<br />
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout</p>
<p>#自定义Appender<br />
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender<br />
log4j.appender.im.host = mail.cybercorlin.net<br />
log4j.appender.im.username = username<br />
log4j.appender.im.password = password<br />
log4j.appender.im.recipient = corlin@cybercorlin.net<br />
log4j.appender.im.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.im.layout.ConversionPattern =[framework] %d - %-4r [%t] %-5p %c %x - %m%n</p>
<img src ="http://www.blogjava.net/xtitan/aggbug/152563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2007-10-13 14:09 <a href="http://www.blogjava.net/xtitan/archive/2007/10/13/152563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SVG文件浏览器必须插件SVGView30</title><link>http://www.blogjava.net/xtitan/archive/2007/09/03/142282.html</link><dc:creator>泰坦</dc:creator><author>泰坦</author><pubDate>Mon, 03 Sep 2007 05:53:00 GMT</pubDate><guid>http://www.blogjava.net/xtitan/archive/2007/09/03/142282.html</guid><wfw:comment>http://www.blogjava.net/xtitan/comments/142282.html</wfw:comment><comments>http://www.blogjava.net/xtitan/archive/2007/09/03/142282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xtitan/comments/commentRss/142282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xtitan/services/trackbacks/142282.html</trackback:ping><description><![CDATA[下载地址<br />
http://ehr.sandai.net/KDHRMS/Public/CHS/SVGView30.exe
<img src ="http://www.blogjava.net/xtitan/aggbug/142282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xtitan/" target="_blank">泰坦</a> 2007-09-03 13:53 <a href="http://www.blogjava.net/xtitan/archive/2007/09/03/142282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>