﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Vincent</title><link>http://www.blogjava.net/Vincent-chenxj/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 12 May 2026 10:25:20 GMT</lastBuildDate><pubDate>Tue, 12 May 2026 10:25:20 GMT</pubDate><ttl>60</ttl><item><title>C# Sample code to talk to a printer using SNMP to get its status. </title><link>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283093.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 18 Jun 2009 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283093.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/283093.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283093.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/283093.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/283093.html</trackback:ping><description><![CDATA[<div class="body">
<p>The following code will allow you to talk to a printer (running on a specific IP Address) to query its current status. </p>
<p>OLEPRNLib is a COM object that appears to be installed on XP and greater machines. </p>
<p>On my machine I made a reference on the COM tab of the Add Reference dialog to &#8220;<strong>oleprn 1.0 Type Library</strong>&#8220; which lived in &#8220;<strong>c:\Windows\System32\oleprn.dll</strong>&#8220; </p>
<p>
<p><span>
<pre>using System<font color="blue" size="+1"><strong>;</strong></font>
using OLEPRNLib<font color="blue" size="+1"><strong>;</strong></font>
namespace PrinterStatus
<font color="blue" size="+1"><strong>{</strong></font>
<font color="green"><em>/// <summary>
</em></font> <font color="green"><em>/// Summary description for Class1.
</em></font> <font color="green"><em>/// </summary>
</em></font> <font color="red"><strong>class</strong></font> Class1
<font color="blue" size="+1"><strong>{</strong></font>
<font color="green"><em>/// <summary>
</em></font>  <font color="green"><em>/// The main entry point for the application.
</em></font>  <font color="green"><em>/// </summary>
</em></font>  <font color="blue" size="+1"><strong>[</strong></font>STAThread<font color="blue" size="+1"><strong>]</strong></font>
<font color="red"><strong>static</strong></font> <font color="red"><strong>void</strong></font> Main<font color="blue" size="+1"><strong>(</strong></font>string<font color="blue" size="+1"><strong>[</strong></font><font color="blue" size="+1"><strong>]</strong></font> args<font color="blue" size="+1"><strong>)</strong></font>
<font color="blue" size="+1"><strong>{</strong></font>
string<font color="blue" size="+1"><strong>[</strong></font><font color="blue" size="+1"><strong>]</strong></font> ErrorMessageText <font color="blue" size="+1">=</font> <font color="red"><strong>new</strong></font> string<font color="blue" size="+1"><strong>[</strong></font><font color="brown">8</font><font color="blue" size="+1"><strong>]</strong></font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">0</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"service requested"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">1</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"offline"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">2</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"paper jammed"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">3</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"door open"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">4</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"no toner"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">5</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"toner low"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">6</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"out of paper"</font><font color="blue" size="+1"><strong>;</strong></font>
ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font><font color="brown">7</font><font color="blue" size="+1"><strong>]</strong></font> <font color="blue" size="+1">=</font> <font color="purple">"low paper"</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>int</strong></font> DeviceID <font color="blue" size="+1">=</font> <font color="brown">1</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>int</strong></font> Retries <font color="blue" size="+1">=</font> <font color="brown">1</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>int</strong></font> TimeoutInMS <font color="blue" size="+1">=</font> <font color="brown">2000</font><font color="blue" size="+1"><strong>;</strong></font>
string CommunityString <font color="blue" size="+1">=</font> <font color="purple">"public"</font><font color="blue" size="+1"><strong>;</strong></font>
string IPAddressOfPrinter <font color="blue" size="+1">=</font> <font color="purple">"10.3.0.93"</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="green"><em>// Create instance of COM object
</em></font>   OLEPRNLib<font color="blue" size="+1"><strong>.</strong></font>SNMP snmp <font color="blue" size="+1">=</font> <font color="red"><strong>new</strong></font> OLEPRNLib<font color="blue" size="+1"><strong>.</strong></font>SNMP<font color="blue" size="+1"><strong>(</strong></font><font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="green"><em>// Open the SNMP connect to the printer
</em></font>   snmp<font color="blue" size="+1"><strong>.</strong></font>Open<font color="blue" size="+1"><strong>(</strong></font>IPAddressOfPrinter<font color="blue" size="+1"><strong>,</strong></font> CommunityString<font color="blue" size="+1"><strong>,</strong></font> Retries<font color="blue" size="+1"><strong>,</strong></font> TimeoutInMS<font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="green"><em>// The actual Warning/Error bits
</em></font>   uint WarningErrorBits <font color="blue" size="+1">=</font> snmp<font color="blue" size="+1"><strong>.</strong></font>GetAsByte<font color="blue" size="+1"><strong>(</strong></font>String<font color="blue" size="+1"><strong>.</strong></font>Format<font color="blue" size="+1"><strong>(</strong></font><font color="purple">"25.3.5.1.2.{0}"</font><font color="blue" size="+1"><strong>,</strong></font> DeviceID<font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="green"><em>// The actual Status
</em></font>   uint StatusResult <font color="blue" size="+1">=</font> snmp<font color="blue" size="+1"><strong>.</strong></font>GetAsByte<font color="blue" size="+1"><strong>(</strong></font>String<font color="blue" size="+1"><strong>.</strong></font>Format<font color="blue" size="+1"><strong>(</strong></font><font color="purple">"25.3.2.1.5.{0}"</font><font color="blue" size="+1"><strong>,</strong></font> DeviceID<font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="green"><em>// uint Result2 = snmp.GetAsByte(String.Format("25.3.5.1.1.{0}", DeviceID));
</em></font>
string Result1Str <font color="blue" size="+1">=</font> <font color="purple">""</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>switch</strong></font> <font color="blue" size="+1"><strong>(</strong></font>StatusResult<font color="blue" size="+1"><strong>)</strong></font>
<font color="blue" size="+1"><strong>{</strong></font>
<font color="red"><strong>case</strong></font> <font color="brown">2</font> <font color="blue" size="+1">:</font> Result1Str <font color="blue" size="+1">=</font> <font color="purple">"OK"</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>break</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>case</strong></font> <font color="brown">3</font> <font color="blue" size="+1">:</font> Result1Str <font color="blue" size="+1">=</font> <font color="purple">"Warning: "</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>break</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>case</strong></font> <font color="brown">4</font> <font color="blue" size="+1">:</font> Result1Str <font color="blue" size="+1">=</font> <font color="purple">"Being Tested: "</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>break</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>case</strong></font> <font color="brown">5</font> <font color="blue" size="+1">:</font> Result1Str <font color="blue" size="+1">=</font> <font color="purple">"Unavailable for any use: "</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>break</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>default</strong></font> <font color="blue" size="+1">:</font> Result1Str <font color="blue" size="+1">=</font> <font color="purple">"Unknown Status Code : "</font><font color="blue" size="+1">+</font>StatusResult<font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>break</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
string Str <font color="blue" size="+1">=</font> <font color="purple">""</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>if</strong></font> <font color="blue" size="+1"><strong>(</strong></font><font color="blue" size="+1"><strong>(</strong></font>StatusResult <font color="blue" size="+1">=</font><font color="blue" size="+1">=</font> <font color="brown">3</font> <font color="blue" size="+1"><font color="blue" size="+1">|</font><font color="blue" size="+1">|</font></font> StatusResult <font color="blue" size="+1">=</font><font color="blue" size="+1">=</font> <font color="brown">5</font><font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>)</strong></font>
<font color="blue" size="+1"><strong>{</strong></font>
<font color="red"><strong>int</strong></font> Mask <font color="blue" size="+1">=</font> <font color="brown">1</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>int</strong></font> NumMsg <font color="blue" size="+1">=</font> <font color="brown">0</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="red"><strong>for</strong></font> <font color="blue" size="+1"><strong>(</strong></font><font color="red"><strong>int</strong></font> i<font color="blue" size="+1">=</font><font color="brown">0</font><font color="blue" size="+1"><strong>;</strong></font> i<font color="blue" size="+1">&lt;</font> <font color="brown">8</font><font color="blue" size="+1"><strong>;</strong></font> i<font color="blue" size="+1"><font color="blue" size="+1">+</font><font color="blue" size="+1">+</font></font><font color="blue" size="+1"><strong>)</strong></font>
<font color="blue" size="+1"><strong>{</strong></font>
<font color="red"><strong>if</strong></font> <font color="blue" size="+1"><strong>(</strong></font><font color="blue" size="+1"><strong>(</strong></font>WarningErrorBits <font color="blue" size="+1">&amp;</font> Mask<font color="blue" size="+1"><strong>)</strong></font> <font color="blue" size="+1">=</font><font color="blue" size="+1">=</font> Mask<font color="blue" size="+1"><strong>)</strong></font>
<font color="blue" size="+1"><strong>{</strong></font>
<font color="red"><strong>if</strong></font> <font color="blue" size="+1"><strong>(</strong></font>Str<font color="blue" size="+1"><strong>.</strong></font>Length <font color="blue" size="+1">&gt;</font> <font color="brown">0</font><font color="blue" size="+1"><strong>)</strong></font>
Str <font color="blue" size="+1">+</font><font color="blue" size="+1">=</font> <font color="purple">", "</font><font color="blue" size="+1"><strong>;</strong></font>
Str <font color="blue" size="+1">+</font><font color="blue" size="+1">=</font> ErrorMessageText<font color="blue" size="+1"><strong>[</strong></font>i<font color="blue" size="+1"><strong>]</strong></font><font color="blue" size="+1"><strong>;</strong></font>
NumMsg <font color="blue" size="+1">=</font> NumMsg <font color="blue" size="+1">+</font> <font color="brown">1</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
Mask <font color="blue" size="+1">=</font> Mask <font color="blue" size="+1">*</font> <font color="brown">2</font><font color="blue" size="+1"><strong>;</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
Console<font color="blue" size="+1"><strong>.</strong></font>WriteLine<font color="blue" size="+1"><strong>(</strong></font>Result1Str <font color="blue" size="+1">+</font> Str<font color="blue" size="+1"><strong>)</strong></font><font color="blue" size="+1"><strong>;</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
<font color="blue" size="+1"><strong>}</strong></font>
</pre>
</span></div>
<div class="info">posted on Monday, August 08, 2005 8:13 PM | Filed Under [ <a id="viewpost_ascx_Categories_CatList_ctl01_Link" title="" href="http://blog.crowe.co.nz/category/11.aspx">c#</a> ] </div>
<div class="trackback">
<link href="http://blog.crowe.co.nz/Services/Pingback.aspx" rel="pingback" /></link>
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description rdf:about="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx" dc:identifier="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx" dc:title="C# Sample code to talk to a printer using SNMP to get its status." trackback:ping="http://blog.crowe.co.nz/services/trackbacks/182.aspx"  />
</rdf:RDF>
--></div>
<span id="apnlCommentsWrapper$RBS_Holder"><span id="apnlCommentsWrapper" ajaxcall="async"><a title="feedback anchor" name="feedback"></a>
<div class="post">
<div class="title">
<h2>Comments</h2>
</div>
<br />
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#1102">#</a>&nbsp;<a name="1102"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl01_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=d923702e74a864ed52903153d57f0c94&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl01_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl01$EditLink','')"></a><br />
<div class="content">Hello.<br />
I have been talked to a print by this code.<br />
But I couldn't talk to Zebra Barcode Printer ( 140 Xi III Plus Model ).<br />
<br />
I catched Ready Status and Out of Paper Error, but another status, for example, Printing(Running) and OffLine(Pause) status.<br />
<br />
How can I know these status? </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl01_NameLink" title="Park Jung Sup">Park Jung Sup</a> on 6/20/2007 4:25 PM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#1362">#</a>&nbsp;<a name="1362"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl02_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=ee97a477270913c3ab77ea0e3da19629&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl02_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl02$EditLink','')"></a><br />
<div class="content">Can you explain me what do "25.3.5.1.2.{0}" mean and what do "25.3.5.1.5.{0}"<br />
<br />
is there any other code like this. if so can me provide the link so that i can know more about SNMP and try to handle/get status information the devices from remote location </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl02_NameLink" title="theertendra">theertendra</a> on 8/29/2007 11:08 PM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#1363">#</a>&nbsp;<a name="1363"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<a id="Comments_ascx_CommentList_ctl03_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl03$EditLink','')"></a><br />
<div class="content">The codes that you see are called an OID and basically companies can obtain a private OID. see http://www.alvestrand.no/objectid/<br />
<br />
There are common OID SNMP identifiers and the ones I was using in the article<br />
<br />
The full OID for hrPrinterDetectedErrorState<br />
<br />
.iso.org.dod.internet.mgmt.mib-2.host.hrDevice.hrPrinterTable.hrPrinterEntry.hrPrinterDetectedErrorState<br />
<br />
or simply .1.3.6.1.2.1.25.3.5.1.2 <br />
<br />
This object represents any error conditions detected by the printer. The error conditions are encoded as bits in an octet string, with the following<br />
<br />
definitions:<br />
Condition Bit #<br />
lowPaper 0<br />
noPaper 1<br />
lowToner 2<br />
noToner 3<br />
doorOpen 4<br />
jammed 5<br />
offline 6<br />
serviceRequested 7<br />
inputTrayMissing 8<br />
outputTrayMissing 9<br />
markerSupplyMissing 10<br />
outputNearFull 11<br />
outputFull 12<br />
inputTrayEmpty 13<br />
overduePreventMaint 14<br />
<br />
Bits are numbered starting with the most significant bit of the first byte being bit 0, the least significant bit of the first byte being bit 7, the<br />
most significant bit of the second byte being bit 8, and so on. A one bit encodes that the condition was detected, while a zero bit encodes that the condition was not detected.<br />
<br />
This object is useful for alerting an operator to specific warning or error conditions that may occur, especially those requiring human intervention.<br />
<br />
The best way to see what is around is to look at a MIB Browser<br />
http://www.ireasoning.com/mibbrowser.shtml<br />
<br />
If you download the tool above there is a free version and you would then load the Printer-MIB.MIB to get information like above. </div>
<span class="author">Posted by <a class="author" id="Comments_ascx_CommentList_ctl03_NameLink" title="Chris Crowe">Chris Crowe</a> on 8/30/2007 4:44 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#226414">#</a>&nbsp;<a name="226414"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl04_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=4f7f830a34167ea28f55882a08fbb71a&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl04_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl04$EditLink','')"></a><br />
<div class="content">My SNMP program is the simple program and write in the C# language. But I faced the problem that I need to type the IP address for my slave before I can get the MIB of my slave, how I can detect my slave's IP address directly without type the IP address? Can you give me some guidelines? Furthermore, I need some coding that write in C# that can show the status for my slaves, such as my slave is on or off. I hope that you can give me some guidelines. Thanks. </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl04_NameLink" title="jelly ">jelly </a>on 1/12/2008 4:43 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#576638">#</a>&nbsp;<a name="576638"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<a id="Comments_ascx_CommentList_ctl05_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl05$EditLink','')"></a><br />
<div class="content">Hi All,<br />
<br />
Can anybody can guide me how can i get all the printer names which are all attached in a Network ? </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl05_NameLink" title="SEN">SEN</a> on 5/2/2008 6:46 PM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577008">#</a>&nbsp;<a name="577008"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl06_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=3e27b95a0a6eee223e2006d2526e4c3e&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl06_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl06$EditLink','')"></a><br />
<div class="content">nice peace of code, thanks for sharing. unfortunately oleprn.dll isn't documented anywhere...but nevertheless i think i can use it for simple snmp queries.<br />
<br />
seems to me as if you forgot to<br />
snmp.close();<br />
after querying. </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl06_NameLink" title="andre">andre</a> on 7/3/2008 11:50 PM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577072">#</a>&nbsp;<a name="577072"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl07_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=c9b836a70990f48d239df1d8df21a7d3&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl07_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl07$EditLink','')"></a><br />
<div class="content">hi ,<br />
I need to know whether the printer(dymo label printer) status active or not which was installed on the network (192.168.1.18\dymolabel shared) from the other machine.<br />
the above example doesent work for me as i cant get the OID for the dymo label printer.<br />
Can any one help me how to do the above requirement please </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl07_NameLink" title="http://www.dynamicsexchange.com/" href="http://www.dynamicsexchange.com/">srinivas</a> on 8/8/2008 2:47 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577193">#</a>&nbsp;<a name="577193"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl08_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=688bc7766c70f10308ee3636ad13bc4e&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl08_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl08$EditLink','')"></a><br />
<div class="content">after snmp.open at the following code<br />
uint WarningErrorBits = snmp.GetAsByte(String.Format("25.3.5.1.2.{0}", DeviceID));<br />
<br />
I am getting error "HRESULT E_FAIL has returned from a call to a COM component"<br />
Can any one help me why I am getting the error!!<br />
<br />
</div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl08_NameLink" title="Ramesh">Ramesh</a> on 9/4/2008 12:19 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577244">#</a>&nbsp;<a name="577244"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl09_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=415628c6a88d28ee4622e680ac4ecbc2&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl09_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl09$EditLink','')"></a><br />
<div class="content">&gt;&gt; I am getting error "HRESULT E_FAIL has returned from a call to a COM component"<br />
<br />
I just got this one too and when pinged it the printer was down.<br />
Make sure the printer is up.<br />
</div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl09_NameLink" title="Victor">Victor</a> on 10/2/2008 8:14 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: java Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577491">#</a>&nbsp;<a name="577491"></a>re: java Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl10_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=3e717518edec9055bc0f2592b1ecb518&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl10_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl10$EditLink','')"></a><br />
<div class="content">i am going to develop simulator printer,so i need to develop printer mibs for virtual printer to operate them by snmp operation like set,get and trap by specifying oids. </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl10_NameLink" title="vinay">vinay</a> on 2/12/2009 3:01 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577539">#</a>&nbsp;<a name="577539"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl11_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=e1641689cf3f96fc778488242a4ed4cd&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl11_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl11$EditLink','')"></a><br />
<div class="content">hello everyone,<br />
can anybody guide me to write the code in C# to access the of various node status in LAN using SNMP protocol.If any one is interested please mail me.<br />
</div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl11_NameLink" title="Sagar Mirajkar">Sagar Mirajkar</a> on 3/2/2009 3:15 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577563">#</a>&nbsp;<a name="577563"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<a id="Comments_ascx_CommentList_ctl12_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl12$EditLink','')"></a><br />
<div class="content">hai thnks for giving this code to get status . I need more information about Printer like <br />
1. whether Printer is Printing or not,<br />
2. whether it is on Or off,<br />
3.how many copies printed.<br />
<br />
Can u help me </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl12_NameLink" title="XXXXXXX">XXXXXXX</a> on 3/17/2009 10:18 PM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577564">#</a>&nbsp;<a name="577564"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl13_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=a6ad4314c683aa61c8c2bfa5a7aaeda6&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl13_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl13$EditLink','')"></a><br />
<div class="content">hello <br />
Is it possible to use snmp on network to get informations (counter) from shared printers ? </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl13_NameLink" title="jd">jd</a> on 3/17/2009 10:37 PM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577565">#</a>&nbsp;<a name="577565"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<a id="Comments_ascx_CommentList_ctl14_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl14$EditLink','')"></a><br />
<div class="content">ya is it possible </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl14_NameLink" title="XXXXXXX">XXXXXXX</a> on 3/18/2009 12:20 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577566">#</a>&nbsp;<a name="577566"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<a id="Comments_ascx_CommentList_ctl15_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl15$EditLink','')"></a><br />
<div class="content">can u reply quickly? i need to develop an appliacation controlling printer pls </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl15_NameLink" title="XXXXXXX">XXXXXXX</a> on 3/18/2009 12:40 AM</span> </div>
<div class="post">
<div class="title">
<h2><a title="permalink: re: C# Sample code to talk to a printer using SNMP to get its status." href="http://blog.crowe.co.nz/archive/2005/08/08/182.aspx#577567">#</a>&nbsp;<a name="577567"></a>re: C# Sample code to talk to a printer using SNMP to get its status.</h2>
</div>
<img class="avatar" id="Comments_ascx_CommentList_ctl16_GravatarImg" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="Gravatar" src="http://www.gravatar.com/avatar.php?gravatar_id=a6ad4314c683aa61c8c2bfa5a7aaeda6&amp;size=50&amp;default=http%3a%2f%2fblog.crowe.co.nz%2fimages%2fdefault_gravatar.png" align="right" /> <a id="Comments_ascx_CommentList_ctl16_EditLink" href="javascript:__doPostBack('Comments_ascx$CommentList$ctl16$EditLink','')"></a><br />
<div class="content">you said it is possible to retrieve information from a shared printer (not &#224; network printer) but how.<br />
<br />
for a network printer i send an smtp request to the printer's IP with oid : 1.3.6.1.2.1.43.10.2.1.4.1.1<br />
<br />
but for a shared printer i have to send it to the computer? </div>
<span class="author">Posted by <a id="Comments_ascx_CommentList_ctl16_NameLink" title="jd">jd</a> on 3/19/2009 3:55 AM</span> </div>
</div>
</span></span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/283093.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2009-06-18 17:24 <a href="http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283093.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OID</title><link>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283090.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 18 Jun 2009 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283090.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/283090.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/283090.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/283090.html</trackback:ping><description><![CDATA[熟悉MIB库，收集下列参数的OID信息：IP地址、MAC地址、描述、端口状态、内存利用率、CPU利用率、延时、丢包率、端口利用率等<br />
服务器还包括硬盘利用率。<br />
<br />
<br />
<br />
1、在windows上安装snmp：控制面板-&gt;添加/删除程序-&gt;添加/删除windows组件-&gt;管理和监视工具-&gt;详细信息-&gt;snmp协议<br />
2、请你们先认真了解学习PHP。在机器上安装APACHE+PHP+MYSQL的设计环境，并熟悉环境。有问题随时联系我。<br />
3、你可以在本机安装snmp agent ，之后读取本机的相关参数。 &nbsp; &nbsp; &nbsp; &nbsp; <br />
<br />
部分重要OID信息：<br />
1、内存大小<br />
服务器内存的OID是：.1.3.6.1.2.1.25.2.2.0，不同的操作系统也是使用一样的OID。但是网络设备内存的OID根据设备的生产厂商不同、型号不同，其OID也是不同的。Cisco的路由器和交换机都是.1.3.6.1.4.1.9.9.48.1.1.1.5.1。华为交换机Huawei 6502、Huawei 3526、Huawei 2403的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.2.0。而华三的H3C E328和H3C E126的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.2.65536。<br />
2、&nbsp; &nbsp; &nbsp; &nbsp; 内存利用率<br />
与内存大小的OID相对应，各被监控对象的内存利用率的OID如下：<br />
服务器内存利用率的OID是.1.3.6.1.4.1.2021.4.6.0；华为交换机的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.3.0。华三交换机的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.3.65536。<br />
3、&nbsp; &nbsp; &nbsp; &nbsp; 硬盘大小及利用率<br />
对于服务器的硬盘空间来说，因为每个服务器的硬盘个数和目录划分都不一样，所以读取到的目录空间大小对应的OID依次为：.1.3.6.1.2.1.25.2.3.1.5.1 、.1.3.6.1.2.1.25.2.3.1.5.2等，并且在读取每个目录空间大小的同时要读取该目录的名称（OID依次为：.1.3.6.1.2.1.25.2.3.1.3.1、.1.3.6.1.2.1.25.2.3.1.3.2等）作为该监控对象的描述。关于目录空间的利用率没有现成的OID，需要先获得目录空间的使用量（OID依次为：.1.3.6.1.2.1.25.2.3.1.6.1、.1.3.6.1.2.1.25.2.3.1.6.2、等），然后通过使用量与空间总量的比较得出利用率。<br />
4、&nbsp; &nbsp; &nbsp; &nbsp; 端口状态<br />
对于服务器来说，有的服务器为了完成复杂的功能需要配置多块网卡，因此也就会有多个端口需要监控。关于端口状态的OID则依次为：.1.3.6.1.2.1.2.2.1.7.1、.1.3.6.1.2.1.2.2.1.7.2、.1.3.6.1.2.1.2.2.1.7.3等，除了端口状态系统还需要知道该端口的名称（OID依次为：.1.3.6.1.2.1.2.2.1。2.1、.1.3.6.1.2.1.2.2.1.2.2、.1.3.6.1.2.1.2.2.1.2.3等）。在获取交换机的端口状态时首先只将状态UP的端口信息记录下来，再通过每个端口的作用来选择是否真的对其进行监控。一般网络管理员只需要监控那些用来与其它的网络设备互连的端口。这些端口的OID有的是连续的，有的则是分散的，但都属于.1.3.6.1.2.1.2.2.1.7的分支。<br />
<br />
<br />
<br />
<br />
CPU Statistics<br />
<br />
Load<br />
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1<br />
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2<br />
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3<br />
<br />
CPU<br />
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0<br />
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0<br />
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0<br />
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0<br />
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0<br />
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0<br />
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0<br />
<br />
Memory Statistics<br />
<br />
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0<br />
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0<br />
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0<br />
Total RAM used: .1.3.6.1.4.1.2021.4.6.0<br />
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0<br />
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0<br />
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0<br />
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0<br />
<br />
Disk Statistics<br />
<br />
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single / partition):<br />
<br />
disk / 100000 (or)<br />
<br />
includeAllDisks 10% for all partitions and disks<br />
<br />
The OIDs are as follows<br />
<br />
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1<br />
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1<br />
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1<br />
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1<br />
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1<br />
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1<br />
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/283090.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2009-06-18 17:20 <a href="http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283090.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OID</title><link>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283089.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 18 Jun 2009 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283089.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/283089.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/283089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/283089.html</trackback:ping><description><![CDATA[熟悉MIB库，收集下列参数的OID信息：IP地址、MAC地址、描述、端口状态、内存利用率、CPU利用率、延时、丢包率、端口利用率等<br />
服务器还包括硬盘利用率。<br />
<br />
<br />
<br />
1、在windows上安装snmp：控制面板-&gt;添加/删除程序-&gt;添加/删除windows组件-&gt;管理和监视工具-&gt;详细信息-&gt;snmp协议<br />
2、请你们先认真了解学习PHP。在机器上安装APACHE+PHP+MYSQL的设计环境，并熟悉环境。有问题随时联系我。<br />
3、你可以在本机安装snmp agent ，之后读取本机的相关参数。 &nbsp; &nbsp; &nbsp; &nbsp; <br />
<br />
部分重要OID信息：<br />
1、内存大小<br />
服务器内存的OID是：.1.3.6.1.2.1.25.2.2.0，不同的操作系统也是使用一样的OID。但是网络设备内存的OID根据设备的生产厂商不同、型号不同，其OID也是不同的。Cisco的路由器和交换机都是.1.3.6.1.4.1.9.9.48.1.1.1.5.1。华为交换机Huawei 6502、Huawei 3526、Huawei 2403的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.2.0。而华三的H3C E328和H3C E126的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.2.65536。<br />
2、&nbsp; &nbsp; &nbsp; &nbsp; 内存利用率<br />
与内存大小的OID相对应，各被监控对象的内存利用率的OID如下：<br />
服务器内存利用率的OID是.1.3.6.1.4.1.2021.4.6.0；华为交换机的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.3.0。华三交换机的OID是.1.3.6.1.4.1.2011.6.1.2.1.1.3.65536。<br />
3、&nbsp; &nbsp; &nbsp; &nbsp; 硬盘大小及利用率<br />
对于服务器的硬盘空间来说，因为每个服务器的硬盘个数和目录划分都不一样，所以读取到的目录空间大小对应的OID依次为：.1.3.6.1.2.1.25.2.3.1.5.1 、.1.3.6.1.2.1.25.2.3.1.5.2等，并且在读取每个目录空间大小的同时要读取该目录的名称（OID依次为：.1.3.6.1.2.1.25.2.3.1.3.1、.1.3.6.1.2.1.25.2.3.1.3.2等）作为该监控对象的描述。关于目录空间的利用率没有现成的OID，需要先获得目录空间的使用量（OID依次为：.1.3.6.1.2.1.25.2.3.1.6.1、.1.3.6.1.2.1.25.2.3.1.6.2、等），然后通过使用量与空间总量的比较得出利用率。<br />
4、&nbsp; &nbsp; &nbsp; &nbsp; 端口状态<br />
对于服务器来说，有的服务器为了完成复杂的功能需要配置多块网卡，因此也就会有多个端口需要监控。关于端口状态的OID则依次为：.1.3.6.1.2.1.2.2.1.7.1、.1.3.6.1.2.1.2.2.1.7.2、.1.3.6.1.2.1.2.2.1.7.3等，除了端口状态系统还需要知道该端口的名称（OID依次为：.1.3.6.1.2.1.2.2.1。2.1、.1.3.6.1.2.1.2.2.1.2.2、.1.3.6.1.2.1.2.2.1.2.3等）。在获取交换机的端口状态时首先只将状态UP的端口信息记录下来，再通过每个端口的作用来选择是否真的对其进行监控。一般网络管理员只需要监控那些用来与其它的网络设备互连的端口。这些端口的OID有的是连续的，有的则是分散的，但都属于.1.3.6.1.2.1.2.2.1.7的分支。<br />
<br />
<br />
<br />
<br />
CPU Statistics<br />
<br />
Load<br />
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1<br />
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2<br />
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3<br />
<br />
CPU<br />
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0<br />
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0<br />
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0<br />
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0<br />
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0<br />
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0<br />
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0<br />
<br />
Memory Statistics<br />
<br />
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0<br />
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0<br />
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0<br />
Total RAM used: .1.3.6.1.4.1.2021.4.6.0<br />
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0<br />
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0<br />
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0<br />
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0<br />
<br />
Disk Statistics<br />
<br />
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single / partition):<br />
<br />
disk / 100000 (or)<br />
<br />
includeAllDisks 10% for all partitions and disks<br />
<br />
The OIDs are as follows<br />
<br />
Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1<br />
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1<br />
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1<br />
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1<br />
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1<br />
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1<br />
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/283089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2009-06-18 17:20 <a href="http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cisco常用OID</title><link>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283080.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 18 Jun 2009 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283080.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/283080.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/283080.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/283080.html</trackback:ping><description><![CDATA[<div>
<pre>系统状态相关：</pre>
<pre>### THIS FILE WAS GENERATED BY MIB2SCHEMA
"org"		"1.3"
"dod"		"1.3.6"
"internet"		"1.3.6.1"
"directory"		"1.3.6.1.1"
"mgmt"		"1.3.6.1.2"
"experimental"		"1.3.6.1.3"
"private"		"1.3.6.1.4"
"enterprises"		"1.3.6.1.4.1"
"cisco"		"1.3.6.1.4.1.9"
"ciscoMgmt"		"1.3.6.1.4.1.9.9"
"ciscoEnvMonMIB"		"1.3.6.1.4.1.9.9.13"
"ciscoEnvMonObjects"		"1.3.6.1.4.1.9.9.13.1"
"ciscoEnvMonMIBNotificationEnables"		"1.3.6.1.4.1.9.9.13.2"
"ciscoEnvMonMIBNotificationPrefix"		"1.3.6.1.4.1.9.9.13.3"
"ciscoEnvMonMIBConformance"		"1.3.6.1.4.1.9.9.13.4"
"ciscoEnvMonPresent"		"1.3.6.1.4.1.9.9.13.1.1"
"ciscoEnvMonVoltageStatusTable"		"1.3.6.1.4.1.9.9.13.1.2"
"ciscoEnvMonTemperatureStatusTable"		"1.3.6.1.4.1.9.9.13.1.3"
"ciscoEnvMonFanStatusTable"		"1.3.6.1.4.1.9.9.13.1.4"
"ciscoEnvMonSupplyStatusTable"		"1.3.6.1.4.1.9.9.13.1.5"
"ciscoEnvMonAlarmContacts"		"1.3.6.1.4.1.9.9.13.1.6"
"ciscoEnvMonVoltageStatusEntry"		"1.3.6.1.4.1.9.9.13.1.2.1"
"ciscoEnvMonVoltageStatusIndex"		"1.3.6.1.4.1.9.9.13.1.2.1.1"
"ciscoEnvMonVoltageStatusDescr"		"1.3.6.1.4.1.9.9.13.1.2.1.2"
"ciscoEnvMonVoltageStatusValue"		"1.3.6.1.4.1.9.9.13.1.2.1.3"
"ciscoEnvMonVoltageThresholdLow"		"1.3.6.1.4.1.9.9.13.1.2.1.4"
"ciscoEnvMonVoltageThresholdHigh"		"1.3.6.1.4.1.9.9.13.1.2.1.5"
"ciscoEnvMonVoltageLastShutdown"		"1.3.6.1.4.1.9.9.13.1.2.1.6"
"ciscoEnvMonVoltageState"		"1.3.6.1.4.1.9.9.13.1.2.1.7"
"ciscoEnvMonTemperatureStatusEntry"		"1.3.6.1.4.1.9.9.13.1.3.1"
"ciscoEnvMonTemperatureStatusIndex"		"1.3.6.1.4.1.9.9.13.1.3.1.1"
"ciscoEnvMonTemperatureStatusDescr"		"1.3.6.1.4.1.9.9.13.1.3.1.2"
"ciscoEnvMonTemperatureStatusValue"		"1.3.6.1.4.1.9.9.13.1.3.1.3"
"ciscoEnvMonTemperatureThreshold"		"1.3.6.1.4.1.9.9.13.1.3.1.4"
"ciscoEnvMonTemperatureLastShutdown"		"1.3.6.1.4.1.9.9.13.1.3.1.5"
"ciscoEnvMonTemperatureState"		"1.3.6.1.4.1.9.9.13.1.3.1.6"
"ciscoEnvMonFanStatusEntry"		"1.3.6.1.4.1.9.9.13.1.4.1"
"ciscoEnvMonFanStatusIndex"		"1.3.6.1.4.1.9.9.13.1.4.1.1"
"ciscoEnvMonFanStatusDescr"		"1.3.6.1.4.1.9.9.13.1.4.1.2"
"ciscoEnvMonFanState"		"1.3.6.1.4.1.9.9.13.1.4.1.3"
"ciscoEnvMonSupplyStatusEntry"		"1.3.6.1.4.1.9.9.13.1.5.1"
"ciscoEnvMonSupplyStatusIndex"		"1.3.6.1.4.1.9.9.13.1.5.1.1"
"ciscoEnvMonSupplyStatusDescr"		"1.3.6.1.4.1.9.9.13.1.5.1.2"
"ciscoEnvMonSupplyState"		"1.3.6.1.4.1.9.9.13.1.5.1.3"
"ciscoEnvMonSupplySource"		"1.3.6.1.4.1.9.9.13.1.5.1.4"
"ciscoEnvMonEnableShutdownNotification"		"1.3.6.1.4.1.9.9.13.2.1"
"ciscoEnvMonEnableVoltageNotification"		"1.3.6.1.4.1.9.9.13.2.2"
"ciscoEnvMonEnableTemperatureNotification"		"1.3.6.1.4.1.9.9.13.2.3"
"ciscoEnvMonEnableFanNotification"		"1.3.6.1.4.1.9.9.13.2.4"
"ciscoEnvMonEnableRedundantSupplyNotification"		"1.3.6.1.4.1.9.9.13.2.5"
"ciscoEnvMonEnableStatChangeNotif"		"1.3.6.1.4.1.9.9.13.2.6"
"ciscoEnvMonMIBNotifications"		"1.3.6.1.4.1.9.9.13.3"
"ciscoEnvMonMIBCompliances"		"1.3.6.1.4.1.9.9.13.4.1"
"ciscoEnvMonMIBGroups"		"1.3.6.1.4.1.9.9.13.4.2"
"ciscoEnvMonMIBCompliance"		"1.3.6.1.4.1.9.9.13.4.1.1"
"ciscoEnvMonMIBComplianceRev1"		"1.3.6.1.4.1.9.9.13.4.1.2"
"ciscoEnvMonMIBGroup"		"1.3.6.1.4.1.9.9.13.4.2.1"
"ciscoEnvMonMIBGroupRev"		"1.3.6.1.4.1.9.9.13.4.2.2"
"ciscoEnvMonEnableStatChangeGroup"		"1.3.6.1.4.1.9.9.13.4.2.3"
"ciscoEnvMonMIBNotifGroup"		"1.3.6.1.4.1.9.9.13.4.2.4"
"ciscoEnvMonStatChangeNotifGroup"		"1.3.6.1.4.1.9.9.13.4.2.5"
"ciscoEnvMonMIBMiscNotifGroup"		"1.3.6.1.4.1.9.9.13.4.2.6"</pre>
<pre>系统内存信息：</pre>
<pre>
<pre>### THIS FILE WAS GENERATED BY MIB2SCHEMA
"org"		"1.3"
"dod"		"1.3.6"
"internet"		"1.3.6.1"
"directory"		"1.3.6.1.1"
"mgmt"		"1.3.6.1.2"
"experimental"		"1.3.6.1.3"
"private"		"1.3.6.1.4"
"enterprises"		"1.3.6.1.4.1"
"cisco"		"1.3.6.1.4.1.9"
"ciscoMgmt"		"1.3.6.1.4.1.9.9"
"ciscoMemoryPoolMIB"		"1.3.6.1.4.1.9.9.48"
"ciscoMemoryPoolObjects"		"1.3.6.1.4.1.9.9.48.1"
"ciscoMemoryPoolNotifications"		"1.3.6.1.4.1.9.9.48.2"
"ciscoMemoryPoolConformance"		"1.3.6.1.4.1.9.9.48.3"
"ciscoMemoryPoolTable"		"1.3.6.1.4.1.9.9.48.1.1"
"ciscoMemoryPoolUtilizationTable"		"1.3.6.1.4.1.9.9.48.1.2"
"ciscoMemoryPoolEntry"		"1.3.6.1.4.1.9.9.48.1.1.1"
"ciscoMemoryPoolType"		"1.3.6.1.4.1.9.9.48.1.1.1.1"
"ciscoMemoryPoolName"		"1.3.6.1.4.1.9.9.48.1.1.1.2"
"ciscoMemoryPoolAlternate"		"1.3.6.1.4.1.9.9.48.1.1.1.3"
"ciscoMemoryPoolValid"		"1.3.6.1.4.1.9.9.48.1.1.1.4"
"ciscoMemoryPoolUsed"		"1.3.6.1.4.1.9.9.48.1.1.1.5"
"ciscoMemoryPoolFree"		"1.3.6.1.4.1.9.9.48.1.1.1.6"
"ciscoMemoryPoolLargestFree"		"1.3.6.1.4.1.9.9.48.1.1.1.7"
"ciscoMemoryPoolUtilizationEntry"		"1.3.6.1.4.1.9.9.48.1.2.1"
"ciscoMemoryPoolUtilization1Min"		"1.3.6.1.4.1.9.9.48.1.2.1.1"
"ciscoMemoryPoolUtilization5Min"		"1.3.6.1.4.1.9.9.48.1.2.1.2"
"ciscoMemoryPoolUtilization10Min"		"1.3.6.1.4.1.9.9.48.1.2.1.3"
"ciscoMemoryPoolCompliances"		"1.3.6.1.4.1.9.9.48.3.1"
"ciscoMemoryPoolGroups"		"1.3.6.1.4.1.9.9.48.3.2"
"ciscoMemoryPoolCompliance"		"1.3.6.1.4.1.9.9.48.3.1.1"
"ciscoMemoryPoolComplianceRev1"		"1.3.6.1.4.1.9.9.48.3.1.2"
"ciscoMemoryPoolGroup"		"1.3.6.1.4.1.9.9.48.3.2.1"
"ciscoMemoryPoolUtilizationGroup"		"1.3.6.1.4.1.9.9.48.3.2.2"
</pre>
</pre>
<pre></pre>
</div>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/283080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2009-06-18 16:48 <a href="http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Communicating with SNMP using C# - The Very Beginning </title><link>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283059.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Thu, 18 Jun 2009 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283059.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/283059.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283059.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/283059.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/283059.html</trackback:ping><description><![CDATA[<div style="float: right; margin-left: 5px"></div>
<p><span style="font-weight: bold; font-size: 130%; color: rgb(102,0,0)">Who Should Read This</span><br />
</p>
<ol style="color: rgb(0,0,0)">
    <li>You want to program <span style="font-weight: bold">SNMP</span> with <span style="font-weight: bold">C#</span> but have no idea for beginning.
    <li>You've googled for a while, but don't get a simple working example.
    <li>What you're looking for, is just a simple requirement to get a status value from a device through <span style="font-weight: bold">SNMP</span>.</li>
</ol>
<br />
<span style="font-size: 130%; color: rgb(102,0,0)"><span style="font-weight: bold">Introduction</span></span><br />
My purpose is to get an uint value from a temperature sensor through SNMP. This is a very simple requirement, and I don't want to understand the whole detail of SNMP protocol. In JAVA, there's lot of open source resources for SNMP<span style="font-weight: bold"> </span>programming, for example, SNMP<span style="font-weight: bold">4j.</span> How ever, I found no simple guidance for <span style="font-weight: bold">C# </span>SNMP programming. If you have the same problem, you can have following example to start your way toward SNMP.<br />
<br />
<span style="font-size: 130%; color: rgb(102,0,0)"><span style="font-weight: bold">Pre-requirement<br />
</span></span>
<ol>
    <li><span style="font-weight: bold">C# </span>Programming Basics
    <li>A working SNMP<span style="font-weight: bold"> </span>host to communicate with. For example, a temperature sensor, a networked printer or a router with SNMP<span style="font-weight: bold"> </span>functions.<br />
    </li>
</ol>
<span style="font-size: 130%; color: rgb(102,0,0)"><span style="font-weight: bold">Sample SNMP Class<br />
</span></span>Firstly, you have to add a reference to OLEPRNLIB. You can find it from "Add reference" -&gt; "COM". The path of the dll is located at C:\Windows\System32 by Default.<br />
<br />
Here is a sample SNMP Class:<br />
<hr />
using System;<br />
using System.Collections.Generic;<br />
using System.Text;<br />
using OLEPRNLib;<br />
<br />
namespace MrFu<br />
{<br />
public class SimpleSnmp<br />
{<br />
private String hostIp;<br />
private String oid;<br />
private String communityString;<br />
<br />
int retries = 1;<br />
int timeout = 3000;<br />
<br />
SNMP snmp = new SNMP();<br />
<br />
public SimpleSnmp(String hostIp, String communityString, String oid)<br />
{<br />
this.hostIp = hostIp;<br />
this.communityString = communityString;<br />
this.oid = oid;<br />
<br />
try<br />
{<br />
snmp.Open(this.hostIp, this.communityString, this.retries, this.timeout);<br />
}<br />
catch (Exception ex) {<br />
Console.WriteLine(ex.Message);<br />
}<br />
<br />
}<br />
<br />
public String getValue() {<br />
try<br />
{<br />
uint result = snmp.GetAsByte(this.oid);<br />
return result.ToString();<br />
}<br />
catch (Exception ex) {<br />
Console.WriteLine(ex.Message);<br />
return null;<br />
}<br />
}<br />
}<br />
}<br />
<hr />
<br />
<span style="font-size: 130%; color: rgb(102,0,0)"><span style="font-weight: bold">Description for the Code</span></span><br />
<br />
First line you need to look at is:<br />
<blockquote>snmp.Open(this.hostIp, this.communityString, this.retries, this.timeout);<br />
</blockquote>where the "<span style="font-weight: bold">hostIp</span>" is the IP address of the target, of course,<br />
<br />
the "<span style="font-weight: bold">communityString</span>" is "public" by default for most SNMP device. If you changed it on device configuration, remember to modify it.<br />
<br />
the "<span style="font-weight: bold">retries</span>" and "<span style="font-weight: bold">timeout</span>" indicate how many times the system should retry if connection failed over the milliseconds given by "timeout".<br />
<br />
And, That's All to Connect to A Device Through SNMP. COOL!<br />
<br />
Second line you might want to know is:<br />
<blockquote>uint result = snmp.GetAsByte(this.oid);</blockquote>That's the basic way to get the status or value from your host device. You can convert it into String or any thing you like.<br />
<br />
To explain in a simple way, the "oid" is the unique id for some status on the device. You can obtain the correct oid from your device manual. For example, the <span style="font-weight: bold">oid </span>of my temperature sensor is:<br />
<blockquote style="font-weight: bold">".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.0"</blockquote>So you should be able to find some string looks like that from your device suppliers or documents.<br />
<br />
For more detailed description of SNMP<span style="font-weight: bold"> </span>protocol, you can look into wikipedia.<br />
<br />
That's all. So easy, and you can have a first shot of SNMP<span style="font-weight: bold"> </span>programming with C# now.<br />
<br />
<br />
<span style="font-weight: bold; font-size: 130%; color: rgb(102,0,0)">Conclusin</span><br />
This is quiet a easy way to have a quick look of SNMP<span style="font-weight: bold"> </span>progamming with <span style="font-weight: bold">C#</span>. Surely, the detailed packet parsing or other SNMP<span style="font-weight: bold"> </span>functions are NOT shown in this post. But that's all I need to solve my problem. And I hope this post can help you, too.
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/283059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2009-06-18 15:30 <a href="http://www.blogjava.net/Vincent-chenxj/archive/2009/06/18/283059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL基本语句</title><link>http://www.blogjava.net/Vincent-chenxj/articles/245153.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Tue, 09 Dec 2008 02:02:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/245153.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/245153.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/245153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/245153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/245153.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt">掌握SQL四条最基本的数据操作语句：Insert，Select，Update和Delete。<br />
<br />
　　 练掌握SQL是数据库用户的宝贵财 富。在本文中，我们将引导你掌握四条最基本的数据操作语句—SQL的核心功能—来依次介绍比较操作符、选择断言以及三值逻辑。当你完成这些学习后，显然你已经开始算是精通SQL了。<br />
<br />
　　在我们开始之前，先使用CREATE TABLE语句来创建一个表（如图1所示）。DDL语句对数据库对象如表、列和视进行定义。它们并不对表中的行进行处理，这是因为DDL语句并不处理数据库中实际的数据。这些工作由另一类SQL语句—数据操作语言（DML）语句进行处理。<br />
<br />
　　SQL中有四种基本的DML操作：INSERT，SELECT，UPDATE和DELETE。由于这是大多数SQL用户经常用到的，我们有必要在此对它们进行一一说明。在图1中我们给出了一个名为EMPLOYEES的表。其中的每一行对应一个特定的雇员记录。请熟悉这张表，我们在后面的例子中将要用到它。<br />
<br />
　　INSERT语句<br />
<br />
　　用户可以用INSERT语句将一行记录插入到指定的一个表中。例如，要将雇员John Smith的记录插入到本例的表中，可以使用如下语句：<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('Smith','John','1980-06-10',<br />
<br />
　　 'Los Angles',16,45000);<br />
<br />
　　通过这样的INSERT语句，系统将试着将这些值填入到相应的列中。这些列按照我们创建表时定义的顺序排列。在本例中，第一个值&#8220;Smith&#8221;将填到第一个列LAST_NAME中；第二个值&#8220;John&#8221;将填到第二列FIRST_NAME中&#8230;&#8230;以此类推。<br />
<br />
　　我们说过系统会&#8220;试着&#8221;将值填入，除了执行规则之外它还要进行类型检查。如果类型不符（如将一个字符串填入到类型为数字的列中），系统将拒绝这一次操作并返回一个错误信息。<br />
<br />
　　如果SQL拒绝了你所填入的一列值，语句中其他各列的值也不会填入。这是因为SQL提供对事务的支持。一次事务将数据库从一种一致性转移到另一种一致性。如果事务的某一部分失败，则整个事务都会失败，系统将会被恢复（或称之为回退）到此事务之前的状态。<br />
<br />
　　 回到原来的INSERT的例子，请注意所有的整形十进制数都不需要用单引号引起来，而字符串和日期类型的值都要用单引号来区别。为了增加可读性而在数字间插入逗号将会引起错误。记住，在SQL中逗号是元素的分隔符。<br />
<br />
　　同样要注意输入文字值时要使用单引号。双引号用来封装限界标识符。<br />
<br />
　　对于日期类型，我们必须使用SQL标准日期格式（yyyy-mm-dd），但是在系统中可以进行定义，以接受其他的格式。当然，2000年临近，请你最好还是使用四位来表示年份。<br />
<br />
　　既然你已经理解了INSERT语句是怎样工作的了，让我们转到EMPLOYEES表中的其他部分：<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('Bunyan','Paul','1970-07-04',<br />
<br />
　　 'Boston',12,70000);<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('John','Adams','1992-01-21',<br />
<br />
　　 'Boston',20,100000);<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('Smith','Pocahontas','1976-04-06',<br />
<br />
　　 'Los Angles',12,100000);<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('Smith','Bessie','1940-05-02',<br />
<br />
　　 'Boston',5,200000);<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('Jones','Davy','1970-10-10',<br />
<br />
　　 'Boston',8,45000);<br />
<br />
　　INSERT INTO EMPLOYEES VALUES<br />
<br />
　　 ('Jones','Indiana','1992-02-01',<br />
<br />
　　 'Chicago',NULL,NULL);<br />
<br />
　　在最后一项中，我们不知道Jones先生的工薪级别和年薪，所以我们输入NULL（不要引号）。NULL是SQL中的一种特殊情况，我们以后将进行详细的讨论。现在我们只需认为NULL表示一种未知的值。<br />
<br />
　　有时，像我们刚才所讨论的情况，我们可能希望对某一些而不是全部的列进行赋值。除了对要省略的列输入NULL外，还可以采用另外一种INSERT语句，如下：<br />
<br />
　　INSERT INTO EMPLOYEES(<br />
<br />
　　 FIRST_NAME, LAST_NAME,<br />
<br />
　　 HIRE_DATE, BRANCH_OFFICE)<br />
<br />
　　VALUE(<br />
<br />
　　 'Indiana','Jones',<br />
<br />
　　 '1992-02-01','Indianapolis');<br />
<br />
　　这样，我们先在表名之后列出一系列列名。未列出的列中将自动填入缺省值，如果没有设置缺省值则填入NULL。请注意我们改变了列的顺序，而值的顺序要对应新的列的顺序。如果该语句中省略了FIRST_NAME和LAST_NAME项（这两项规定不能为空），SQL操作将失败。<br />
<br />
　　让我们来看一看上述INSERT语句的语法图：<br />
<br />
　　INSERT INTO table<br />
<br />
　　 [(column { ,column})]<br />
<br />
　　VALUES<br />
<br />
　　 (columnvalue [{,columnvalue}]);<br />
<br />
　　和前一篇文章中一样，我们用方括号来表示可选项，大括号表示可以重复任意次数的项（不能在实际的SQL语句中使用这些特殊字符）。VALUE子句和可选的列名列表中必须使用圆括号。<br />
<br />
　　SELECT语句<br />
<br />
　　SELECT语句可以从一个或多个表中选取特定的行和列。因为查询和检索数据是数据库管理中最重要的功能，所以SELECT语句在SQL中是工作量最大的部分。实际上，仅仅是访问数据库来分析数据并生成报表的人可以对其他SQL语句一窍不通。<br />
<br />
　　SELECT语句的结果通常是生成另外一个表。在执行过程中系统根据用户的标准从数据库中选出匹配的行和列，并将结果放到临时的表中。在直接SQL（direct SQL）中，它将结果显示在终端的显示屏上，或者将结果送到打印机或文件中。也可以结合其他SQL语句来将结果放到一个已知名称的表中。<br />
<br />
　　SELECT语句功能强大。虽然表面上看来它只用来完成本文第一部分中提到的关系代数运算&#8220;选择&#8221;（或称&#8220;限制&#8221;），但实际上它也可以完成其他两种关系运算—&#8220;投影&#8221;和&#8220;连接&#8221;，SELECT语句还可以完成聚合计算并对数据进行排序。<br />
<br />
　　SELECT语句最简单的语法如下：<br />
<br />
　　SELECT columns FROM tables;<br />
<br />
　　当我们以这种形式执行一条SELECT语句时，系统返回由所选择的列以及用户选择的表中所有指定的行组成的一个结果表。这就是实现关系投影运算的一个形式。<br />
<br />
　　让我们看一下使用图1中EMPLOYEES表的一些例子（这个表是我们以后所有SELECT语句实例都要使用的。而我们在图2和图3中给出了查询的实际结果。我们将在其他的例子中使用这些结果）。<br />
<br />
　　假设你想查看雇员工作部门的列表。那下面就是你所需要编写的SQL查询：<br />
<br />
　　SELECT BRANCH_OFFICE FROM EMPLOYEES;<br />
<br />
　　以上SELECT语句的执行将产生如图2中表2所示的结果。<br />
<br />
　　由于我们在SELECT语句中只指定了一个列，所以我们的结果表中也只有一个列。注意结果表中具有重复的行，这是因为有多个雇员在同一部门工作（记住SQL从所选的所有行中将值返回）。要消除结果中的重复行，只要在SELECT语句中加上DISTINCT子句：<br />
<br />
　　SELECT DISTINCT BRANCH_OFFICE<br />
<br />
　　FROM EMPLOYEES;<br />
<br />
　　这次查询的结果如表3所示。<br />
<br />
　　现在已经消除了重复的行，但结果并不是按照顺序排列的。如果你希望以字母表顺序将结果列出又该怎么做呢？只要使用ORDER BY子句就可以按照升序或降序来排列结果：<br />
<br />
　　SELECT DISTINCT BRANCH_OFFICE<br />
<br />
　　FROM EMPLOYEES<br />
<br />
　　ORDER BY BRANCH_OFFICE ASC;<br />
<br />
　　这一查询的结果如表4所示。请注意在ORDER BY之后是如何放置列名BRANCH _OFFICE的，这就是我们想要对其进行排序的列。为什么即使是结果表中只有一个列时我们也必须指出列名呢？这是因为我们还能够按照表中其他列进行排序，即使它们并不显示出来。列名BRANCH_ OFFICE之后的关键字ASC表示按照升序排列。如果你希望以降序排列，那么可以用关键字DESC。<br />
<br />
　　同样我们应该指出ORDER BY子句只将临时表中的结果进行排序；并不影响原来的表。<br />
<br />
　　假设我们希望得到按部门排序并从工资最高的雇员到工资最低的雇员排列的列表。除了工资括号中的内容，我们还希望看到按照聘用时间从最近聘用的雇员开始列出的列表。以下是你将要用到的语句：<br />
<br />
　　SELECT BRANCH_OFFICE,FIRST_NAME,<br />
<br />
　　 LAST_NAME,SALARY,HIRE_DATE<br />
<br />
　　FROM EMPLOYEES<br />
<br />
　　ORDER BY SALARY DESC,<br />
<br />
　　 HIRE_DATE DESC;<br />
<br />
　　这里我们进行了多列的选择和排序。排序的优先级由语句中的列名顺序所决定。SQL将先对列出的第一个列进行排序。如果在第一个列中出现了重复的行时，这些行将被按照第二列进行排序，如果在第二列中又出现了重复的行时，这些行又将被按照第三列进行排序&#8230;&#8230;如此类推。这次查询的结果如表5所示。<br />
<br />
　　将一个很长的表中的所有列名写出来是一件相当麻烦的事，所以SQL允许在选择表中所有的列时使用*号：<br />
<br />
　　SELECT * FROM EMPLOYEES;<br />
<br />
　　这次查询返回整个EMPLOYEES表，如表1所示。<br />
<br />
　　 下面我们对开始时给出的SELECT语句的语法进行一下更新（竖直线表示一个可选项，允许在其中选择一项。）：<br />
<br />
　　SELECT [DISTINCT]<br />
<br />
　　 (column [{, columns}])| *<br />
<br />
　　FROM table [ {, table}]<br />
<br />
　　[ORDER BY column [ASC] | DESC<br />
<br />
　　 [ {, column [ASC] | DESC }]];<br />
<br />
　　定义选择标准<br />
<br />
　　在我们目前所介绍的SELECT语句中，我们对结果表中的列作出了选择但返回的是表中所有的行。让我们看一下如何对SELECT语句进行限制使得它只返回希望得到的行：<br />
<br />
　　SELECT columns FROM tables [WHERE predicates];<br />
<br />
　　WHERE子句对条件进行了设置，只有满足条件的行才被包括到结果表中。这些条件由断言（predicate）进行指定（断言指出了关于某件事情的一种可能的事实）。如果该断言对于某个给定的行成立，该行将被包括到结果表中，否则该行被忽略。在SQL语句中断言通常通过比较来表示。例如，假如你需要查询所有姓为Jones的职员，则可以使用以下SELECT语句：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE LAST_NAME = 'Jones';<br />
<br />
　　LAST_NAME = 'Jones'部分就是断言。在执行该语句时，SQL将每一行的LAST_NAME列与&#8220;Jones&#8221;进行比较。如果某一职员的姓为&#8220;Jones&#8221;，即断言成立，该职员的信息将被包括到结果表中（见表6）。<br />
<br />
　　使用最多的六种比较<br />
<br />
　　我们上例中的断言包括一种基于&#8220;等值&#8221;的比较（LAST_NAME = 'Jones'），但是SQL断言还可以包含其他几种类型的比较。其中最常用的为：<br />
<br />
　　等于 =<br />
<br />
　　不等于 &lt;&gt;<br />
<br />
　　小于 &lt;<br />
<br />
　　大于 &gt;<br />
<br />
　　小于或等于 &lt;=<br />
<br />
　　大于或等于 &gt;=<br />
<br />
　　下面给出了不是基于等值比较的一个例子：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE SALARY &gt; 50000;<br />
<br />
　　这一查询将返回年薪高于$50,000.00的职员（参见表7）。<br />
<br />
　　逻辑连接符<br />
<br />
　　有时我们需要定义一条不止一种断言的SELECT语句。举例来说，如果你仅仅想查看Davy Jones的信息的话，表6中的结果将是不正确的。为了进一步定义一个WHERE子句，用户可以使用逻辑连接符AND，OR和NOT。为了只得到职员Davy Jones的记录，用户可以输入如下语句：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';<br />
<br />
　　在本例中，我们通过逻辑连接符AND将两个断言连接起来。只有两个断言都满足时整个表达式才会满足。如果用户需要定义一个SELECT语句来使得当其中任何一项成立就满足条件时，可以使用OR连接符：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';<br />
<br />
　　有时定义一个断言的最好方法是通过相反的描述来说明。如果你想要查看除了Boston办事处的职员以外的其他所有职员的信息时，你可以进行如下的查询：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE NOT(BRANCH_OFFICE = 'Boston');<br />
<br />
　　关键字NOT后面跟着用圆括号括起来的比较表达式。其结果是对结果取否定。如果某一职员所在部门的办事处在Boston，括号内的表达式返回true，但是NOT操作符将该值取反，所以该行将不被选中。<br />
<br />
　　断言可以与其他的断言嵌套使用。为了保证它们以正确的顺序进行求值，可以用括号将它们括起来：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE (LAST_NAME = 'Jones'<br />
<br />
　　AND FIRST_NAME = 'Indiana')<br />
<br />
　　OR (LAST_NAME = 'Smith'<br />
<br />
　　AND FIRST_NAME = 'Bessie');<br />
<br />
　　SQL沿用数学上标准的表达式求值的约定—圆括号内的表达式将最先进行求值，其他表达式将从左到右进行求值。<br />
<br />
　　以上对逻辑连接符进行了说明，在对下面的内容进行说明之前，我们再一次对SELECT语句的语法进行更新：<br />
<br />
　　SELECT [DISTINCT]<br />
<br />
　　 (column [{, column } ] )| *<br />
<br />
　　FROM table [ { , table} ]<br />
<br />
　　[ORDER BY column [ASC] | [DESC<br />
<br />
　　[{ , column [ASC] | [DESC } ] ]<br />
<br />
　　WHERE predicate [ { logical-connector predicate } ];<br />
<br />
　　NULL和三值逻辑<br />
<br />
　　在SQL中NULL是一个复杂的话题，关于NULL的详细描述更适合于在SQL的高级教程而不是现在的入门教程中进行介绍。但由于NULL需要进行特殊处理，并且你也很可能会遇到它，所以我们还是简略地进行一下说明。<br />
<br />
　　首先，在断言中进行NULL判断时需要特殊的语法。例如，如果用户需要显示所有年薪未知的职员的全部信息，用户可以使用如下SELECT语句：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE SALARY IS NULL;<br />
<br />
　　相反，如果用户需要所有已知年薪数据的职员的信息，你可以使用以下语句：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE SALARY IS NOT NULL;<br />
<br />
　　请注意我们在列名之后使用了关键字IS NULL或IS NOT NULL，而不是标准的比较形式：COLUMN = NULL、COLUMN &lt;&gt; NULL或是逻辑操作符NOT（NULL）。<br />
<br />
　　这种形式相当简单。但当你不明确地测试NULL（而它们确实存在）时，事情会变得很混乱。<br />
<br />
　　例如，回过头来看我们图1中的EM-PLOYEES表，可以看到Indiana Jones的工薪等级或年薪值都是未知的。这两个列都包含NULL。可以想象运行如下的查询：<br />
<br />
　　SELECT * FROM EMPLOYEES<br />
<br />
　　WHERE GRADE &lt;= SALARY;<br />
<br />
　　此时，Indiana Jones应该出现在结果表中。因为NULL都是相等的，所以可以想象它们是能够通过GRADE小于等于SALARY的检查的。这其实是一个毫无疑义的查询，但是并没有关系。SQL允许进行这样的比较，只要两个列都是数字类型的。然而，Indiana Jones并没有出现在查询的结果中，为什么？<br />
<br />
　　正如我们早先提到过的，NULL表示未知的值（而不是象某些人所想象的那样表示一个为NULL的值）。对于SQL来说意味着这个值是未知的，而只要这个值为未知，就不能将其与其他值比较（即使其他值也是NULL）。所以SQL允许除了在true 和false之外还有第三种类型的真值，称之为&#8220;非确定&#8221;（unknown）值。<br />
<br />
　　如果比较的两边都是NULL，整个断言就被认为是非确定的。将一个非确定断言取反或使用AND或OR与其他断言进行合并之后，其结果仍是非确定的。由于结果表中只包括断言值为&#8220;真&#8221;的行，所以NULL不可能满足该检查。从而需要使用特殊的操作符IS NULL和IS NOT NULL。<br />
<br />
　　UPDATE语句<br />
<br />
　　UPDATE语句允许用户在已知的表中对现有的行进行修改。<br />
<br />
　　例如，我们刚刚发现Indiana Jones的等级为16，工资为$40,000.00，我们可以通过下面的SQL语句对数据库进行更新（并清除那些烦人的NULL）。<br />
<br />
　　UPDATE EMPLOYEES<br />
<br />
　　SET GRADE = 16, SALARY = 40000<br />
<br />
　　WHERE FIRST_NAME = 'Indiana'<br />
<br />
　　 AND LAST_NAME = 'Jones';<br />
<br />
　　上面的例子说明了一个单行更新，但是UPDATE语句可以对多行进行操作。满足WHERE条件的所有行都将被更新。如果，你想让Boston办事处中的所有职员搬到New York，你可以使用如下语句：<br />
<br />
　　UPDATE EMPLOYEES<br />
<br />
　　SET BRANCH_OFFICE = 'New York'<br />
<br />
　　WHERE BRANCH_OFFICE = 'Boston';<br />
<br />
　　如果忽略WHERE子句,表中所有行中的部门值都将被更新为'New York'。<br />
<br />
　　UPDATE语句的语法流图如下面所示：<br />
<br />
　　UPDATE table<br />
<br />
　　SET column = value [{, column = value}]<br />
<br />
　　[ WHERE predicate [ { logical-connector predicate}]];<br />
<br />
　　DELETE语句<br />
<br />
　　DELETE语句用来删除已知表中的行。如同UPDATE语句中一样，所有满足WHERE子句中条件的行都将被删除。由于SQL中没有UNDO语句或是&#8220;你确认删除吗？&#8221;之类的警告，在执行这条语句时千万要小心。如果决定取消Los Angeles办事处并解雇办事处的所有职员，这一卑鄙的工作可以由以下这条语句来实现：<br />
<br />
　　DELETE FROM EMPLOYEES<br />
<br />
　　WHERE BRANCH_OFFICE = 'Los Angeles';<br />
<br />
　　如同UPDATE语句中一样，省略WHERE子句将使得操作施加到表中所有的行。<br />
<br />
　　DELETE语句的语法流图如下面所示：<br />
<br />
　　DELETE FROM table<br />
<br />
　　[WHERE predicate [ { logical-connector predicate} ] ];<br />
<br />
　　现在我们完成了数据操作语言（DML）的主要语句的介绍。我们并没有对SQL能完成的所有功能进行说明。SQL还提供了许多的功能，如求平均值、求和以及其他对表中数据的计算，此外SQL还能完成从多个表中进行查询（多表查询，或称之为连接）的工作。这种语言还允许你使用GRANT和REVOKE命令控制使用者的数据访问权限。</span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/245153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-12-09 10:02 <a href="http://www.blogjava.net/Vincent-chenxj/articles/245153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSF问题集锦</title><link>http://www.blogjava.net/Vincent-chenxj/articles/243633.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Mon, 01 Dec 2008 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/243633.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/243633.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/243633.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/243633.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/243633.html</trackback:ping><description><![CDATA[<li class="alt"><span><span class="number">1</span><span>.如何结束session? &nbsp;&nbsp;</span></span>
<li class=""><span>你可以使用session的&nbsp;invalidate方法&nbsp;. &nbsp;&nbsp;</span>
<li class="alt"><span>下面是一个从action方法中结束session的例子:&nbsp;: &nbsp;&nbsp;</span> </li>
<span>
<p class="">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_23_228_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_228_Open_Text.style.display='none'; Codehighlighter1_23_228_Closed_Image.style.display='inline'; Codehighlighter1_23_228_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_23_228_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_23_228_Closed_Text.style.display='none'; Codehighlighter1_23_228_Open_Image.style.display='inline'; Codehighlighter1_23_228_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;logout()&nbsp;</span><span id="Codehighlighter1_23_228_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_23_228_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;FacesContext&nbsp;fc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;HttpSession&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpSession)&nbsp;fc.getExternalContext().getSession(</span><span style="color: #0000ff">false</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;session.invalidate();&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">login_page</span><span style="color: #000000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span></div>
</p>
<p class="">&nbsp;</span> </p>
<li class=""><span>下面的代码片段示例了如何在JSP页面中结束session: &nbsp;&nbsp;</span> </li>
<p class="alt">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">%&nbsp;session</span><span style="color: #ff0000">.invalidate();&nbsp;%</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">c:redirect&nbsp;</span><span style="color: #ff0000">url</span><span style="color: #0000ff">="loginPage.jsf"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span></div>
</p>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">2</span><span>.如何在JSP页面中访问web.xml中的初始化参数? &nbsp;&nbsp;</span>
<li class=""><span>你可以使用预定义的JSF&nbsp;EL变量&nbsp;&nbsp;initParam来访问: &nbsp;&nbsp;</span>
<li class="alt"><span>例如,如果你有: &nbsp;&nbsp;</span> </li>
<p class="">&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">productId</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">2004Q4</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<p class="">&nbsp;</p>
<li class=""><span>你可以使用她&nbsp;#{initParam['productId']}来访问&nbsp;.例如: &nbsp;&nbsp;</span>
<li class="alt"><span>Product&nbsp;Id:&nbsp;&lt;h:outputText&nbsp;value=</span><span class="string">"#{initParam['productId']}"</span><span>/&gt; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">3</span><span>.如何从java代码中访问web.xml&nbsp;中的初始化参数? &nbsp;&nbsp;</span>
<li class="alt"><span>你可以使用externalContext的&nbsp;getInitParameter&nbsp;方法得到他们.例如&nbsp;如果你的参数如下: &nbsp;&nbsp;</span> </li>
<p class="">&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">connectionString</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:oracle:thin:scott/tiger@cartman:1521:O901DB</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">context-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
<p class="">&nbsp;</p>
<li class=""><span>你可以使用下面代码访问connectionString&nbsp;: &nbsp;&nbsp;</span>
<li class="alt"><span>FacesContext&nbsp;fc&nbsp;=&nbsp;FacesContext.getCurrentInstance();String&nbsp;connection&nbsp;=&nbsp;fc.getExternalContext().getInitParameter(</span><span class="string">"connectionString"</span><span>);&nbsp; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">4</span><span>.如何从backing&nbsp;bean中得到当前页面的URL? &nbsp;&nbsp;</span>
<li class="alt"><span>你可以通过FacesContext得到一个Http&nbsp;Request对象的引用,如下: &nbsp;&nbsp;</span>
<li class=""><span>FacesContext&nbsp;fc&nbsp;=&nbsp;FacesContext.getCurrentInstance();HttpServletRequest&nbsp;request&nbsp;=&nbsp;(HttpServletRequest)&nbsp;fc.getExternalContext().getRequest();&nbsp; &nbsp;&nbsp;</span>
<li class="alt"><span>然后使用普通的request方法来得到路径信息.还可以使用另外一种方法: &nbsp;&nbsp;</span>
<li class=""><span>context.getViewRoot().getViewId(); &nbsp;&nbsp;</span>
<li class="alt"><span>将返回你当前JSP(JSF&nbsp;view&nbsp;IDs&nbsp;基本上只是JSP&nbsp;path&nbsp;names)页面的名字. &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">5</span><span>.如何添加上下文路径到outputLink的URL中? &nbsp;&nbsp;</span>
<li class="alt"><span>在当前的JSF实现中,当在outputLink&nbsp;中定义的路径以'/'开始时,没有添加上下文路径到URL中,要弥补该问题请在URL中使用&nbsp;#{facesContext.externalContext.requestContextPath}&nbsp;前缀.例如: &nbsp;&nbsp;</span>
<li class=""><span>&lt;h:outputLink&nbsp;value=</span><span class="string">"#{facesContext.externalContext.requestContextPath}/myPage.faces"</span><span>&gt; &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">6</span><span>.如何使用URL字符串来传递参数到JSF程序中? &nbsp;&nbsp;</span>
<li class=""><span>如果你有下面的URL:&nbsp;http:</span><span class="comment">//your_server/your_app/product.jsf?id=777,&nbsp;你可以使用下面的代码来访问所传递的参数:&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span>
<li class="alt"><span>FacesContext&nbsp;fc&nbsp;=&nbsp;FacesContext.getCurrentInstance();String&nbsp;id&nbsp;=&nbsp;(String)&nbsp;fc.getExternalContext().getRequestParameterMap().get(</span><span class="string">"id"</span><span>);&nbsp; &nbsp;&nbsp;</span>
<li class=""><span>在JSF页面上,你也可以使用预定义的变量访问同样的参数,例如:&nbsp; &nbsp;&nbsp;</span>
<li class="alt"><span>&lt;h:outputText&nbsp;value=</span><span class="string">"#{param['id']}"</span><span>&nbsp;/&gt; &nbsp;&nbsp;</span>
<li class=""><span>注意:&nbsp;你必须直接调用该JSF页面,并且使用servlet&nbsp;映射&nbsp;(mapping). &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">7</span><span>.如何在页面重新载入的时候保留h:inputSecret中的密码? &nbsp;&nbsp;</span>
<li class=""><span>设置redisplay=</span><span class="keyword">true</span><span>,&nbsp;it&nbsp;is&nbsp;</span><span class="keyword">false</span><span>&nbsp;by&nbsp;</span><span class="keyword">default</span><span>. &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span class="number">8</span><span>.如何使用h:outputText输出HTML标签? &nbsp;&nbsp;</span>
<li class=""><span>&nbsp;&nbsp;</span>
<li class="alt"><span>h:outputText有一个&nbsp;&nbsp;escape&nbsp;属性用来处理html&nbsp;标签.&nbsp;默认值为</span><span class="keyword">true</span><span>.这意味着所有特殊的符合都被转义为'&amp;'代码.&nbsp;请看下面示例:&nbsp;&nbsp;&lt;h:outputText&nbsp;value=</span><span class="string">"&lt;b&gt;This&nbsp;is&nbsp;a&nbsp;text&lt;/b&gt;"</span><span>/&gt;&nbsp;打印的结果是:&nbsp;&nbsp;&lt;b&gt;This&nbsp;is&nbsp;a&nbsp;text&lt;/b&gt;&nbsp;&nbsp;而&nbsp;&lt;h:outputText&nbsp;escape=</span><span class="string">"false"</span><span>&nbsp;value=</span><span class="string">"&lt;b&gt;This&nbsp;is&nbsp;a&nbsp;text&lt;/b&gt;"</span><span>/&gt;&nbsp;&nbsp;打印的结果是:&nbsp;&nbsp;This&nbsp;is&nbsp;a&nbsp;text&nbsp;&nbsp;当用户点击Command&nbsp;Link后如何显示确认对话框? &nbsp;&nbsp;</span>
<li class=""><span>h:commandLink指定了&nbsp;onclick&nbsp;属性为内部使用.&nbsp;因此你不可以使用她了,&nbsp;该问题已经在JSF1.</span><span class="number">2</span><span>中修复了,对于JSF1.</span><span class="number">2</span><span>以前的版本,你可以在onclick以前使用&nbsp;&nbsp;onmousedown&nbsp;事件&nbsp;&nbsp;&lt;script&nbsp;&nbsp;language=</span><span class="string">"javascript"</span><span>&gt;&nbsp;&nbsp;function&nbsp;ConfirmDelete(link)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;delete&nbsp;=&nbsp;confirm('Do&nbsp;you&nbsp;want&nbsp;to&nbsp;Delete?');&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">if</span><span>&nbsp;(delete&nbsp;==&nbsp;</span><span class="keyword">true</span><span>)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;link.onclick();&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;}&lt;/script&gt; &nbsp;&nbsp;</span>
<li class="alt"><span>&lt;h:commandLink&nbsp;action=</span><span class="string">"delete"</span><span>&nbsp;onmousedown=</span><span class="string">"return&nbsp;ConfirmDelete(this);"</span><span>&gt;&nbsp;&nbsp;&lt;h:outputText&nbsp;value=</span><span class="string">"delete&nbsp;it"</span><span>/&gt;&lt;/h:commandLink&gt; &nbsp;&nbsp;</span>
<li class=""><span>&nbsp; &nbsp;&nbsp;</span>
<li class="alt"><span>&nbsp;&nbsp;</span>
<li class=""><span class="number">9</span><span>.在调用ValueChangeListener&nbsp;方法后如何重新装载页面? &nbsp;&nbsp;</span>
<li class="alt"><span>在&nbsp;ValueChangeListener的最后,调用&nbsp;&nbsp;FacesContext.getCurrentInstance().renderResponse() &nbsp;&nbsp;</span>
<li class=""><span>如何实现</span><span class="string">"请等待..."</span><span>页面?&nbsp;在客户端实现可能很简单.你可以包装JSP页面(或者你想要隐藏的一部分)到一个div中,然后你可以添加更多div,当用户点击提交按钮时这些div出现.这些div可以包含gif动画和其他内容.&nbsp;场景:当用户点击按钮,调用JS函数,该函数隐藏页面并且显示</span><span class="string">"请等待..."</span><span>div.你可以使用CSS来自定义外观:下面是一个正常工作的例子:&nbsp;&lt;%@&nbsp;taglib&nbsp;uri=</span><span class="string">"http://java.sun.com/jsf/html"</span><span>&nbsp;prefix=</span><span class="string">"h"</span><span>&nbsp;%&gt; &nbsp;&nbsp;</span> </li>
<span>
<p class="alt">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">%@&nbsp;taglib&nbsp;</span><span style="color: #ff0000">uri</span><span style="color: #0000ff">="http://java.sun.com/jsf/core"</span><span style="color: #ff0000">&nbsp;prefix</span><span style="color: #0000ff">="f"</span><span style="color: #ff0000">&nbsp;%</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:loadBundle&nbsp;</span><span style="color: #ff0000">basename</span><span style="color: #0000ff">="demo.bundle.Messages"</span><span style="color: #ff0000">&nbsp;var</span><span style="color: #0000ff">="Message"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Input&nbsp;Name&nbsp;Page</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;gowait()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("main").style.visibility="hidden";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById("wait").style.visibility="visible";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body&nbsp;</span><span style="color: #ff0000">bgcolor</span><span style="color: #0000ff">="white"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:view</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="main"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{Message.inputname_header}"</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:messages&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="color:&nbsp;red"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:form&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="helloForm"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:outputText&nbsp;</span><span style="color: #ff0000">value</span><span style="color: #0000ff">="#{Message.prompt}"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:inputText&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="userName"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="#{GetNameBean.userName}"</span><span style="color: #ff0000">&nbsp;required</span><span style="color: #0000ff">="true"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">f:validateLength&nbsp;</span><span style="color: #ff0000">minimum</span><span style="color: #0000ff">="2"</span><span style="color: #ff0000">&nbsp;maximum</span><span style="color: #0000ff">="20"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:inputText</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h:commandButton&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="gowait()"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="submit"</span><span style="color: #ff0000">&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;action</span><span style="color: #0000ff">="#{GetNameBean.action}"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="Say&nbsp;Hello"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h:form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="wait"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="visibility:hidden;&nbsp;position:&nbsp;absolute;&nbsp;top:&nbsp;0;&nbsp;left:&nbsp;0"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">table&nbsp;</span><span style="color: #ff0000">width</span><span style="color: #0000ff">="100%"</span><span style="color: #ff0000">&nbsp;height&nbsp;</span><span style="color: #0000ff">="300px"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td&nbsp;</span><span style="color: #ff0000">align</span><span style="color: #0000ff">="center"</span><span style="color: #ff0000">&nbsp;valign</span><span style="color: #0000ff">="middle"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">h2</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Please,&nbsp;wait<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">h2</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">f:view</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</p>
<p class="alt">如果你想有一个动画gif图片在</span><span class="string">"请等待..."</span><span>中,当表单提交后该图片应该从新加载.因此,再一次指定图片的id,并且添加经过一段时间延时后重新加载的代码.下面是个例子:&nbsp;&lt;script&gt; &nbsp;&nbsp;</span> </p>
<p class=""><span>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;function&nbsp;gowait()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;document.getElementById("main").style.visibility="hidden";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;document.getElementById("wait").style.visibility="visible";&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;window.setTimeout('showProgress()',&nbsp;500);&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;function&nbsp;showProgress(){&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;var&nbsp;wg&nbsp;=&nbsp;document.getElementById("waitgif");&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;wg.src=wg.src;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />.&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">img&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="waitgif"</span><span style="color: #ff0000">&nbsp;src</span><span style="color: #0000ff">="animated.gif"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span></div>
</span>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/243633.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-12-01 09:55 <a href="http://www.blogjava.net/Vincent-chenxj/articles/243633.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsf结束session</title><link>http://www.blogjava.net/Vincent-chenxj/articles/243401.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 29 Nov 2008 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/243401.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/243401.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/243401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/243401.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/243401.html</trackback:ping><description><![CDATA[你可以使用session的 invalidate方法 . <br />
下面是一个从action方法中结束session的例子: :
<p>&nbsp;</p>
<div class="java" align="left">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_23_209_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_209_Open_Text.style.display='none'; Codehighlighter1_23_209_Closed_Image.style.display='inline'; Codehighlighter1_23_209_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_23_209_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_23_209_Closed_Text.style.display='none'; Codehighlighter1_23_209_Open_Image.style.display='inline'; Codehighlighter1_23_209_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;logout()&nbsp;</span><span id="Codehighlighter1_23_209_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_23_209_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;FacesContext&nbsp;fc&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;FacesContext.getCurrentInstance();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;HttpSession&nbsp;session&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpSession)&nbsp;fc.getExternalContext().getSession(</span><span style="color: #0000ff">false</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;session.invalidate();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">login_page</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</div>
<p>&nbsp;</p>
<p>下面的代码片段示例了如何在JSP页面中结束session: <br />
</p>
<pre><!--ession.invalidate();-->
<pre>
<pre>&lt;% session.invalidate(); %&gt;</pre>
</pre>
<pre>&lt;c:redirect url="loginPage.jsf" /&gt; </pre>
</pre>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/243401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-29 13:06 <a href="http://www.blogjava.net/Vincent-chenxj/articles/243401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>操作word的解决方案</title><link>http://www.blogjava.net/Vincent-chenxj/articles/243382.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 29 Nov 2008 02:04:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/243382.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/243382.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/243382.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/243382.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/243382.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: /**&nbsp;*//**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;給料統計Excelファイル書く&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/Vincent-chenxj/articles/243382.html'>阅读全文</a><img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/243382.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-29 10:04 <a href="http://www.blogjava.net/Vincent-chenxj/articles/243382.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POI 将数据导出到Word的实例</title><link>http://www.blogjava.net/Vincent-chenxj/articles/243381.html</link><dc:creator>Vincent-chen</dc:creator><author>Vincent-chen</author><pubDate>Sat, 29 Nov 2008 01:55:00 GMT</pubDate><guid>http://www.blogjava.net/Vincent-chenxj/articles/243381.html</guid><wfw:comment>http://www.blogjava.net/Vincent-chenxj/comments/243381.html</wfw:comment><comments>http://www.blogjava.net/Vincent-chenxj/articles/243381.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Vincent-chenxj/comments/commentRss/243381.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Vincent-chenxj/services/trackbacks/243381.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.</span><span style="color: #000000">*</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.</span><span style="color: #000000">*</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.poi.poifs.filesystem.</span><span style="color: #000000">*</span><span style="color: #000000">;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.poi.util.LittleEndian;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_148_851_Open_Image" onclick="this.style.display='none'; Codehighlighter1_148_851_Open_Text.style.display='none'; Codehighlighter1_148_851_Closed_Image.style.display='inline'; Codehighlighter1_148_851_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_148_851_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_148_851_Closed_Text.style.display='none'; Codehighlighter1_148_851_Open_Image.style.display='inline'; Codehighlighter1_148_851_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;WordTest&nbsp;</span><span id="Codehighlighter1_148_851_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_148_851_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img id="Codehighlighter1_169_172_Open_Image" onclick="this.style.display='none'; Codehighlighter1_169_172_Open_Text.style.display='none'; Codehighlighter1_169_172_Closed_Image.style.display='inline'; Codehighlighter1_169_172_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_169_172_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_169_172_Closed_Text.style.display='none'; Codehighlighter1_169_172_Open_Image.style.display='inline'; Codehighlighter1_169_172_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;WordTest()&nbsp;</span><span id="Codehighlighter1_169_172_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_169_172_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img id="Codehighlighter1_240_752_Open_Image" onclick="this.style.display='none'; Codehighlighter1_240_752_Open_Text.style.display='none'; Codehighlighter1_240_752_Closed_Image.style.display='inline'; Codehighlighter1_240_752_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_240_752_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_240_752_Closed_Text.style.display='none'; Codehighlighter1_240_752_Open_Image.style.display='inline'; Codehighlighter1_240_752_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;writeWordFile(String&nbsp;path,&nbsp;String&nbsp;content)&nbsp;</span><span id="Codehighlighter1_240_752_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_240_752_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;w&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">false</span><span style="color: #000000">;&nbsp;<br />
<img id="Codehighlighter1_267_689_Open_Image" onclick="this.style.display='none'; Codehighlighter1_267_689_Open_Text.style.display='none'; Codehighlighter1_267_689_Closed_Image.style.display='inline'; Codehighlighter1_267_689_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_267_689_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_267_689_Closed_Text.style.display='none'; Codehighlighter1_267_689_Open_Image.style.display='inline'; Codehighlighter1_267_689_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_267_689_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_267_689_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;byte&nbsp;b[]&nbsp;=&nbsp;content.getBytes("ISO-8859-1");&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">byte</span><span style="color: #000000">&nbsp;b[]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;content.getBytes();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />ByteArrayInputStream&nbsp;bais&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ByteArrayInputStream(b);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />POIFSFileSystem&nbsp;fs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;POIFSFileSystem();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DirectoryEntry&nbsp;directory&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fs.getRoot();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DocumentEntry&nbsp;de&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;directory.createDocument(</span><span style="color: #000000">"</span><span style="color: #000000">WordDocument</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;bais);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />FileOutputStream&nbsp;ostream&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(path);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fs.writeFilesystem(ostream);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />bais.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />ostream.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_713_738_Open_Image" onclick="this.style.display='none'; Codehighlighter1_713_738_Open_Text.style.display='none'; Codehighlighter1_713_738_Closed_Image.style.display='inline'; Codehighlighter1_713_738_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_713_738_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_713_738_Closed_Text.style.display='none'; Codehighlighter1_713_738_Open_Image.style.display='inline'; Codehighlighter1_713_738_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(IOException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_713_738_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_713_738_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />e.printStackTrace();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;w;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img id="Codehighlighter1_793_848_Open_Image" onclick="this.style.display='none'; Codehighlighter1_793_848_Open_Text.style.display='none'; Codehighlighter1_793_848_Closed_Image.style.display='inline'; Codehighlighter1_793_848_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_793_848_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_793_848_Closed_Text.style.display='none'; Codehighlighter1_793_848_Open_Image.style.display='inline'; Codehighlighter1_793_848_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)</span><span id="Codehighlighter1_793_848_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_793_848_Open_Text"><span style="color: #000000">{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">boolean</span><span style="color: #000000">&nbsp;b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;writeWordFile(</span><span style="color: #000000">"</span><span style="color: #000000">E://test.doc</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">hello</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
<img id="Codehighlighter1_854_5064_Open_Image" onclick="this.style.display='none'; Codehighlighter1_854_5064_Open_Text.style.display='none'; Codehighlighter1_854_5064_Closed_Image.style.display='inline'; Codehighlighter1_854_5064_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_854_5064_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_854_5064_Closed_Text.style.display='none'; Codehighlighter1_854_5064_Open_Image.style.display='inline'; Codehighlighter1_854_5064_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_854_5064_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_854_5064_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;String&nbsp;extractText(InputStream&nbsp;in)&nbsp;throws&nbsp;IOException&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />ArrayList&nbsp;text&nbsp;=&nbsp;new&nbsp;ArrayList();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />POIFSFileSystem&nbsp;fsys&nbsp;=&nbsp;new&nbsp;POIFSFileSystem(in);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DocumentEntry&nbsp;headerProps&nbsp;=&nbsp;(DocumentEntry)&nbsp;fsys.getRoot().getEntry("WordDocument");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DocumentInputStream&nbsp;din&nbsp;=&nbsp;fsys.createDocumentInputStream("WordDocument");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />byte[]&nbsp;header&nbsp;=&nbsp;new&nbsp;byte[headerProps.getSize()];&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />din.read(header);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />din.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//&nbsp;Prende&nbsp;le&nbsp;informazioni&nbsp;dall'header&nbsp;del&nbsp;documento&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;info&nbsp;=&nbsp;LittleEndian.getShort(header,&nbsp;0xa);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />boolean&nbsp;useTable1&nbsp;=&nbsp;(info&nbsp;&amp;&nbsp;0x200)&nbsp;!=&nbsp;0;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//boolean&nbsp;useTable1&nbsp;=&nbsp;true;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//&nbsp;Prende&nbsp;informazioni&nbsp;dalla&nbsp;piece&nbsp;table&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;complexOffset&nbsp;=&nbsp;LittleEndian.getInt(header,&nbsp;0x1a2);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//int&nbsp;complexOffset&nbsp;=&nbsp;LittleEndian.getInt(header);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;tableName&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />if&nbsp;(useTable1)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />tableName&nbsp;=&nbsp;"1Table";&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;else&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />tableName&nbsp;=&nbsp;"0Table";&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DocumentEntry&nbsp;table&nbsp;=&nbsp;(DocumentEntry)&nbsp;fsys.getRoot().getEntry(tableName);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />byte[]&nbsp;tableStream&nbsp;=&nbsp;new&nbsp;byte[table.getSize()];&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />din&nbsp;=&nbsp;fsys.createDocumentInputStream(tableName);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />din.read(tableStream);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />din.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />din&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fsys&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />table&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />headerProps&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;multiple&nbsp;=&nbsp;findText(tableStream,&nbsp;complexOffset,&nbsp;text);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />StringBuffer&nbsp;sb&nbsp;=&nbsp;new&nbsp;StringBuffer();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;size&nbsp;=&nbsp;text.size();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />tableStream&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />for&nbsp;(int&nbsp;x&nbsp;=&nbsp;0;&nbsp;x&nbsp;&lt;&nbsp;size;&nbsp;x++)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />WordTextPiece&nbsp;nextPiece&nbsp;=&nbsp;(WordTextPiece)&nbsp;text.get(x);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;start&nbsp;=&nbsp;nextPiece.getStart();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;length&nbsp;=&nbsp;nextPiece.getLength();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />boolean&nbsp;unicode&nbsp;=&nbsp;nextPiece.usesUnicode();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;toStr&nbsp;=&nbsp;null;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />if&nbsp;(unicode)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />toStr&nbsp;=&nbsp;new&nbsp;String(header,&nbsp;start,&nbsp;length&nbsp;*&nbsp;multiple,&nbsp;"UTF-16LE");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;else&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />toStr&nbsp;=&nbsp;new&nbsp;String(header,&nbsp;start,&nbsp;length,&nbsp;"ISO-8859-1");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />sb.append(toStr).append("&nbsp;");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />return&nbsp;sb.toString();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />private&nbsp;static&nbsp;int&nbsp;findText(byte[]&nbsp;tableStream,&nbsp;int&nbsp;complexOffset,&nbsp;ArrayList&nbsp;text)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />throws&nbsp;IOException&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//actual&nbsp;text&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;pos&nbsp;=&nbsp;complexOffset;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;multiple&nbsp;=&nbsp;2;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//skips&nbsp;through&nbsp;the&nbsp;prms&nbsp;before&nbsp;we&nbsp;reach&nbsp;the&nbsp;piece&nbsp;table.&nbsp;These&nbsp;contain&nbsp;data&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//for&nbsp;actual&nbsp;fast&nbsp;saved&nbsp;files&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />while&nbsp;(tableStream[pos]&nbsp;==&nbsp;1)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />pos++;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;skip&nbsp;=&nbsp;LittleEndian.getShort(tableStream,&nbsp;pos);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />pos&nbsp;+=&nbsp;2&nbsp;+&nbsp;skip;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />if&nbsp;(tableStream[pos]&nbsp;!=&nbsp;2)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />throw&nbsp;new&nbsp;IOException("corrupted&nbsp;Word&nbsp;file");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;else&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//parse&nbsp;out&nbsp;the&nbsp;text&nbsp;pieces&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;pieceTableSize&nbsp;=&nbsp;LittleEndian.getInt(tableStream,&nbsp;++pos);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />pos&nbsp;+=&nbsp;4;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;pieces&nbsp;=&nbsp;(pieceTableSize&nbsp;-&nbsp;4)&nbsp;/&nbsp;12;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />for&nbsp;(int&nbsp;x&nbsp;=&nbsp;0;&nbsp;x&nbsp;&lt;&nbsp;pieces;&nbsp;x++)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;filePos&nbsp;=&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />LittleEndian.getInt(tableStream,&nbsp;pos&nbsp;+&nbsp;((pieces&nbsp;+&nbsp;1)&nbsp;*&nbsp;4)&nbsp;+&nbsp;(x&nbsp;*&lt;img&nbsp;src="http://www.blogjava.net/images/forum/smiles/icon_cool.gif"/&gt;&nbsp;+&nbsp;2);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />boolean&nbsp;unicode&nbsp;=&nbsp;false;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />if&nbsp;((filePos&nbsp;&amp;&nbsp;0x40000000)&nbsp;==&nbsp;0)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />unicode&nbsp;=&nbsp;true;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;else&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />unicode&nbsp;=&nbsp;false;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />multiple&nbsp;=&nbsp;1;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />filePos&nbsp;&amp;=&nbsp;~(0x40000000);&nbsp;//gives&nbsp;me&nbsp;FC&nbsp;in&nbsp;doc&nbsp;stream&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />filePos&nbsp;/=&nbsp;2;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />int&nbsp;totLength&nbsp;=&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />LittleEndian.getInt(tableStream,&nbsp;pos&nbsp;+&nbsp;(x&nbsp;+&nbsp;1)&nbsp;*&nbsp;4)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />-&nbsp;LittleEndian.getInt(tableStream,&nbsp;pos&nbsp;+&nbsp;(x&nbsp;*&nbsp;4));&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />WordTextPiece&nbsp;piece&nbsp;=&nbsp;new&nbsp;WordTextPiece(filePos,&nbsp;totLength,&nbsp;unicode);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />text.add(piece);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />return&nbsp;multiple;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args){&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />WordTest&nbsp;w&nbsp;=&nbsp;new&nbsp;WordTest();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />POIFSFileSystem&nbsp;ps&nbsp;=&nbsp;new&nbsp;POIFSFileSystem();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />try{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />File&nbsp;file&nbsp;=&nbsp;new&nbsp;File("C:\\test.doc");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />InputStream&nbsp;in&nbsp;=&nbsp;new&nbsp;FileInputStream(file);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />String&nbsp;s&nbsp;=&nbsp;w.extractText(in);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.out.println(s);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}catch(Exception&nbsp;e){&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />e.printStackTrace();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;boolean&nbsp;writeWordFile(String&nbsp;path,&nbsp;String&nbsp;content)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />boolean&nbsp;w&nbsp;=&nbsp;false;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />try&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />//&nbsp;byte&nbsp;b[]&nbsp;=&nbsp;content.getBytes("ISO-8859-1");&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />byte&nbsp;b[]&nbsp;=&nbsp;content.getBytes();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />ByteArrayInputStream&nbsp;bais&nbsp;=&nbsp;new&nbsp;ByteArrayInputStream(b);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />POIFSFileSystem&nbsp;fs&nbsp;=&nbsp;new&nbsp;POIFSFileSystem();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DirectoryEntry&nbsp;directory&nbsp;=&nbsp;fs.getRoot();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />DocumentEntry&nbsp;de&nbsp;=&nbsp;directory.createDocument("WordDocument",&nbsp;bais);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />FileOutputStream&nbsp;ostream&nbsp;=&nbsp;new&nbsp;FileOutputStream(path);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fs.writeFilesystem(ostream);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />bais.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />ostream.close();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;catch&nbsp;(IOException&nbsp;e)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />e.printStackTrace();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />return&nbsp;w;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />class&nbsp;WordTextPiece&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />private&nbsp;int&nbsp;_fcStart;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />private&nbsp;boolean&nbsp;_usesUnicode;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />private&nbsp;int&nbsp;_length;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;WordTextPiece(int&nbsp;start,&nbsp;int&nbsp;length,&nbsp;boolean&nbsp;unicode)&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />_usesUnicode&nbsp;=&nbsp;unicode;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />_length&nbsp;=&nbsp;length;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />_fcStart&nbsp;=&nbsp;start;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;boolean&nbsp;usesUnicode()&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />return&nbsp;_usesUnicode;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;int&nbsp;getStart()&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />return&nbsp;_fcStart;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />public&nbsp;int&nbsp;getLength()&nbsp;{&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />return&nbsp;_length;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />}&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000">&nbsp;</span></div>
<img src ="http://www.blogjava.net/Vincent-chenxj/aggbug/243381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Vincent-chenxj/" target="_blank">Vincent-chen</a> 2008-11-29 09:55 <a href="http://www.blogjava.net/Vincent-chenxj/articles/243381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>