﻿<?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>C++博客-GCC/GNU/Linux Delphi/Window Java/Anywhere-随笔分类-Java</title><link>http://www.cppblog.com/Khan/category/776.html</link><description>路漫漫，长修远，我们不能没有钱</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 15:04:24 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 15:04:24 GMT</pubDate><ttl>60</ttl><item><title>linux下执行java的脚本</title><link>http://www.cppblog.com/Khan/archive/2008/05/06/49008.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Tue, 06 May 2008 07:26:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2008/05/06/49008.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/49008.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2008/05/06/49008.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/49008.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/49008.html</trackback:ping><description><![CDATA[<br><font face="monospace"><font color="#0000ff">#!/bin/sh</font><br><font color="#0000ff"># Filename : StockDispatch</font><br><font color="#0000ff"># &amp; nohub</font><br># 思路: 遍历当前目录和$JAVA_HOME/lib下所有的jar文件, 加入-cp的环境变量 然后执行入口类<br><font color="#008080">SETCOLOR_BOLD</font>=<font color="#804040"><strong>"</strong></font><font color="#ff00ff">echo -en </font><font color="#6a5acd">\\</font><font color="#ff00ff">033[1;32m</font><font color="#804040"><strong>"</strong></font><br><font color="#008080">SETCOLOR_NORMAL</font>=<font color="#804040"><strong>"</strong></font><font color="#ff00ff">echo -en </font><font color="#6a5acd">\\</font><font color="#ff00ff">033[0;39m</font><font color="#804040"><strong>"</strong></font><br><br><font color="#008080"><br>CLASSPATH</font>=<font color="#804040"><strong>""</strong></font><br><font color="#008080">CURRDIR</font>=<font color="#804040"><strong>"</strong></font><span style="background-color: #ff0000;"><font color="#ffffff">$(</font></span><font color="#804040"><strong>pwd</strong></font><span style="background-color: #ff0000;"><font color="#ffffff">)</font></span><font color="#804040"><strong>"</strong></font><br><font color="#008080">LIBDIR</font>=<font color="#804040"><strong>"</strong></font><font color="#a020f0">$CURRDIR</font><font color="#ff00ff">&nbsp;/usr/local/jdk1.5.0_02/lib</font><font color="#804040"><strong>"</strong></font><br><font color="#008080">tmpFile</font>=./<font color="#ff00ff">11</font><br><font color="#008080">pidFile</font>=./<font color="#a020f0">${</font><font color="#a020f0">0</font><font color="#a020f0">}</font>pid<br><br><font color="#0000ff"># find all jar library from current dir and CLASSPATH</font><br>find <font color="#a020f0">$LIBDIR</font>&nbsp;<font color="#6a5acd">-name</font>&nbsp;<font color="#804040"><strong>"</strong></font><font color="#ff00ff">*.jar</font><font color="#804040"><strong>"</strong></font><font color="#804040"><strong>&gt;</strong></font><font color="#a020f0">$tmpFile</font><br><br><br><font color="#0000ff"># add jar library to CLASSPATH</font><br><font color="#008080">I</font>=<font color="#ff00ff">0</font><br><font color="#804040"><strong>while</strong></font><font color="#804040"><strong>&nbsp;</strong></font><font color="#804040"><strong>read</strong></font><font color="#804040"><strong>&nbsp;line </strong></font><br><font color="#804040"><strong>do</strong></font>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008080">I</font>=<font color="#6a5acd">`expr </font><font color="#a020f0">$I</font><font color="#6a5acd">&nbsp;+ </font><font color="#ff00ff">1</font><font color="#6a5acd">&nbsp;`</font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>if</strong></font>&nbsp;<font color="#804040"><strong>[</strong></font>&nbsp;<font color="#a020f0">$I</font>&nbsp;<font color="#804040"><strong>-eq</strong></font>&nbsp;<font color="#ff00ff">1</font>&nbsp;<font color="#804040"><strong>]</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>then</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008080">CLASSPATH</font>=<font color="#804040"><strong>"</strong></font><font color="#a020f0">${</font><font color="#a020f0">line</font><font color="#a020f0">}</font><font color="#804040"><strong>"</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>else</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#008080">CLASSPATH</font>=<font color="#804040"><strong>"</strong></font><font color="#a020f0">${</font><font color="#a020f0">CLASSPATH</font><font color="#a020f0">}</font><font color="#ff00ff">:</font><font color="#a020f0">${</font><font color="#a020f0">line</font><font color="#a020f0">}</font><font color="#804040"><strong>"</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>fi</strong></font><br><font color="#804040"><strong>done</strong></font><font color="#804040"><strong>&lt;</strong></font>&nbsp;<font color="#a020f0">$tmpFile</font><br><br>rm <font color="#a020f0">$tmpFile</font><br><br><br><font color="#0000ff"># run program</font><br><font color="#804040"><strong>if</strong></font>&nbsp;<font color="#804040"><strong>[</strong></font>&nbsp;<font color="#804040"><strong>"</strong></font><font color="#ff00ff">-</font><font color="#a020f0">$1</font><font color="#804040"><strong>"</strong></font>&nbsp;<font color="#804040"><strong>!=</strong></font>&nbsp;<font color="#804040"><strong>"</strong></font><font color="#ff00ff">-</font><font color="#804040"><strong>"</strong></font>&nbsp;<font color="#804040"><strong>]</strong></font><font color="#804040"><strong>;</strong></font>&nbsp;<font color="#804040"><strong>then</strong></font>&nbsp;&nbsp; <font color="#0000ff"># if parameter 1 is not null</font><br>&nbsp;&nbsp;<font color="#804040"><strong>echo</strong></font><font color="#ff00ff">&nbsp;</font><font color="#804040"><strong>"</strong></font><font color="#ff00ff">java -cp .:</font><font color="#a020f0">${</font><font color="#a020f0">CLASSPATH</font><font color="#a020f0">}</font><font color="#ff00ff">&nbsp;&nbsp;com.khan.AppMain.UpdateCell2CBC </font><font color="#a020f0">$1</font><font color="#ff00ff">&nbsp;&gt; updatecell2cbc.log</font><font color="#804040"><strong>"</strong></font><br><font color="#0000ff">#&nbsp;&nbsp;java -cp .:${CLASSPATH} com.khan.AppMain.UpdateCell2CBC $1&gt; updatecell2cbc.log</font><br><font color="#804040"><strong>else</strong></font><br>&nbsp;&nbsp;&nbsp;&nbsp;<font color="#804040"><strong>echo</strong></font><font color="#ff00ff">&nbsp;</font><font color="#804040"><strong>"</strong></font><font color="#ff00ff">&nbsp;&nbsp;usage: </font><font color="#a020f0">$0</font><font color="#ff00ff">&nbsp;&nbsp;CellListFile</font><font color="#804040"><strong>"</strong></font><br><font color="#804040"><strong>fi</strong></font><br><br><br></font><img src ="http://www.cppblog.com/Khan/aggbug/49008.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2008-05-06 15:26 <a href="http://www.cppblog.com/Khan/archive/2008/05/06/49008.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过两个点的经纬度计算距离</title><link>http://www.cppblog.com/Khan/archive/2008/02/28/43390.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 28 Feb 2008 07:18:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2008/02/28/43390.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/43390.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2008/02/28/43390.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/43390.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/43390.html</trackback:ping><description><![CDATA[最近开始做一个类似gis的东西. 需要求一些经纬度相关的值..<br><br>看了<a href="http://panyee.cnblogs.com/archive/2006/07/04/442771.html" target="_blank">通过两个点的经纬度计算距离</a>这篇，据说是Google里扒来的算法，于是决定验证一下。<br>通过计算发现非常正确。<br>用30,120和31,121两个坐标点进行验证，同Mapinfo中计算的结果非常的相近。<br>后来又把坐标系直接当成直角坐标系来计算，发现误差很大。<br>于是仍然用直角坐标系方法来计算，给纬度加上了个0.86的参数，这样计算下来和结果相近。<br><br><br><br><br>c#代码<br>private const double EARTH_RADIUS = 6378.137; //地球半径<br>private static double rad(double d)<br>{<br>&nbsp;&nbsp;&nbsp;return d * Math.PI / 180.0;<br>}
<p>public static double GetDistance(double lat1, double lng1, double lat2, double lng2)<br>{<br>&nbsp;&nbsp;&nbsp;double radLat1 = rad(lat1);<br>&nbsp;&nbsp;&nbsp;double radLat2 = rad(lat2);<br>&nbsp;&nbsp;&nbsp;double a = radLat1 - radLat2;<br>&nbsp;&nbsp;&nbsp;double b = rad(lng1) - rad(lng2);<br>&nbsp;&nbsp;&nbsp;double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) + <br>&nbsp;&nbsp;&nbsp;&nbsp;Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2)));<br>&nbsp;&nbsp;&nbsp;s = s * EARTH_RADIUS;<br>&nbsp;&nbsp;&nbsp;s = Math.Round(s * 10000) / 10000;<br>&nbsp;&nbsp;&nbsp;return s;<br>}</p>
<br>
<p>vb代码</p>
<img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Const&nbsp;EARTH_RADIUS&nbsp;=&nbsp;6378.137<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Const&nbsp;Pi&nbsp;=&nbsp;3.1415926535898<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Function&nbsp;rad(ByVal&nbsp;d&nbsp;As&nbsp;Double)&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">rad&nbsp;=&nbsp;d&nbsp;*&nbsp;Pi&nbsp;/&nbsp;180<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Function<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Function&nbsp;GetDistance(lat1&nbsp;As&nbsp;Double,&nbsp;lng1&nbsp;As&nbsp;Double,&nbsp;lat2&nbsp;As&nbsp;Double,&nbsp;lng2&nbsp;As&nbsp;Double)&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Dim&nbsp;radlat1&nbsp;As&nbsp;Double,&nbsp;radlat2&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Dim&nbsp;a&nbsp;As&nbsp;Double,&nbsp;b&nbsp;As&nbsp;Double,&nbsp;s&nbsp;As&nbsp;Double,&nbsp;Temp&nbsp;As&nbsp;Double<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">radlat1&nbsp;=&nbsp;rad(lat1)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">radlat2&nbsp;=&nbsp;rad(lat2)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">a&nbsp;=&nbsp;radlat1&nbsp;-&nbsp;radlat2<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">b&nbsp;=&nbsp;rad(lng1)&nbsp;-&nbsp;rad(lng2)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Temp&nbsp;=&nbsp;Sqr(Sin(a&nbsp;/&nbsp;2)&nbsp;^&nbsp;2&nbsp;+&nbsp;Cos(radlat1)&nbsp;*&nbsp;Cos(radlat2)&nbsp;*&nbsp;Sin(b&nbsp;/&nbsp;2)&nbsp;^&nbsp;2)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">s&nbsp;=&nbsp;2&nbsp;*&nbsp;Atn(Temp&nbsp;/&nbsp;Sqr(-Temp&nbsp;*&nbsp;Temp&nbsp;+&nbsp;1))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'没有反正弦函数，网上找了个<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">s&nbsp;=&nbsp;s&nbsp;*&nbsp;EARTH_RADIUS<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">GetDistance&nbsp;=&nbsp;s<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Function<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Private&nbsp;Sub&nbsp;Command1_Click()<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Text5.Text&nbsp;=&nbsp;Str(GetDistance(Val(Text1.Text),&nbsp;Val(Text2.Text),&nbsp;Val(Text3.Text),&nbsp;Val(Text4.Text)))<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Sub<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Private&nbsp;Sub&nbsp;Command2_Click()<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Text5.Text&nbsp;=&nbsp;Str((Sqr((Val(Text3.Text)&nbsp;-&nbsp;Val(Text1.Text))&nbsp;^&nbsp;2&nbsp;+&nbsp;(Val(Text4.Text)&nbsp;-&nbsp;Val(Text2.Text))&nbsp;^&nbsp;2))&nbsp;*&nbsp;111.3199338)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Sub<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Private&nbsp;Sub&nbsp;Command3_Click()<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">Text5.Text&nbsp;=&nbsp;Str((Sqr((Val(Text3.Text)&nbsp;*&nbsp;0.86&nbsp;-&nbsp;Val(Text1.Text)&nbsp;*&nbsp;0.86)&nbsp;^&nbsp;2&nbsp;+&nbsp;(Val(Text4.Text)&nbsp;-&nbsp;Val(Text2.Text))&nbsp;^&nbsp;2))&nbsp;*&nbsp;111.3199338)<br><img src="http://tangf.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">End&nbsp;Sub
<p><br></p>
<p><br></p>
同纬度计算比较简单<br>
<p>A（60，30），B（60，90）两点之间，此段代码和我用余弦定理算出来的结果很一致。
<br>余弦定理的步骤是：1、算A、B弦长：地球半径R*cos（经度差60）=R/2；
<br>2、算角AOB,O为地球圆心，利用余弦定理，
<br>cosAOB=(2R*R-(R/2)^2) /2*R*R=7/8;
<br>3、弧AB的长为：R*arc cos(7/8);求毕 <br></p>
<br>
<p><br></p>
<p>原理:<br></p>
<p>
地球赤道上环绕地球一周走一圈共40075.04公里,而@一圈分成360&#176;,而每1&#176;(度)有60,每一度一秒在赤道上的长度计算如下：
<br>
<br>　　40075.04km/360&#176;=111.31955km
<br>
<br>　　111.31955km/60=1.8553258km=1855.3m
<br>
<br>　　而每一分又有60秒,每一秒就代表1855.3m/60=30.92m
<br>
<br>　　任意两点距离计算公式为
<br>
<br>　　d＝111.12cos{1/[sin&#934;Asin&#934;B十cos&#934;Acos&#934;Bcos(&#955;B—&#955;A)]}
<br>
<br>　　其中A点经度，纬度分别为&#955;A和&#934;A，B点的经度、纬度分别为&#955;B和&#934;B，d为距离。</p>
<br>  <img src ="http://www.cppblog.com/Khan/aggbug/43390.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2008-02-28 15:18 <a href="http://www.cppblog.com/Khan/archive/2008/02/28/43390.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jbuilder 2006 错误信息 java/lang/ClassFormatError: Bad version information </title><link>http://www.cppblog.com/Khan/archive/2007/10/22/34838.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Mon, 22 Oct 2007 04:03:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2007/10/22/34838.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/34838.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2007/10/22/34838.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/34838.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/34838.html</trackback:ping><description><![CDATA[自动生成的代码运行就产生错误 <span style="color: #ff0000;">java/lang/ClassFormatError: Bad version information<br><br><br></span><br>project -&gt; project properties-&gt;build-&gt;java 项<br>把默认的 target VM : java 2 sdk , v5.0 and later<br>改为 All java sdks<br>然后rebuild下...<br>就ok 啦！<br><span style="color: #ff0000;"><br><br></span><span style="color: #ff0000;"><span style="color: #000000;"></span></span><span style="color: #ff0000;"><span style="color: #000000;"><br></span></span> <img src ="http://www.cppblog.com/Khan/aggbug/34838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2007-10-22 12:03 <a href="http://www.cppblog.com/Khan/archive/2007/10/22/34838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转载自IBM-DEV)java运用异步输入输出流编写Socket进程通信</title><link>http://www.cppblog.com/Khan/archive/2007/03/29/20878.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 29 Mar 2007 07:31:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2007/03/29/20878.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/20878.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2007/03/29/20878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/20878.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/20878.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: merlin java1.4 NIO Socket non-blocking 效能&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2007/03/29/20878.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/20878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2007-03-29 15:31 <a href="http://www.cppblog.com/Khan/archive/2007/03/29/20878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近的开发项目(java)</title><link>http://www.cppblog.com/Khan/archive/2006/11/03/14618.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 03 Nov 2006 05:49:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/11/03/14618.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/14618.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/11/03/14618.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/14618.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/14618.html</trackback:ping><description><![CDATA[
		<a class="" title="cmpp2gateway" href="/Files/Khan/smsgw_src.rar" target="">cmpp2_gateway</a>
		<br />
		<br />
		<a class="" title="realone" href="/Files/Khan/RealOne_Player_554.rar" target="">自己下载玩的</a>
<img src ="http://www.cppblog.com/Khan/aggbug/14618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-11-03 13:49 <a href="http://www.cppblog.com/Khan/archive/2006/11/03/14618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java执行外部指令,并接收中文结果</title><link>http://www.cppblog.com/Khan/archive/2006/09/28/13079.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 28 Sep 2006 02:07:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/09/28/13079.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/13079.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/09/28/13079.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/13079.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/13079.html</trackback:ping><description><![CDATA[package com.khan.util;<br /><br /><br />import java.io.BufferedInputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />//import java.io.File;<br /><br />/**<br /> * &lt;p&gt;Title: &lt;/p&gt;<br /> * &lt;p&gt;Description: &lt;/p&gt;<br /> * &lt;p&gt;Copyright: Copyright (c) 2006&lt;/p&gt;<br /> * &lt;p&gt;Company: &lt;/p&gt;<br /> * @author not attributable<br /> * @version 1.0<br /> */<br /><br /><br />public class ExecCmd {<br /><br />    public ExecCmd() {<br /><br />    }<br /><br /><br />    // read an input-stream into a String<br />    public static String loadStream(InputStream in, String charset) throws IOException {<br />        int char_set_len = 2;<br />        if (null == charset) {<br />            charset = "GBK";<br />        }<br /><br />        if (charset.equals("utf8") || charset.equals("UTF8")<br />            || charset.equals("utf-8") || charset.equals("UTF-8")) {<br />            char_set_len = 3;<br />        }<br /><br />        int ptr = 0;<br />        byte[] char_buff = new byte[char_set_len];<br />        in = new BufferedInputStream(in);<br /><br />        StringBuffer buffer = new StringBuffer();<br />        while ((ptr = in.read()) != -1) {<br /><br />            if (ptr &gt;= 0x80) { //中文处理<br />                char_buff[0] = (byte) ptr;<br />                for (int i = 1; i &lt; char_set_len; i++) {<br />                    char_buff[i] = (byte) in.read();<br />                    if (char_buff[i] == -1) {<br />                        break;<br />                    }<br />                }<br />                buffer.append(new String(char_buff, charset));<br />                continue;<br />            }<br /><br />            buffer.append((char) ptr);<br />        }<br />        return buffer.toString();<br />    }<br /><br /><br />    static public void main(String[] args) {<br />        long l = 0;<br />        String str = "";<br />        String[] cmd1 = {"cmd.exe",<br />                        "/c",<br />                        "dir",<br />                        "/b",<br />                        "/s",   "e:\\*.log"};<br />                        //args[0] +"\\*.log"};<br /><br />        String[] cmd = {"gawk",<br />                       "-F,",<br />                       //"\"END{print NR}\"",<br />                       "\"END{print substr($1, 0, 8), NR}\"",<br />                       "mo_pay.log"};<br />        //File dir = new File("D:\\Program Files\\gawk\\bin");<br /><br />        try {<br />            Process ps = Runtime.getRuntime().exec(cmd1);<br />            String[] strs = loadStream(ps.getInputStream(), "GBK").split("\r\n");<br />            System.err.print(loadStream(ps.getErrorStream(), "GBK"));<br />            for (int i = 0; i &lt; strs.length; i++) {<br />                cmd[3] = strs[i].trim();<br />                ps = Runtime.getRuntime().exec(cmd);<br />                str = loadStream(ps.getInputStream(), "GBK");<br />                str = str.substring(0, str.indexOf('\r'));<br /><br />                l += Long.parseLong(str.split(" ")[1]);<br />                System.out.println(str);<br />                System.err.print(loadStream(ps.getErrorStream(), "GBK"));<br />            }<br />            System.out.println(l);<br />        } catch (IOException e) {<br />            e.printStackTrace();<br />        }<br />        //System.out.println("执行完毕");<br />    }<br /><br />}<br /><br /><br /><br />  这个代码是我最近的一个project中,用来调用gawk的处理结果,并在web上显示<br />在web中显示的部分就是jsp了.这个就没有必要贴了,<br />  awk处理文本的效率确实不错.<br /><img src ="http://www.cppblog.com/Khan/aggbug/13079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-09-28 10:07 <a href="http://www.cppblog.com/Khan/archive/2006/09/28/13079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 上传文件代码，支持中文文件名和中文文件内容，可以同时提交多个参数</title><link>http://www.cppblog.com/Khan/archive/2006/08/11/11132.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 11 Aug 2006 07:49:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/08/11/11132.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/11132.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/08/11/11132.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/11132.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/11132.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 提交的表单代码：&lt;table&nbsp;width="100%"&nbsp;border="0"&nbsp;cellspacing="1"&nbsp;cellpadding="0"&nbsp;bgcolor="#FF9900"&nbsp;align="center"&gt;&nbsp;&nbsp;&lt;...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/08/11/11132.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/11132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-08-11 15:49 <a href="http://www.cppblog.com/Khan/archive/2006/08/11/11132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 的简单数据库连接池实现</title><link>http://www.cppblog.com/Khan/archive/2006/03/05/3755.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Sun, 05 Mar 2006 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/03/05/3755.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3755.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/03/05/3755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3755.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3755.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一个连接容器，记录连接和连接使用状况package&nbsp;db.khan;import&nbsp;java.sql.*;/**//*数据库连接容器&nbsp;*&nbsp;*/public&nbsp;class&nbsp;DBPoolCon&nbsp;{&nbsp;&nbsp;/**//*容器中的连接*/&nbsp;&nbsp;public&nbsp;Connection&nbsp;con...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/03/05/3755.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/3755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-03-05 17:36 <a href="http://www.cppblog.com/Khan/archive/2006/03/05/3755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>搞定了Jms的ObjectMessage对象传递 ，这个项目可以告一段落了</title><link>http://www.cppblog.com/Khan/archive/2006/02/13/3236.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Mon, 13 Feb 2006 09:41:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/13/3236.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3236.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/13/3236.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3236.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3236.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关键字:JAVA JMS&nbsp; Active MQ&nbsp; XML INI Eclipse Resinjms服务器 , active MQ 我这一篇应该是第一篇比较详细的用代码+注释介绍的中文文档了activeMQ是一个开源的C核心的jms服务器,在国外的应用相当广泛.所以这个项目我放弃了jboss4的用数据库作为消息载体的jms服务,改用active MQ&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/02/13/3236.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/3236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-13 17:41 <a href="http://www.cppblog.com/Khan/archive/2006/02/13/3236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>消息中间件和JMS(转载自jfox project)</title><link>http://www.cppblog.com/Khan/archive/2006/02/07/3100.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Tue, 07 Feb 2006 02:42:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/07/3100.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3100.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/07/3100.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3100.html</trackback:ping><description><![CDATA[<br>
(from http://jmsmom.3322.net/mom_jms/jms.html)
<br><br>
当前，CORBA、DCOM、RMI等RPC中间件技术已广泛应用于各个领域。但是面对规模和复杂度都越来越高的分布式系统，这些技术也显示出其局限性：
（1）同步通信：客户发出调用后，必须等待服务对象完成处理并返回结果后才能继续执行；（2）客户和服务对象的生命周期紧密耦合：客户进程和服务对象进程
都必须正常运行；如果由于服务对象崩溃或者网络故障导致客户的请求不可达，客户会接收到异常；（3）点对点通信：客户的一次调用只发送给某个单独的目标对
象。 <br>&nbsp;&nbsp; 面向消息的中间件（Message Oriented
Middleware，MOM）较好的解决了以上问题。发送者将消息发送给消息服务器，消息服务器将消息存放在若干队列中，在合适的时候再将消息转发给接
收者。这种模式下，发送和接收是异步的，发送者无需等待；二者的生命周期未必相同：发送消息的时候接收者不一定运行，接收消息的时候发送者也不一定运行；
一对多通信：对于一个消息可以有多个接收者。 <br>&nbsp;&nbsp;
已有的MOM系统包括IBM的MQSeries、Microsoft的MSMQ和BEA的MessageQ等。由于没有一个通用的标准，这些系统很难实现
互操作和无缝连接。Java Message Service（JMS）是SUN提出的旨在统一各种MOM系统接口的规范，它包含点对点（Point
to
Point，PTP）和发布/订阅（Publish/Subscribe，pub/sub）两种消息模型，提供可靠消息传输、事务和消息过滤等机制。 
                            <p><br><b>1.JMS<br></b>&nbsp;&nbsp;
JAVA 消息服务(JMS)定义了Java 中访问消息中间件的接口。JMS 只是接口，并没有给予实现，实现JMS 接口的消息中间件称为JMS
Provider，iLink实现了JMS接口，用户可以通过使用JMS接口，在iLink中进行JMS编程。 iLink支持JMS1.0.2版本。
<br><br><b>2.JMS接口描述<br></b>&nbsp;&nbsp;  JMS 支持两种消息类型PTP 和Pub/Sub，分别称作：PTP Domain 和Pub/Sub Domain，这两种接口都继承统一的JMS父接口，JMS 主要接口如下所示：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="97%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table3" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td height="16" width="22%">
                                                        <p><font size="-1">MS父接口</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">PTP</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">Pub/Sub</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">ConnectionFactory</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueConnectionFactory</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicConnectionFactory</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">Connection</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueConnection</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicConnection</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">Destination</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">Queue</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">Topic</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">Session</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueSession</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicSession</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">MessageProducer</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueSender</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicPublisher</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="22%">
                                                        <p><font size="-1">MessageConsumer</font></p>
                                                    </td>
                                                    <td width="29%">
                                                        <p><font size="-1">QueueReceiver,QueueBrowser</font></p>
                                                    </td>
                                                    <td width="48%">
                                                        <p><font size="-1">TopicSubscriber</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;&nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br>&nbsp;&nbsp;  ConnectionFactory ：连接工厂，JMS 用它创建连接<br>&nbsp;&nbsp;  Connection ：JMS 客户端到JMS Provider 的连接<br>
                                &nbsp;&nbsp;  Destination ：消息的目的地<br>&nbsp;&nbsp;  Session： 一个发送或接收消息的线程<br>&nbsp;&nbsp;  MessageProducer： 由Session 对象创建的用来发送消息的对象<br>
                                &nbsp;&nbsp;  MessageConsumer： 由Session 对象创建的用来接收消息的对象<br><br><b>3.JMS消息模型<br></b>JMS 消息由以下几部分组成：消息头，属性，消息体。<br>&nbsp;&nbsp;  <br><b>3.1 消息头(Header)</b>
                                 - 消息头包含消息的识别信息和路由信息，消息头包含一些标准的属性如：JMSDestination,JMSMessageID 等。 <br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="97%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table4" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td height="16" width="25%">
                                                        <p><font size="-1">&nbsp;消息头</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">&nbsp;由谁设置</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDestination</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDeliveryMode</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSExpiration</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSPriority</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSMessageID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSTimestamp</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">send 或 publish 方法</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSCorrelationID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">客户</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSReplyTo</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">客户</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSType</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">客户</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSRedelivered</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">JMS Provider</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;&nbsp;   &nbsp;   &nbsp;   <br>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;&nbsp; &nbsp; &nbsp;  <br><b>3.2 属性(Properties)</b> - 除了消息头中定义好的标准属性外，JMS 提供一种机制增加新属性到消息头中，这种新属性包含以下几种：<br>&nbsp;&nbsp;  1. 应用需要用到的属性;<br>
                                &nbsp;&nbsp;  2. 消息头中原有的一些可选属性;<br>&nbsp;&nbsp;  3. JMS Provider 需要用到的属性。<br>&nbsp;&nbsp;  标准的JMS 消息头包含以下属性：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="97%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table5" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDestination</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消息发送的目的地</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSDeliveryMode</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">传递模式， 有两种模式： PERSISTENT 和NON_PERSISTENT，PERSISTENT 表示该消息一定要被送到目的地，否则会导致应用错误。NON_PERSISTENT 
                                                            表示偶然丢失该消息是被允许的，这两种模式使开发者可以在消息传递的可靠性和吞吐量之间找到平衡点。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSMessageID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">唯一识别每个消息的标识，由JMS Provider 产生。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSTimestamp</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">一个消息被提交给JMS Provider 到消息被发出的时间。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSCorrelationID</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">用来连接到另外一个消息，典型的应用是在回复消息中连接到原消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSReplyTo</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">提供本消息回复消息的目的地址</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSRedelivered</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">如果一个客户端收到一个设置了JMSRedelivered 属性的消息，则表示可能该客户端曾经在早些时候收到过该消息，但并没有签收(acknowledged)。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSType</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消息类型的识别符。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSExpiration</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消
息过期时间，等于QueueSender 的send 方法中的timeToLive 值或TopicPublisher 的publish
方法中的timeToLive 值加上发送时刻的GMT 时间值。如果timeToLive值等于零，则JMSExpiration
被设为零，表示该消息永不过期。如果发送后，在消息过期时间之后消息还没有被发送到目的地，则该消息被清除。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="25%">
                                                        <p><font size="-1">JMSPriority</font></p>
                                                    </td>
                                                    <td width="74%">
                                                        <p><font size="-1">消息优先级，从0-9 十个级别，0-4 是普通消息，5-9 是加急消息。JMS 不要求JMS Provider 严格按照这十个优先级发送消息，但必须保证加急消息要先于普通消息到达。</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p><br><b>3.3 消息体(Body)</b> - JMS API 定义了5种消息体格式，也叫消息类型，你可以使用不同形式发送接收数据并可以兼容现有的消息格式，下面描述这5种类型： <br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="96%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table6" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="26%">
                                                        <p><font size="-1">消息类型</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">消息体</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">TextMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">java.lang.String对象，如xml文件内容</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">MapMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">名/值对的集合，名是String对象，值类型可以是Java任何基本类型</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">BytesMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">字节流</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">StreamMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">Java中的输入输出流</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">ObjectMessage</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">Java中的可序列化对象</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">Message</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">没有消息体，只有消息头和属性</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                                <br><br><br><br><br><br><br><br><br><br>下例演示创建并发送一个TextMessage到一个队列： <br>TextMessage message = queueSession.createTextMessage();<br>message.setText(msg_text); // msg_text is a String<br>
                                queueSender.send(message);<br><br>下例演示接收消息并转换为合适的消息类型： <br>Message m = queueReceiver.receive();<br>if (m instanceof TextMessage) {<br>&nbsp;TextMessage message = (TextMessage) m;<br>
                                &nbsp;System.out.println("Reading message: " + message.getText());<br>} else {<br>&nbsp;// Handle error<br>}<br><br><b>4. 消息的同步异步接收<br></b>
                                &nbsp;&nbsp;  消息的同步接收是指客户端主动去接收消息，JMS 客户端可以采用MessageConsumer 的receive方法去接收下一个消息。<br>&nbsp;&nbsp;
消息的异步接收是指当消息到达时，主动通知客户端。JMS 客户端可以通过注册一个实 现MessageListener
接口的对象到MessageConsumer，这样，每当消息到达时，JMS Provider
会调用MessageListener中的onMessage 方法。 <br><br><br><b>5. PTP模型<br></b>
                                PTP(Point-to-Point)模型是基于队列的，发送方发消息到队列，接收方从队列接收消息，队列的存在使得消息的异步传输成为可能。和邮件系统中的邮箱一样，队列可以包含各种消息，JMS 
                                Provider 提供工具管理队列的创建、删除。JMS PTP 模型定义了客户端如何向队列发送消息，从队列接收消息，浏览队列中的消息。<br>&nbsp;&nbsp;  下面描述JMS PTP 模型中的主要概念和对象：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="96%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table1" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="26%">
                                                        <p><font size="-1">名称</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">描述</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">Queue</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">由JMS Provider 管理，队列由队列名识别，客户端可以通过JNDI 接口用队列名得到一个队列对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">TemporaryQueue</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">由QueueConnection 创建，而且只能由创建它的QueueConnection 使用。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueConnectionFactory</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端用QueueConnectionFactory 创建QueueConnection 对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueConnection</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">一个到JMS PTP provider 的连接，客户端可以用QueueConnection 创建QueueSession 来发送和接收消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueSession</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">提供一些方法创建QueueReceiver 、QueueSender、QueueBrowser 和TemporaryQueue。如果在QueueSession 
                                                            关闭时，有一些消息已经被收到，但还没有被签收(acknowledged)，那么，当接收者下次连接到相同的队列时，这些消息还会被再次接收。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueReceiver</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端用QueueReceiver 接收队列中的消息，如果用户在QueueReceiver 中设定了消息选择条件，那么不符合条件的消息会留在队列中，不会被接收到。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueSender</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端用QueueSender 发送消息到队列。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueBrowser</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">客户端可以QueueBrowser 浏览队列中的消息，但不会收走消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">QueueRequestor</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">JMS 提供QueueRequestor 类简化消息的收发过程。QueueRequestor 的构造函数有两个参数：QueueSession 和queue，QueueRequestor 通过创建一个临时队列来完成最终的收发消息请求。</font>
                                                        </p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="26%">
                                                        <p><font size="-1">可靠性(Reliability)</font></p>
                                                    </td>
                                                    <td width="73%">
                                                        <p><font size="-1">队列可以长久地保存消息直到接收者收到消息。接收者不需要因为担心消息会丢失而时刻和队列保持激活的连接状态，充分体现了异步传输模式的优势。</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                                <br><br>&nbsp;&nbsp;   &nbsp;   &nbsp;   &nbsp;   <br>&nbsp;&nbsp;   &nbsp;   &nbsp;  <br>&nbsp;&nbsp; <br>&nbsp;
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p><b>6. PUB/SUB模型<br></b>JMS Pub/Sub 模型定义了如何向一个内容节点发布和订阅消息，这些节点被称作主题(topic)。<br>&nbsp;&nbsp;  主题可以被认为是消息的传输中介，发布者(publisher)发布消息到主题，订阅者(subscribe)
                                从主题订阅消息。主题使得消息订阅者和消息发布者保持互相独立，不需要接触即可保证消息的传送。<br>&nbsp;&nbsp;  下面描述JMS Pub/Sub 模型中的主要概念和对象：<br>
                                <table nof="TE" align="left" border="0" cellpadding="0" cellspacing="0" width="98%">
                                    <tbody><tr>
                                        <td>
                                            <table id="Table2" border="1" cellpadding="1" cellspacing="3" width="100%">
                                                <tbody><tr>
                                                    <td width="27%">
                                                        <p><font size="-1">名称</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">描述</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">订阅(subscription)</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">消
息订阅分为非持久订阅(non-durable subscription)和持久订阅(durable
subscrip-tion)，非持久订阅只有当客户端处于激活状态，也就是和JMS Provider
保持连接状态才能收到发送到某个主题的消息，而当客户端处于离线状态，这个时间段发到主题的消息将会丢失，永远不会收到。持久订阅时，客户端向JMS
注册一个识别自己身份的ID，当这个客户端处于离线时，JMS Provider 会为这个ID 保存所有发送到主题的消息，当客户再次连接到JMS
Provider时，会根据自己的ID 得到所有当自己处于离线时发送到主题的消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">Topic</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">主题由JMS Provider 管理，主题由主题名识别，客户端可以通过JNDI 接口用主题名得到一个主题对象。JMS 没有给出主题的组织和层次结构的定义，由JMS Provider 自己定义。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TemporaryTopic</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">临时主题由TopicConnection 创建，而且只能由创建它的TopicConnection 使用。临时主题不能提供持久订阅功能。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicConnectionFactory</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">客户端用TopicConnectionFactory 创建TopicConnection 对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicConnection</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">TopicConnection 是一个到JMS Pub/Sub provider 的连接，客户端可以用TopicConnection创建TopicSession 来发布和订阅消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicSession</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">TopicSession 提供一些方法创建TopicPublisher、TopicSubscriber、TemporaryTopic 。它还提供unsubscribe 方法取消消息的持久订阅。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicPublisher</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">客户端用TopicPublisher 发布消息到主题。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicSubscriber</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">客户端用TopicSubscriber 接收发布到主题上的消息。可以在TopicSubscriber 中设置消息过滤功能，这样，不符合要求的消息不会被接收。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">Durable TopicSubscriber</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">如果一个客户端需要持久订阅消息，可以使用Durable TopicSubscriber，TopSession 提供一个方法createDurableSubscriber创建Durable TopicSubscriber 对象。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">恢复和重新派送(Recovery and Redelivery)</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">非持久订阅状态下，不能恢复或重新派送一个未签收的消息。只有持久订阅才能恢复或重新派送一个未签收的消息。</font></p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">TopicRequestor</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">JMS 提供TopicRequestor 类简化消息的收发过程。TopicRequestor 的构造函数有两个参数：TopicSession 和topic。TopicRequestor 通过创建一个临时主题来完成最终的发布和接收消息请求。</font>
                                                        </p>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td width="27%">
                                                        <p><font size="-1">可靠性(Reliability)</font></p>
                                                    </td>
                                                    <td width="72%">
                                                        <p><font size="-1">当所有的消息必须被接收，则用持久订阅模式。当丢失消息能够被容忍，则用非持久订阅模式。</font></p>
                                                    </td>
                                                </tr>
                                            </tbody></table>
                                        </td>
                                    </tr>
                                </tbody></table>
                            </p><p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp; <br>&nbsp;</p>
                            <p>&nbsp;</p>
                            <p>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br>&nbsp; <br><b>7. 开发JMS的步骤<br></b>
                                &nbsp;&nbsp;  广义上说，一个JMS 应用是几个JMS 客户端交换消息，开发JMS 客户端应用由以下几步构成： <br>用JNDI 得到ConnectionFactory 对象； <br>用JNDI 得到目标队列或主题对象，即Destination 对象； <br>
                                用ConnectionFactory 创建Connection 对象； <br>用Connection 对象创建一个或多个JMS Session； <br>用Session 和Destination 创建MessageProducer 和MessageConsumer； <br>通知Connection 开始传递消息。 </p><img src ="http://www.cppblog.com/Khan/aggbug/3100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-07 10:42 <a href="http://www.cppblog.com/Khan/archive/2006/02/07/3100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA MESSAGE SERVICE的概念与体系结构(转自计算机世界i社区)</title><link>http://www.cppblog.com/Khan/archive/2006/02/07/3099.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Tue, 07 Feb 2006 02:37:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/07/3099.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3099.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/07/3099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3099.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3099.html</trackback:ping><description><![CDATA[&nbsp;企业信息产品正在成为使内部公司运作一体化的基本部件，也让一些相互独立的商业部件利用它组合成一个可靠的、更灵活的、有弹性的系统。另外对于传统的
MOM提供商，企业信息产品也是被一些有名的数据库开发商和许多与internet相联系的公司所提供。Java语言客户端和Java语言中间层肯定有能
力结合和使用这些企业信息产品，那么JMS（Java message
service）提供了这种能力，它是以SUN公司领导和发起开发的一套标准的JAVA API。这套JAVA API（JMS
API）提供了一个标准的方法去建立、发送、和接收一个企业信息系统的信息，它是一个接口的集合并且定义了一个JMS客户端如何获取企业信息产品的工具的
一套规则。因为信息是对等的， 所有的JMS客户一般都被当作客户端来看待。JMS API也可以<br>
和其他的JAVA API相结合，它甚至和JDBC API在同一个事务内运作而相安无事，它也可以直接地和Java Transaction API
(JTA)、Java Transaction Service API (JTS)一起工作。不要把JMS
API当作JavaBeans，它最初的设计并不是作为JavaBeans部件来设计的，但是JavaBeans能够使用它的session发送和接收信
息。不要忘了Java Naming and Directory Interface API(JNDI), 没有它我们也无法配置和寻找JMS对象。<br>
&nbsp;&nbsp;JMS的应用有以下几个部分组合而成：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;JMS Clients: 它们是java 语言程序用来发送和接收信息的。<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;Non-JMS Clients: 它们是本地的信息系统的API构建的而不是用JMS API。<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;Messages: 每一个应用都要定义一个信息集合用来在客户端进行信息通讯。<br>
四、&nbsp;&nbsp;&nbsp;&nbsp;JMS Provider: 实现JMS的一个信息系统，除了管理和控制之外，这也是一个完整的信息产品的必须的特征。<br>
五、&nbsp;&nbsp;&nbsp;&nbsp;Administrated Objects: 由客户端预先配置创建的JMS对象。<br>
&nbsp;&nbsp;&nbsp;&nbsp;JMS的管理方法：<br>
有两个JMS管理对象的类型：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;ConnectionFactory:&nbsp;&nbsp;客户端用这个对象创建连接。<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;Destination: 客户端指定的接收或发送的一个信息源。<br>
管理者将Administrated Objects放在一个叫JNDI namespace的地方。<br>
JMS两种信息风格：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;POINT-TO-POINT(PTP)<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;PUBLISH-AND-SUBSCRIBE(PUB/SUB)<br>
JMS的接口：<br>
&nbsp;&nbsp;根据采用的信息风格其接口对象也是不同的：<br>
公用对象：<br>
&nbsp;&nbsp;ConnectionFactory、Connection、Destination、Session、MessagerPoducer、MessageConsumer<br>
PTP专用对象：<br>
&nbsp;&nbsp;QueueConnectionFactory、QueueConnection、Queue、QueueSession、QueueSender、QueueReceiver or QueueBrowser<br>
PUB/SUB专用对象:<br>
&nbsp;&nbsp;TopicConnectionFactory、TopicConnection、Topic、TopicSession、TopicPublisher、TopicSubscriber<br><br>
开发一个JMS客户端的流程：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;用JNDI找到一个ConnectionFactory对象。<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;用JNDI找到一个Destination对象。<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;用ConnectionFactory对象建立一个JMS Connection对象。<br>
四、&nbsp;&nbsp;&nbsp;&nbsp;用JMS Connection对象建立一个或多个JMS Session对象。<br>
五、&nbsp;&nbsp;&nbsp;&nbsp;用一个Session和Destination建立一个MessageProducer和MessageConsumer对象。<br>
六、&nbsp;&nbsp;&nbsp;&nbsp;用Connection对象开始信息递交。<br>
JMS的多线程：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JMS对象中有一部分是被自动共享的，因此JMS限制那些被自动共享的对象使之不能够被一个多线程的程序所存取，下面列出了哪些对象能够被共享：<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;自动共享的对象：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;Destination<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;ConnectionFactory<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;Connection<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不被共享的对象：<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;Session<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;MessageProducer<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;MessageConsumer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMS消息的格式：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMS提供了系列的API来完成信息的格式，我们必须严格按照这些格式来传递信息。<br>
一、&nbsp;&nbsp;&nbsp;&nbsp;信息头<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
JMSDestination,JMSDeliveryMode,JMSExpiration,JMSPriority,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSMessageID,JMSTimestamp,JMSCorrelationID,JMSReplyTo,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSType,JMSRedelivered<br>
二、&nbsp;&nbsp;&nbsp;&nbsp;信息属性<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSXUserID,JMSAppID,JMSXDeliveryCount, JMSXGroupID,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSXGroupSeq,JMSXProducerTXID,JMSXConsumerTXID,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JMSXRcvTimestamp,JMSXState<br>
三、&nbsp;&nbsp;&nbsp;&nbsp;信息体(提供了五种信息体，每一种信息体有自己专用的接口)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamMessage,MapMessage,TextMessage,ObjectMessage,BytesMessage<br><img src ="http://www.cppblog.com/Khan/aggbug/3099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-07 10:37 <a href="http://www.cppblog.com/Khan/archive/2006/02/07/3099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>扫雷游戏的设计(Kjava 原创)</title><link>http://www.cppblog.com/Khan/archive/2006/02/05/3077.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Sun, 05 Feb 2006 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/05/3077.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3077.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/05/3077.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3077.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3077.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 首先我要装得像高手一样,来假装把系统稍微分析一下。一般，按照java得开发模式，这种程序一般是分为三个模块来开发。如下三个：一个程序运作的主文件，也就是一个midlet的继承；一个界面的表示类，也就是一个canvas的继承，界面上应该有些菜单，如new、exit 什么的，那就应该要 implements一个commandListener消息监听类(大家可以把java的消息监听理解为一个线程...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2006/02/05/3077.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/3077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-05 21:44 <a href="http://www.cppblog.com/Khan/archive/2006/02/05/3077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>跨平台图形化c++开发环境的搭建</title><link>http://www.cppblog.com/Khan/archive/2006/02/05/3070.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Sun, 05 Feb 2006 10:14:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/02/05/3070.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/3070.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/02/05/3070.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/3070.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/3070.html</trackback:ping><description><![CDATA[准备几样东西<br>编译器 mingw 5.0.0 (windows下的配置为例)<a href="http://sourceforge.net/projects/astyle/"></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选装Gcc,Make（和c/c++相关的都装上）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GDB 调试器<br><font color="#0000ff"><u>http://www.mingw.org/download.shtml</u></font><br><br>ide&nbsp; eclipse 3.1.2&nbsp;&nbsp; +&nbsp; cdt 3.0.1&nbsp; (eclipse是基于java的,需要配置java环境)<br><font color="#0000ff"><u>http://www.eclipse.org/downloads/<br>http://java.sun.com</u></font><br><br>formatter AStyle&nbsp; c/c++ java c# 代码格式化工具 <br><a href="http://sourceforge.net/projects/astyle/">http://sourceforge.net/projects/astyle/</a><br><br><br>一.安装mingw <br>&nbsp;1. 到指定目录，我的安装路径为 D:\Develop\MinGW<br>&nbsp;2. 配置系统环境变量 <br>&nbsp;&nbsp;&nbsp;&nbsp; MINGW_HOME = D:\Develop\MinGW<br>&nbsp;&nbsp;&nbsp;&nbsp; class_path = .;%MINGW_HOME%\lib<br>&nbsp;&nbsp;&nbsp;&nbsp; path = .;%MINGW_HOME%\bin<br>&nbsp;&nbsp;&nbsp; 当系统中有多个c++开发包的时候,写在前面的路径优先<br>&nbsp;&nbsp;&nbsp; mingw中的make程序名为 mingw32-make.exe ,推荐将其改名为make<br><br>二.安装 eclipse 3.12<br>&nbsp;1.安装jdk+jre (我机器上是j2sdk 1.5&nbsp; 路径为 D:\Develop\J2SDK ) <br>&nbsp;2.配置java系统环境变量 <br>&nbsp;&nbsp;&nbsp;&nbsp; JAVA_HOME = D:\Develop\J2SDK<br>
&nbsp;&nbsp;&nbsp;&nbsp; class_path = .;%JAVA_HOME%\lib<br>
&nbsp;&nbsp;&nbsp;&nbsp; path = .;%JAVA_HOME%\bin<br>&nbsp;3.下载Eclipse 解压到指定目录,直接就可以执行,如果java环境配置没有问题的话<br>&nbsp;4.安装cdt (c/c++ develop kit)<br>&nbsp;&nbsp; 我按照网上的方法安装数次都不行 (将org.eclipse.cdt-3.x.x-win32.x86.zip 和 org.eclipse.cdt.sdk-3.0.1-win32.x86.zip 中的文件copy到eclipse安装目录的对应目录中)<br>&nbsp;&nbsp; 最后用eclipse自动升级的办法 打开eclipse help--&gt;software updates--&gt;find an install<br>&nbsp;&nbsp; 选中search for new features to install , 点next, new remote site ,<font color="#0000ff"><font color="#000000"></font></font><br>&nbsp;&nbsp;&nbsp; name = cdt 3.01 <br>&nbsp;&nbsp;&nbsp; url = <font color="#0000ff"><u>http://download.eclipse.org/tools/cdt/releases/eclipse3.1</u></font>&nbsp; <br>然后选择 finish ,选中所有文件,开始下载,下载完成后会自动提示安装, 安装完成后 apply change ,然后重启eclipse <br>就可以在eclipse下进行c/c++ 开发了<br><br>&nbsp;&nbsp; 还有一个问题需要注意,cdt的一个问题,在对c++文件建立indexer时会在75%的时候卡住,而且cpu占用率通常都是100% ,我知道的唯一的解决办法是将indexer功能关闭 windows--&gt;perferences--&gt; c/c++--&gt;indexer 选择No Indexer<br><br>三.安装astyle<br>&nbsp;&nbsp; 由于eclipse本身没有针对c/c++的代码格式化工具,所以我们需要借助第三方的工具,我选用astyle一个小巧的,opensource的代码格式化工具,安装非常简单,解压到指定目录下,只有一个可执行文件,astyle.exe ,其他的都是source doc, 可以直接在命令行下使用,语法参阅相关文档<br>&nbsp;&nbsp; 我将其整合到了gvim , editplus ,eclipse中 . eclipse--&gt;external tools--&gt;program&nbsp; 选择new 新建 <br>&nbsp;&nbsp;&nbsp; name = Formatter C++<br>&nbsp;&nbsp;&nbsp; localtion = D:\Develop\AStyle1.15\astyle.exe<br>&nbsp;&nbsp;&nbsp; working directory = ${workspace_loc:/${project_name}}<br>&nbsp;&nbsp;&nbsp; arguments = --style=kr --mode=c++ --indent=spaces=2 ${resource_name}<br>&nbsp;&nbsp; 确定就ok了.<br>&nbsp;&nbsp; 使用的时候 直接选择 Formatter C++ 就ok了 这里的设置表示,代码风格为k&amp;r, 语法c++ ,代码缩进2空格<br><br>四,测试代码<br>&nbsp; 新建一个managed c++ project<br>&nbsp; 新建一个c++ 文件 helloWorld.cpp<br><br>/*helloWorld.cpp*/<br>#include &lt;iostream&gt;<br><br>using namespace std;<br><br>int main() {<br>&nbsp; char str[100] = "hello world!!";<br>&nbsp; cout &lt;&lt; str &lt;&lt; endl;<br>}<br><br><br>&nbsp; 新建makefile<br># Project: helloWorld<br><br><br>CPP&nbsp; = g++<br>CC&nbsp;&nbsp; = gcc<br>LIBS =<br>INCS =<br>CXXINCS = <br>CXXFLAGS = -o -Wall -g $(CXXINCS) $(LIBS)<br>CFLAGS = -o -Wall -g<br><br><br>.c.o: $(CC) $(CFLAGS)&nbsp; $&lt;<br><br>.cpp.o: $(CPP) $(CXXFLAGS) $&lt;<br><br>all: helloWorld<br><br>helloWorld: helloWorld.o<br>&nbsp;&nbsp;&nbsp; $(CPP) -o helloWorld helloWorld.o $(CXXINCS) $(LIBS)<br><br>helloWorld.o: helloWorld.cpp<br><br><br>clean:<br>&nbsp;&nbsp;&nbsp; del *.exe *.orig *.o<br>&nbsp; <br><br><font color="#0000ff"><font color="#000000"></font></font><img src ="http://www.cppblog.com/Khan/aggbug/3070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-02-05 18:14 <a href="http://www.cppblog.com/Khan/archive/2006/02/05/3070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]操，个死人微软逼我打了sqlserver 的sp3补丁</title><link>http://www.cppblog.com/Khan/archive/2006/01/12/2622.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 12 Jan 2006 01:56:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/01/12/2622.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2622.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/01/12/2622.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2622.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2622.html</trackback:ping><description><![CDATA[[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket ，sql server sp3补丁<img src="http://blog.codelphi.com/liukun966123/aggbug/73228.aspx" height="1" width="1"><br><p>&nbsp;&nbsp;&nbsp; 本来调试好的jsp脚本，突然就访问不了数据库了，郁闷了半个下午，结果是windows 2003自作主张的封掉了sqlserver 2000可能存在漏洞的端口，导致我访问数据库的时候出现 Error establishing socket</p> <p>&nbsp;&nbsp;&nbsp; 所以提醒大家，有这种错误的时候，检查sql server sp3补丁</p><a href="http://blog.codelphi.com/liukun966123/archive/2005/08/16/73228.aspx"></a><img src ="http://www.cppblog.com/Khan/aggbug/2622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-01-12 09:56 <a href="http://www.cppblog.com/Khan/archive/2006/01/12/2622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]resin2.1.4+iis 配置方法</title><link>http://www.cppblog.com/Khan/archive/2006/01/12/2631.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Thu, 12 Jan 2006 01:56:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2006/01/12/2631.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2631.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2006/01/12/2631.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2631.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2631.html</trackback:ping><description><![CDATA[<p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">resin2.1.4+iis </span></b><font face="Arial Unicode MS"><b><span style="font-size: 9pt; color: black;">配置方法</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">第一步，安装</font></span></b><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jdk1.2.2 </span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">执行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">jdk-1_2_2_008-win.exe</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，将</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jdk1.2.2</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">安装到硬盘</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">-------</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">说明：把</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">jdk</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">安装到</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">C</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">盘或</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">D</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">盘都可以，这里假设安装在</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">D</span><span style="font-size: 9pt; color: rgb(0, 102, 0);"><font face="Arial Unicode MS">盘</font></span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN"> d:\jdk<o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">如图中红圈标示位置：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><span style="color: rgb(51, 51, 102); text-decoration: none;"></span><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">经过几步之后选择</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">JAVA</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">运行环境的安装位置，直接选</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“next”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">安装：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jdk</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">安装完毕后</span><span style="font-size: 9pt; color: red;">重新启动</span><span style="font-size: 9pt; color: black;">电脑</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><b><span style="font-size: 9pt; color: black;">第二步，设置环境变量</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">右键</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">我的电脑</font></span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，选</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">属性</font></span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> -&gt;</span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN"> </span></b><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">高级</font></span></b><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';"> </span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">-&gt; </span><b><span style="font-size: 9pt; color: blue;"><font face="Arial Unicode MS">环境变量</font></span></b><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN"><br></span></b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">系统变量</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">处设置如下几个变量：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">A. </span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">CLASSPATH</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> =d:\jdk\lib\dt.jar;d:\jdk\lib\tools.jar<br>B. </span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">JAVA_HOME </span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">=d:\jdk<br>C. </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN"> path </span></b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">的值中添加</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> d:\jdk\;d:\jdk\bin;<o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">如图：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">第三步，配置</font></span></b><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">resin</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">拷贝</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">resin</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">目录到</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">D</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">盘根目录，如图：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">执行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">d:\resin\bin\httpd.exe</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，弹出两个窗口，先不要关掉，如果像下图这样就对了：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">此时请打开浏览器敲入</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><a href="http://127.0.0.1:8080/">http://127.0.0.1:8080/</a></span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，应可看到如下画面：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">D</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">盘建立</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\wwwroot</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">和</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\scripts</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">目录</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">internet</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">服务管理器中将主目录指向以</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">wwwroot</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，另建一个</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">script</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">目录，指向到</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">scripts</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，如果原来就有目录，则不必新建，确认其可正常工作就可以了</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">关闭</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">iis</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">：先关掉</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">httpd.exe</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">窗口，另一个窗口将自动关掉</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">运行：</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">net stop w3svc</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">拷贝</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">D:\resin\libexec\isapi_srun.dll</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">到</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">D:\Inetpub\scripts</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">下面</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">添加</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">isapi</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">筛选器：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">该筛选器添加后，优先级为</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“* </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">未知</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> *”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，不要理它，继续下面的工作</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\scripts</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">目录下建立</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> resin.ini </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">文件，内容如下：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><font style="background-color: rgb(221, 237, 251);"><span class="code1"><span style="font-size: 9pt; font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN">CauchoConfigFile d:/resin/conf/resin.conf</span></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">修改</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> d:\resin\conf\resin.conf</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">寻找</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;caucho.com&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，一般是第</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">20</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">行左右，在它下面加入</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;iis priority='high'/&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">寻找</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;doc-dir&gt;doc&lt;/doc-dir&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">，一般是在第</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">67</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">行左右，把它注释掉：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br>“</span><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN">&lt;!-- &lt;doc-dir&gt;doc&lt;/doc-dir&gt; --&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”<o:p></o:p></span></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">将其上方的</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;http-server&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">改为</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br>“</span><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">&lt;http-server app-dir='d:\inetpub\wwwroot'&gt;</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”<br><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">到第</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">178</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">行左右，将</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span class="code1"><span style="font-size: 9pt; font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN"><font style="background-color: rgb(221, 237, 251);">&lt;servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/&gt;</font></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: 'Courier New';" lang="EN"><br><span class="code1"><span style="letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/&gt;</span></span></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">换成</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span class="code1"><span style="font-size: 9pt; color: blue; font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN"><font style="background-color: rgb(221, 237, 251);">&lt;servlet-mapping url-pattern='*.xtp' servlet-name='com.caucho.jsp.XtpServlet'/&gt;</font></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: blue; font-family: 'Courier New';" lang="EN"><br><span class="code1"><span style="color: blue; letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.jsp' servlet-name='com.caucho.jsp.JspServlet'/&gt;</span></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: 'Courier New';" lang="EN"><br></span><span class="code1"><span style="font-size: 9pt; color: rgb(0, 102, 0); font-family: 'Courier New'; letter-spacing: 0pt;" lang="EN"><font style="background-color: rgb(221, 237, 251);">&lt;!--</font></span></span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(0, 102, 0); font-family: 'Courier New';" lang="EN"><br><span class="code1"><span style="color: rgb(0, 102, 0); letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/&gt;</span></span><br><span class="code1"><span style="color: rgb(0, 102, 0); letter-spacing: 0pt;">&lt;servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/&gt; </span></span><br><span class="code1"><span style="color: rgb(0, 102, 0); letter-spacing: 0pt;">--&gt; </span></span></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">绿色部分删掉也可以，保留原来的是为了和原配置相对照</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">安装服务：</font></span></b><b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span></b><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">Dos</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">窗口中执行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\resin\bin\httpd -install </span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">后，弹出一个小窗口提示服务添加成功</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">此时查看控制面板</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">-&gt;</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">管理工具</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">-&gt;</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">服务，应该已经有</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“Resin Web Server”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">服务了，找到并手工启动它，只此一次，以后就不用手工启动了</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">删除</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">Resin Web Server</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">服务方法：运行</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';"> </span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\resin\bin\httpd -remove</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">运行：</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">net start w3svc</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">重启电脑</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">在当前站点名称上右键打开属性面板</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">按下图顺序设置</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: red;"><font face="Arial Unicode MS">第</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">7</span><span style="font-size: 9pt; color: red;"><font face="Arial Unicode MS">步应选择</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">d:\inetpub\scripts</span><span style="font-size: 9pt; color: red;"><font face="Arial Unicode MS">目录下的</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">isapi_srun.dll</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">然后启动当前站点，</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">再查看</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">isapi</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">筛选器，</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jsp</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">筛选器的优先级应该变为</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">高</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">了，如下图。否则重做，直到做对为止</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">设置默认文档：</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="line-height: 140%; text-align: justify;"><span lang="EN"></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">测试</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">jsp</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">程序：</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">将下列暗红色代码写入</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">index.jsp</span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">文件并存入</font></span><span style="font-size: 9pt; color: rgb(153, 0, 0); font-family: 'Courier New';"> </span><b><span style="font-size: 9pt; color: blue; font-family: 'Courier New';" lang="EN">d:\inetpub\wwwroot</span></b><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">目录下</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p style="margin: 3.75pt; line-height: 13.5pt; text-align: justify;"><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: rgb(153, 0, 0); font-family: 'Courier New';" lang="EN">&lt;%@ page contentType="text/html;charset=gb2312"%&gt;<br>&lt;%<br>int a=1;<br>int b=4;<br>%&gt;<br>&lt;%=(a+b)%&gt;</span><span style="border: 0.75pt solid rgb(0, 153, 204); padding: 4pt; background: rgb(221, 237, 251) none repeat scroll 0% 50%; font-size: 9pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></p> <p style="margin: 0cm 0cm 0pt; line-height: 140%; text-align: justify;"><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><br></span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">在浏览器中输入：</font></span><span style="font-size: 9pt; color: red; font-family: 'Courier New';" lang="EN">http://10.20.128.20</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"> </span><span style="font-size: 9pt; color: black;"><font face="Arial Unicode MS">如果页面上显示</font></span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN">“5”</span><font face="Arial Unicode MS"><span style="font-size: 9pt; color: black;">，就大功告成了！</span><span style="font-size: 9pt; color: black; font-family: 'Courier New';" lang="EN"><o:p></o:p></span></font></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%;"><span style="font-size: 9pt; color: rgb(51, 51, 51); font-family: 宋体;">如果没有启动</span><span style="font-size: 9pt; color: rgb(51, 51, 51); font-family: 'Courier New';" lang="EN">resin</span><span style="font-size: 9pt; color: rgb(51, 51, 51); font-family: 宋体;">。将得到下面的错误信息：</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">Can't contact Servlet Runner at localhost:6802 <o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%;"><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">&nbsp;<o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%;"><span style="font-size: 9pt; font-family: 宋体;">启动</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">iis : net start w3svc<o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%;"><span style="font-size: 9pt; font-family: 宋体;">停止</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">iis : net stop w3svc<o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%;"><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">&nbsp;<o:p></o:p></span></p> <p class="MsoNormal" style="margin: 0cm 0cm 0pt; line-height: 150%;"><span style="font-size: 9pt; font-family: 宋体;">安装</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">resin</span><span style="font-size: 9pt; font-family: 宋体;">服务</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN"> : d:\resin\bin\httpd –install<o:p></o:p></span></p> <span style="font-size: 9pt; font-family: 宋体;">删除</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN">resin</span><span style="font-size: 9pt; font-family: 宋体;">服务</span><span style="font-size: 9pt; font-family: 'Courier New';" lang="EN"> : d:\resin\bin\httpd –remove</span><a href="http://blog.codelphi.com/liukun966123/archive/2005/03/29/36238.aspx"></a><img src ="http://www.cppblog.com/Khan/aggbug/2631.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2006-01-12 09:56 <a href="http://www.cppblog.com/Khan/archive/2006/01/12/2631.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>郁闷啊,jboss瘫了,我公司的所有服务都停了 </title><link>http://www.cppblog.com/Khan/archive/2004/10/22/2650.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 22 Oct 2004 14:30:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2004/10/22/2650.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2650.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2004/10/22/2650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2650.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2650.html</trackback:ping><description><![CDATA[<br><br>
		  10:00 不明白原因,启动的时候提示java.io.eofException错误,也不明所以<br>11:00 我没有看过任何jboss的资料,还是不行啊<br>12:00 找到公司以前的技术人员,和他讨论,他也不知道原因,他推测是我新写的什么应用使用了过多的数据库链接或者游标而没有释放,导致jboss不能链接到oracle数据库.因为他下午准备论文答辩.公司其他人员完全没有接触过这块.所以还是我一个人死挺<br>14:00 开始将备份的jboss的配置文件一行行的看,发现jboss好像自己带了一个嵌入式数据库,他的消息池应该是存放在一个叫localDB的文件中的,我们现在这个文件有800m之大, 江湖谣传jms这种队列式的东西占用了800m内容应该不算正常,<br>13:00 将data目录备份,用一个初始的localdb覆盖掉原来的,然后去掉了一些不用的jms资源<br>忍了几分钟,好像正常启动了,然后跟着启动了基于jms的其他服务,然后叫测试人员测试,正常了<img src="http://www.cnblogs.com/Emoticons/hitwall.gif"><br><br>事后再分析,我前几天写的一个程序每一秒放一条消息到jms 池里面, 另外一边接收的已经做好了,当时测试了部分都没有问题,但是是什么原因会导致jboss的jms池有如此巨大的未处理消息呢,未解<img src="http://blog.codelphi.com/liukun966123/aggbug/26442.aspx" height="1" width="1"><img src ="http://www.cppblog.com/Khan/aggbug/2650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2004-10-22 22:30 <a href="http://www.cppblog.com/Khan/archive/2004/10/22/2650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet &amp; jsp 不同的中文处理方式之根源 </title><link>http://www.cppblog.com/Khan/archive/2004/10/22/2651.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 22 Oct 2004 14:21:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2004/10/22/2651.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2651.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2004/10/22/2651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2651.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2651.html</trackback:ping><description><![CDATA[简单一句,jsp的内部编码是 iso8859-1
<br>servlet 的内部编码是 gbk
<br>大家进行编码转换的时候记得这点就好了<img src="http://blog.codelphi.com/liukun966123/aggbug/26434.aspx" height="1" width="1"><img src ="http://www.cppblog.com/Khan/aggbug/2651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2004-10-22 22:21 <a href="http://www.cppblog.com/Khan/archive/2004/10/22/2651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java servlet 的字符filter (转载至chinajavaworld.com) </title><link>http://www.cppblog.com/Khan/archive/2004/10/22/2652.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 22 Oct 2004 13:52:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2004/10/22/2652.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2652.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2004/10/22/2652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2652.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2652.html</trackback:ping><description><![CDATA[配置字符过滤器,就不用每个中文都转换,filter会自动将符合条件的编码进行自动转换了.呵呵. 
一劳永逸 <br><br><div style="border: 0.5pt solid windowtext; padding: 0in 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 80%;"><div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 0);">&nbsp;package&nbsp;filters;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;XP&nbsp;Forum<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;Copyright&nbsp;(c)&nbsp;2002-2003&nbsp;RedSoft&nbsp;Group.&nbsp;All&nbsp;rights&nbsp;reserved.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">import&nbsp;javax.servlet.</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">import&nbsp;java.io.IOException;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;p&gt;Filter&nbsp;that&nbsp;sets&nbsp;the&nbsp;character&nbsp;encoding&nbsp;to&nbsp;be&nbsp;used&nbsp;in&nbsp;parsing&nbsp;the<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;incoming&nbsp;request,&nbsp;either&nbsp;unconditionally&nbsp;or&nbsp;only&nbsp;if&nbsp;the&nbsp;client&nbsp;did&nbsp;not<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;specify&nbsp;a&nbsp;character&nbsp;encoding.&nbsp;Configuration&nbsp;of&nbsp;this&nbsp;filter&nbsp;is&nbsp;based&nbsp;on<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;the&nbsp;following&nbsp;initialization&nbsp;parameters:&lt;/p&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;ul&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;li&gt;&lt;strong&gt;encoding&lt;/strong&gt;&nbsp;-&nbsp;The&nbsp;character&nbsp;encoding&nbsp;to&nbsp;be&nbsp;configured<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;for&nbsp;this&nbsp;request,&nbsp;either&nbsp;conditionally&nbsp;or&nbsp;unconditionally&nbsp;based&nbsp;on<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;the&nbsp;&lt;code&gt;ignore&lt;/code&gt;&nbsp;initialization&nbsp;parameter.&nbsp;This&nbsp;parameter<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;is&nbsp;required,&nbsp;so&nbsp;there&nbsp;is&nbsp;no&nbsp;default.&lt;/li&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;li&gt;&lt;strong&gt;ignore&lt;/strong&gt;&nbsp;-&nbsp;If&nbsp;set&nbsp;to&nbsp;"true",&nbsp;any&nbsp;character&nbsp;encoding<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;specified&nbsp;by&nbsp;the&nbsp;client&nbsp;is&nbsp;ignored,&nbsp;and&nbsp;the&nbsp;value&nbsp;returned&nbsp;by&nbsp;the<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;code&gt;selectEncoding()&lt;/code&gt;&nbsp;method&nbsp;is&nbsp;set.&nbsp;If&nbsp;set&nbsp;to&nbsp;"false,<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;code&gt;selectEncoding()&lt;/code&gt;&nbsp;is&nbsp;called&nbsp;&lt;strong&gt;only&lt;/strong&gt;&nbsp;if&nbsp;the<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;client&nbsp;has&nbsp;not&nbsp;already&nbsp;specified&nbsp;an&nbsp;encoding.&nbsp;By&nbsp;default,&nbsp;this<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;parameter&nbsp;is&nbsp;set&nbsp;to&nbsp;"true".&lt;/li&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;/ul&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;&lt;p&gt;Although&nbsp;this&nbsp;filter&nbsp;can&nbsp;be&nbsp;used&nbsp;unchanged,&nbsp;it&nbsp;is&nbsp;also&nbsp;easy&nbsp;to<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;subclass&nbsp;it&nbsp;and&nbsp;make&nbsp;the&nbsp;&lt;code&gt;selectEncoding()&lt;/code&gt;&nbsp;method&nbsp;more<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;intelligent&nbsp;about&nbsp;what&nbsp;encoding&nbsp;to&nbsp;choose,&nbsp;based&nbsp;on&nbsp;characteristics&nbsp;of<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;the&nbsp;incoming&nbsp;request&nbsp;(such&nbsp;as&nbsp;the&nbsp;values&nbsp;of&nbsp;the&nbsp;&lt;code&gt;Accept-Language&lt;/code&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;and&nbsp;&lt;code&gt;User-Agent&lt;/code&gt;&nbsp;headers,&nbsp;or&nbsp;a&nbsp;value&nbsp;stashed&nbsp;in&nbsp;the&nbsp;current<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;user's&nbsp;session.&lt;/p&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;@author&nbsp;&lt;a&nbsp;href="mailto:jwtronics@yahoo.com"&gt;John&nbsp;Wong&lt;/a&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">*&nbsp;@version&nbsp;$Id:&nbsp;SetCharacterEncodingFilter.java,v&nbsp;1.1&nbsp;2002/04/10&nbsp;13:59:27&nbsp;johnwong&nbsp;Exp&nbsp;$<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">public&nbsp;class&nbsp;SetCharacterEncodingFilter<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;implements&nbsp;Filter&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;-----------------------------------------------------&nbsp;Instance&nbsp;Variables</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;The&nbsp;default&nbsp;character&nbsp;encoding&nbsp;to&nbsp;set&nbsp;for&nbsp;requests&nbsp;that&nbsp;pass&nbsp;through<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;this&nbsp;filter.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;protected&nbsp;String&nbsp;encoding&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;The&nbsp;filter&nbsp;configuration&nbsp;object&nbsp;we&nbsp;are&nbsp;associated&nbsp;with.&nbsp;If&nbsp;this&nbsp;value<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;is&nbsp;null,&nbsp;this&nbsp;filter&nbsp;instance&nbsp;is&nbsp;not&nbsp;currently&nbsp;configured.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;protected&nbsp;FilterConfig&nbsp;filterConfig&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;Should&nbsp;a&nbsp;character&nbsp;encoding&nbsp;specified&nbsp;by&nbsp;the&nbsp;client&nbsp;be&nbsp;ignored?<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;protected&nbsp;</span><span style="color: rgb(0, 0, 255);">boolean</span><span style="color: rgb(0, 0, 0);">&nbsp;ignore&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;---------------------------------------------------------&nbsp;Public&nbsp;Methods</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;Take&nbsp;this&nbsp;filter&nbsp;out&nbsp;of&nbsp;service.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;public&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;destroy()&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.encoding&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.filterConfig&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;Select&nbsp;and&nbsp;set&nbsp;(if&nbsp;specified)&nbsp;the&nbsp;character&nbsp;encoding&nbsp;to&nbsp;be&nbsp;used&nbsp;to<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;interpret&nbsp;request&nbsp;parameters&nbsp;for&nbsp;this&nbsp;request.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@param&nbsp;request&nbsp;The&nbsp;servlet&nbsp;request&nbsp;we&nbsp;are&nbsp;processing<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@param&nbsp;result&nbsp;The&nbsp;servlet&nbsp;response&nbsp;we&nbsp;are&nbsp;creating<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@param&nbsp;chain&nbsp;The&nbsp;filter&nbsp;chain&nbsp;we&nbsp;are&nbsp;processing<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@exception&nbsp;IOException&nbsp;if&nbsp;an&nbsp;input/output&nbsp;error&nbsp;occurs<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@exception&nbsp;ServletException&nbsp;if&nbsp;a&nbsp;servlet&nbsp;error&nbsp;occurs<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;public&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;doFilter(ServletRequest&nbsp;request,&nbsp;ServletResponse&nbsp;response,<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;chain)&nbsp;throws&nbsp;IOException,&nbsp;ServletException&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Conditionally&nbsp;select&nbsp;and&nbsp;set&nbsp;the&nbsp;character&nbsp;encoding&nbsp;to&nbsp;be&nbsp;used</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(ignore&nbsp;</span><span style="color: rgb(0, 0, 0);">||</span><span style="color: rgb(0, 0, 0);">&nbsp;(request.getCharacterEncoding()&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">))&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;encoding&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;selectEncoding(request);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(encoding&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(encoding);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;Pass&nbsp;control&nbsp;on&nbsp;to&nbsp;the&nbsp;next&nbsp;filter</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;Place&nbsp;this&nbsp;filter&nbsp;into&nbsp;service.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@param&nbsp;filterConfig&nbsp;The&nbsp;filter&nbsp;configuration&nbsp;object<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;public&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;init(FilterConfig&nbsp;filterConfig)&nbsp;throws&nbsp;ServletException&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.filterConfig&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;filterConfig;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.encoding&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;filterConfig.getInitParameter(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">encoding</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;String&nbsp;value&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;filterConfig.getInitParameter(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">ignore</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(value&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ignore&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(value.equalsIgnoreCase(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">true</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">))&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ignore&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(value.equalsIgnoreCase(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">yes</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">))&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ignore&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">else</span><span style="color: rgb(0, 0, 0);">&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.ignore&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">false</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;------------------------------------------------------&nbsp;Protected&nbsp;Methods</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;Select&nbsp;an&nbsp;appropriate&nbsp;character&nbsp;encoding&nbsp;to&nbsp;be&nbsp;used,&nbsp;based&nbsp;on&nbsp;the<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;characteristics&nbsp;of&nbsp;the&nbsp;current&nbsp;request&nbsp;and/or&nbsp;filter&nbsp;initialization<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;parameters.&nbsp;If&nbsp;no&nbsp;character&nbsp;encoding&nbsp;should&nbsp;be&nbsp;set,&nbsp;return<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;&lt;code&gt;null&lt;/code&gt;.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;&lt;p&gt;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;The&nbsp;default&nbsp;implementation&nbsp;unconditionally&nbsp;returns&nbsp;the&nbsp;value&nbsp;configured<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;by&nbsp;the&nbsp;&lt;strong&gt;encoding&lt;/strong&gt;&nbsp;initialization&nbsp;parameter&nbsp;for&nbsp;this<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;filter.<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;*&nbsp;@param&nbsp;request&nbsp;The&nbsp;servlet&nbsp;request&nbsp;we&nbsp;are&nbsp;processing<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;protected&nbsp;String&nbsp;selectEncoding(ServletRequest&nbsp;request)&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.encoding);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">}&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">EOC</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div></div><br><p>web.xml 中的配置: <br></p><div style="border: 0.5pt solid windowtext; padding: 0in 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 80%;"><div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Set&nbsp;Character&nbsp;Encoding</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">filters.SetCharacterEncodingFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">encoding</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">GB2312</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">ignore</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">true</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">Set&nbsp;Character&nbsp;Encoding</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">action</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">servlet</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">action</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">servlet-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">servlet-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">org.apache.struts.action.ActionServlet</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">servlet-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">....&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div></div><p>测试通过.</p><br><font color="#333333">他的过滤器我试了有问题，这样就没有问题了<br></font><div style="border: 0.5pt solid windowtext; padding: 0in 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 80%;"><div><font color="#333333"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">EncodingFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">display-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">EncodingFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">display-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">description</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">no&nbsp;description</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">description</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">com.zhaoqi.util.EncodingFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">encoding</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">GB2312</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">EncodingFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">/*</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">url-pattern</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-mapping</span><span style="color: rgb(0, 0, 255);">&gt;</span></font></div></div><br><table style="table-layout: fixed;" cellpadding="0" cellspacing="0" width="100%"><tbody><tr><td valign="top" width="32"><br></td><td style="left: 0px; width: 100%;"><table style="table-layout: fixed;" cellpadding="0" cellspacing="0" height="70" width="100%"><tbody><tr valign="top"><td style="left: 0px; width: 100%;"><font color="#555555">看
看下面这短代码，由于struts的每个请求都要由actionservlet处理，所以我自己写了一个actionservlet的子类，在这个类中我
调用request.setCharacterEncoding("GB2312");方法，然后在所有的jsp页面中的字符显示为GB2312，所有的
问题都解决了，哈哈。大家试试啊</font></td></tr></tbody></table>&nbsp; <div><span style="color: rgb(0, 0, 0);"><div style="border: 0.5pt solid windowtext; padding: 0in 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 80%;"><div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 0);">import&nbsp;org.apache.struts.action.ActionServlet;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">import&nbsp;javax.servlet.http.</span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">public&nbsp;class&nbsp;MainActionServlet&nbsp;extends&nbsp;ActionServlet{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;public&nbsp;MainActionServlet()&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;protected&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;process(HttpServletRequest&nbsp;request,&nbsp;HttpServletResponse&nbsp;response)&nbsp;throws&nbsp;java.io.IOException,&nbsp;javax.servlet.ServletException&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">/*</span><span style="color: rgb(0, 128, 0);">*@todo&nbsp;Override&nbsp;this&nbsp;org.apache.struts.action.ActionServlet&nbsp;method</span><span style="color: rgb(0, 128, 0);">*/</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">GB2312</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;super.process(request,&nbsp;response);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;}</span></div></div></span></div></td></tr></tbody></table><img src="http://blog.codelphi.com/liukun966123/aggbug/26429.aspx" height="1" width="1"><img src ="http://www.cppblog.com/Khan/aggbug/2652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2004-10-22 21:52 <a href="http://www.cppblog.com/Khan/archive/2004/10/22/2652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet和JSP过滤器Filter </title><link>http://www.cppblog.com/Khan/archive/2004/10/22/2653.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 22 Oct 2004 13:45:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2004/10/22/2653.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2653.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2004/10/22/2653.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2653.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2653.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: servlet&nbsp;API的2.3版本中最重要的一个新功能就是能够为servlet和JSP页面定义过滤器。过滤器提供了某些早期服务器所支持的非标准“servlet链接”的一种功能强大且标准的替代品。过滤器是一个程序，它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet或JSP页面上，并且可以检查进入这些资源的请求信息。在这之后，过滤器可以作如下的选...&nbsp;&nbsp;<a href='http://www.cppblog.com/Khan/archive/2004/10/22/2653.html'>阅读全文</a><img src ="http://www.cppblog.com/Khan/aggbug/2653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2004-10-22 21:45 <a href="http://www.cppblog.com/Khan/archive/2004/10/22/2653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于基于jsp+resin的移动wap的中文参数传递问题? </title><link>http://www.cppblog.com/Khan/archive/2004/10/22/2654.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 22 Oct 2004 13:43:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2004/10/22/2654.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2654.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2004/10/22/2654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2654.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2654.html</trackback:ping><description><![CDATA[
		  out.print(outWML.outHref(DefaultURL+"free.jsp?name=假使我漂亮-jade关心妍", "假使我漂亮(jade关心妍)"));<br>这句,我将一个中文参数传递到free.jsp页面<br><br><br>free.jsp<br><div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 80%;"><div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);">response.setContentType(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">text/vnd.wap.wml;charset=UTF-8</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);">@&nbsp;page&nbsp;import</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Comm.outWML</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);">@&nbsp;page&nbsp;import</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Comm.GB2U</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&lt;?</span><span style="color: rgb(0, 0, 0);">xml&nbsp;version</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">1.0</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">?&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&lt;!</span><span style="color: rgb(0, 0, 0);">DOCTYPE&nbsp;wml&nbsp;PUBLIC&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">-//WAPFORUM//DTD&nbsp;WML&nbsp;1.1//EN</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">http://www.wapforum.org/DTD/wml_1.1.xml</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">wml</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">head</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">meta&nbsp;http</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">equiv</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Cache-Control</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;content</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">max-age=0</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;forua</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">true</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">head</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">card&nbsp;id</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">main</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;title</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;%=Comm.GB2U.gb2u(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">劲歌金曲爬行榜</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">)%&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);">@&nbsp;include&nbsp;file</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mobinfo.inc</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);">@&nbsp;include&nbsp;file</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">module.inc</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;%</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;para&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;String(request.getParameter(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">name</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).getBytes(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">iso8859_1</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.print(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;p&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">para</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&lt;/p&gt;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);//输出获得的参数,都为乱码<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.print(outWML.outHref(DefaultURL</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">mring.jsp</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">劲歌金曲爬行榜首页</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out.print(monternet);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">%&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">card</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&lt;/</span><span style="color: rgb(0, 0, 0);">wml</span><span style="color: rgb(0, 0, 0);">&gt;</span></div></div><br><!--include file="mobinfo.inc"--><!--include file="module.inc"--><!--tring para = new String(request.getParameter("name").getBytes("iso8859_1")); out.print("<p>"+para+"</p>"); out.print(outWML.outHref(DefaultURL+"mring.jsp", "劲歌金曲爬行榜首页")); out.print(monternet);-->出来的结果怎么都是乱码<br><!--include file="mobinfo.inc"--><!--include file="module.inc"--><!--tring para = new String(request.getParameter("name").getBytes("iso8859_1")); out.print("<p>"+para+"</p>"); out.print(outWML.outHref(DefaultURL+"mring.jsp", "劲歌金曲爬行榜首页")); out.print(monternet);--><br><p>是关于java的,java的默认参数传递方式是utf8码,今天终于解决了 <br>不是楼上说的问题 <br>在发送url请求的页面和接收url请求的页面做如下设置 <br>&lt;%response.setContentType("text/vnd.wap.wml;charset=UTF-8");%&gt;//utf8 <br>&lt;%request.setCharacterEncoding("UTF-8");%&gt;//参数处理方式utf8 <br>&lt;%@ page pageEncoding="ISO-8859-1"%&gt;//页面字符处理方式 iso-8859-1 </p><div class="postfoot">2004-07-06 11:33 | khan</div><div class="postfoot">&nbsp;</div><div class="postfoot">o?按照ISO-8859-1传递就行了？我怎么记得也会出问题呢？过网关的时候也会出点莫名其妙的事情。 <br><br>我是都urlencode了，然后替换一下%，然后程序再解码。 <div class="postfoot">2004-07-08 09:05 | <a id="Comments1_CommentList__ctl2_NameLink" href="http://dev.codelphi.com/virushuo" target="_blank"><font color="#223355">virushuo</font></a> </div><div class="post"><h2>&nbsp;</h2>呵呵,普通的传递用urlencode.class,解码用urldecode.class <br>表单的传递用iso-8859-1就可以了,呵呵 <br><br>以上是指移动的wap业务,所有汉字编码必须是utf8的情况下 </div></div><img src ="http://www.cppblog.com/Khan/aggbug/2654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2004-10-22 21:43 <a href="http://www.cppblog.com/Khan/archive/2004/10/22/2654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 的Statement 对象</title><link>http://www.cppblog.com/Khan/archive/2004/10/22/2655.html</link><dc:creator>Khan's Notebook</dc:creator><author>Khan's Notebook</author><pubDate>Fri, 22 Oct 2004 13:41:00 GMT</pubDate><guid>http://www.cppblog.com/Khan/archive/2004/10/22/2655.html</guid><wfw:comment>http://www.cppblog.com/Khan/comments/2655.html</wfw:comment><comments>http://www.cppblog.com/Khan/archive/2004/10/22/2655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Khan/comments/commentRss/2655.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Khan/services/trackbacks/2655.html</trackback:ping><description><![CDATA[<strong><font style="background-color: rgb(255, 255, 102);">Statement<br></font></strong>本概述是从《JDBCTM Database Access from <a name="1" _base_href="http://www.xuejava.net/doc/jdbc/8.html"></a><b style="color: black; background-color: rgb(160, 255, 255);">Java</b>TM: A Tutorial and Annotated Reference 》这本书中摘引来的。<b style="color: black; background-color: rgb(160, 255, 255);">Java</b>Soft 目前正在准备这本书。这是一本教程，同时也是 JDBC 的重要参考手册，它将作为 <b style="color: black; background-color: rgb(160, 255, 255);">Java</b> 系列的组成部份在 1997 年春季由 Addison-Wesley 出版公司出版。 <br><br><br>4.1 概述<br><b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象用于将 SQL 语句发送到数据库中。实际上有三种 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象，它们都作为在给定连接上执行 SQL 语句的包容器：<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>、Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>（它从 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 继承而来）和 Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>（它从 Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 继承而来）。它们都专用于发送特定类型的 SQL 语句： <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象用于执行不带参数的简单 SQL 语句；Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象用于执行带或不带 IN 参数的预编译 SQL 语句；Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象用于执行对数据库已存储过程的调用。<br><br><b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 接口提供了执行语句和获取结果的基本方法。Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 接口添加了处理 IN 参数的方法；而 Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 添加了处理 OUT 参数的方法。<br><br><br>4.1.1 创建 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象<br>建立了到特定数据库的连接之后，就可用该连接发送 SQL 语句。<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象用 Connection 的方法 create<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 创建，如下列代码段中所示： <br><br>Connection con = DriverManager.getConnection(url, "sunny", "");<br><b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> stmt = con.create<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>();<br><br>为了执行 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象，被发送到数据库的 SQL 语句将被作为参数提供给 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 的方法： <br><br>ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");<br><br>4.1.2 使用 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象执行语句<br><b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 接口提供了三种执行 SQL 语句的方法：executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。<br><br>方法 executeQuery 用于产生单个结果集的语句，例如 SELECT 语句。<br><br>方
法 executeUpdate 用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL（数据定义语言）语句，例如
CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE
语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数，指示受影响的行数（即更新计数）。对于
CREATE TABLE 或 DROP TABLE 等不操作行的语句，executeUpdate 的返回值总为零。<br><br>方法 execute 用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能，所以本概述后面将在单独一节中对其进行介绍。<br><br>执行语句的所有方法都将关闭所调用的 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象的当前打开结果集（如果存在）。这意味着在重新执行 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象之前，需要完成对当前 ResultSet 对象的处理。<br><br>应注意，继承了 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 接口中所有方法的 Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 接口都有自己的 executeQuery、executeUpdate 和 execute 方法。<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象本身不包含 SQL 语句，因而必须给 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>.execute 方法提供 SQL 语句作为参数。Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象并不将 SQL 语句作为参数提供给这些方法，因为它们已经包含预编译 SQL 语句。Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象继承这些方法的 Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 形式。对于这些方法的 Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 或 Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 版本，使用查询参数将抛出 SQLException。<br><br><br>4.1.3 语句完成<br>当
连接处于自动提交模式时，其中所执行的语句在完成时将自动提交或还原。语句在已执行且所有结果返回时，即认为已完成。对于返回一个结果集的
executeQuery 方法，在检索完 ResultSet 对象的所有行时该语句完成。对于方法
executeUpdate，当它执行时语句即完成。但在少数调用方法 execute 的情况中，在检索所有结果集或它生成的更新计数之后语句才完成。<br><br>有些 DBMS 将已存储过程中的每条语句视为独立的语句；而另外一些则将整个过程视为一个复合语句。在启用自动提交时，这种差别就变得非常重要，因为它影响什么时候调用 commit 方法。在前一种情况中，每条语句单独提交；在后一种情况中，所有语句同时提交。<br><br><br>4.1.4 关闭 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象<br><b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象将由 <b style="color: black; background-color: rgb(160, 255, 255);">Java</b> 垃圾收集程序自动关闭。而作为一种好的编程风格，应在不需要 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象时显式地关闭它们。这将立即释放 DBMS 资源，有助于避免潜在的内存问题。<br><br><br>4.1.5 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象中的 SQL 转义语法 <br><b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 可包含使用 SQL 转义语法的 SQL 语句。转义语法告诉驱动程序其中的代码应该以不同方式处理。驱动程序将扫描任何转义语法，并将它转换成特定数据库可理解的代码。这使得转义语法与 DBMS 无关，并允许程序员使用在没有转义语法时不可用的功能。<br><br>转义子句由花括号和关键字界定： <br><br>{keyword . . . parameters . . . }<br><br>该关键字指示转义子句的类型，如下所示。<br><br><br>escape 表示 LIKE 转义字符 <br><br><br>字符“%”和“_”类似于 SQL LIKE 子句中的通配符（“%”匹配零个或多个字符，而“_”则匹配一个字符）。为了正确解释它们，应在其前面加上反斜杠（“\”），它是字符串中的特殊转义字符。在查询末尾包括如下语法即可指定用作转义字符的字符： <br><br>{escape 'escape-character'}<br><br><br>例如，下列查询使用反斜杠字符作为转义字符，查找以下划线开头的标识符名： <br><br>stmt.executeQuery("SELECT name FROM Identifiers<br>WHERE Id LIKE `\_%' {escape `\'};<br><br><br>fn 表示标量函数<br><br><br>几乎所有 DBMS 都具有标量值的数值、字符串、时间、日期、系统和转换函数。要使用这些函数，可使用如下转义语法：关键字 fn 后跟所需的函数名及其参数。例如，下列代码调用函数 concat 将两个参数连接在一起： <br><br>{fn concat("Hot", "<b style="color: black; background-color: rgb(160, 255, 255);">Java</b>")};<br><br><br>可用下列语法获得当前数据库用户名： <br><br>{fn user()};<br><br><br>标
量函数可能由语法稍有不同的 DBMS 支持，而它们可能不被所有驱动程序支持。各种 DatabaseMetaData
方法将列出所支持的函数。例如，方法 getNumericFunctions 返回用逗号分隔的数值函数列表，而方法
getStringFunctions 将返回字符串函数，等等。<br><br>驱动程序将转义函数调用映射为相应的语法，或直接实现该函数。<br><br><br>d、t 和 ts 表示日期和时间文字<br><br><br>DBMS 用于日期、时间和时间标记文字的语法各不相同。JDBC 使用转义子句支持这些文字的语法的 ISO 标准格式。驱动程序必须将转义子句转换成 DBMS 表示。<br><br>例如，可用下列语法在 JDBC SQL 语句中指定日期： <br><br>{d `yyyy-mm-dd'}<br><br><br>在该语法中，yyyy 为年代，mm 为月份，而 dd 则为日期。驱动程序将用等价的特定于 DBMS 的表示替换这个转义子句。例如，如果 '28- FEB-99' 符合基本数据库的格式，则驱动程序将用它替换 {d 1999-02-28}。<br><br>对于 TIME 和 TIMESTAMP 也有类似的转义子句： <br><br>{t `hh:mm:ss'}<br>{ts `yyyy-mm-dd hh:mm:ss.f . . .'}<br><br><br>TIMESTAMP 中的小数点后的秒（.f . . .）部分可忽略。<br><br><br>call 或 ? = call 表示已存储过程<br><br><br><br>如果数据库支持已存储过程，则可从 JDBC 中调用它们，语法为： <br><br>{call procedure_name[(?, ?, . . .)]}<br><br><br>或（其中过程返回结果参数）： <br><br>{? = call procedure_name[(?, ?, . . .)]}<br><br><br>方括号指示其中的内容是可选的。它们不是语法的必要部分。<br><br>输入参数可以为文字或参数。有关详细信息，参见 JDBC 指南中第 7 节，“Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>”。<br><br>可通过调用方法 DatabaseMetaData.supportsStoredProcedures 检查数据库是否支持已存储过程。<br><br><br><br>oj 表示外部连接<br><br><br><br>外部连接的语法为 <br><br>{oj outer-join}<br><br><br>其中 outer-join 形式为 <br><br>table LEFT OUTER JOIN {table / outer-join} ON search-condition<br><br><br>外
部连接属于高级功能。有关它们的解释可参见 SQL 语法。JDBC 提供了三种 DatabaseMetaData
方法用于确定驱动程序支持哪些外部连接类型：supportsOuterJoins、supportsFullOuterJoins 和
supportsLimitedOuterJoins。<br><br><br>方法 <b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>.setEscapeProcessing 可打开或关闭转义处理；缺省状态为打开。当性能极为重要时，程序员可能想关闭它以减少处理时间。但通常它将出于打开状态。应注意： setEscapeProcessing 不适用于 Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象，因为在调用该语句前它就可能已被发送到数据库。有关预编译的信息，参见 Prepared<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>。<br><br><br>4.1.6 使用方法 execute<br>execute
方法应该仅在语句能返回多个 ResultSet 对象、多个更新计数或 ResultSet
对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL
字符串（即应用程序程序员在编译时未知）时，有可能出现多个结果的情况，尽管这种情况很少见。例如，用户可能执行一个已存储过程（使用 Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b> 对象 - 参见第 135 页的 Callable<b style="color: black; background-color: rgb(255, 255, 102);">Statement</b>），并且该已存储过程可执行更新，然后执行选择，再进行更新，再进行选择，等等。通常使用已存储过程的人应知道它所返回的内容。<br><br>因
为方法 execute 处理非常规情况，所以获取其结果需要一些特殊处理并不足为怪。例如，假定已知某个过程返回两个结果集，则在使用方法
execute 执行该过程后，必须调用方法 getResultSet 获得第一个结果集，然后调用适当的 getXXX
方法获取其中的值。要获得第二个结果集，需要先调用 getMoreResults 方法，然后再调用 getResultSet
方法。如果已知某个过程返回两个更新计数，则首先调用方法 getUpdateCount，然后调用 getMoreResults，并再次调用
getUpdateCount。<br><br>对于不知道返回内容，则情况更为复杂。如果结果是 ResultSet 对象，则方法 execute 返回 true；如果结果是 <b style="color: black; background-color: rgb(160, 255, 255);">Java</b>
int，则返回 false。如果返回 int，则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute
之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个
ResultSet 对象中第一个对象；或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。<br><br>当
SQL 语句的结果不是结果集时，则方法 getResultSet 将返回
null。这可能意味着结果是一个更新计数或没有其它结果。在这种情况下，判断 null 真正含义的唯一方法是调用方法
getUpdateCount，它将返回一个整数。这个整数为调用语句所影响的行数；如果为 -1 则表示结果是结果集或没有结果。如果方法
getResultSet 已返回 null（表示结果不是 ResultSet 对象），则返回值 -1
表示没有其它结果。也就是说，当下列条件为真时表示没有结果（或没有其它结果）： <br><br>((stmt.getResultSet() == null) &amp;&amp; (stmt.getUpdateCount() == -1))<br><br>如
果已经调用方法 getResultSet 并处理了它返回的 ResultSet 对象，则有必要调用方法 getMoreResults
以确定是否有其它结果集或更新计数。如果 getMoreResults 返回 true，则需要再次调用 getResultSet
来检索下一个结果集。如上所述，如果 getResultSet 返回 null，则需要调用 getUpdateCount 来检查 null
是表示结果为更新计数还是表示没有其它结果。<br><br>当 getMoreResults 返回 false 时，它表示该 SQL 语句返回一个更新计数或没有其它结果。因此需要调用方法 getUpdateCount 来检查它是哪一种情况。在这种情况下，当下列条件为真时表示没有其它结果： <br><br>((stmt.getMoreResults() == false) &amp;&amp; (stmt.getUpdateCount() == -1))<br><br>下面的代码演示了一种方法用来确认已访问调用方法 execute 所产生的全部结果集和更新计数： <br><br><div style="border: 0.5pt solid windowtext; padding: 4px 5.4pt; background: rgb(230, 230, 230) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 80%;"><div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><span style="color: rgb(0, 0, 0);">stmt.execute(queryStringWithUnknownResults);&nbsp;</span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">&nbsp;(</span><span style="color: rgb(0, 0, 255);">true</span><span style="color: rgb(0, 0, 0);">)&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;rowCount&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;stmt.getUpdateCount();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(rowCount&nbsp;</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">)&nbsp;{&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;它是更新计数</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">Rows&nbsp;changed&nbsp;=&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">&nbsp;count);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;stmt.getMoreResults();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(rowCount&nbsp;</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">)&nbsp;{&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;DDL&nbsp;命令或&nbsp;0&nbsp;个更新</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">&nbsp;No&nbsp;rows&nbsp;changed&nbsp;or&nbsp;statement&nbsp;was&nbsp;DDL<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;command</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.getMoreResults();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;执行到这里，证明有一个结果集</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">//</span><span style="color: rgb(0, 128, 0);">&nbsp;或没有其它结果</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;stmt.getResultSet;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">&nbsp;(rs&nbsp;</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)&nbsp;{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif"></span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">&nbsp;(rs.next())&nbsp;{&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;使用元数据获得关于结果集列的信息</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif">&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">&nbsp;处理结果</span><span style="color: rgb(0, 128, 0);"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.getMoreResults();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">continue</span><span style="color: rgb(0, 0, 0);">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">break</span><span style="color: rgb(0, 0, 0);">;&nbsp;</span></div></div><br><img src ="http://www.cppblog.com/Khan/aggbug/2655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Khan/" target="_blank">Khan's Notebook</a> 2004-10-22 21:41 <a href="http://www.cppblog.com/Khan/archive/2004/10/22/2655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>