﻿<?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-天行健-随笔分类-JSP</title><link>http://www.blogjava.net/bnlovebn/category/12154.html</link><description>《周易》曰：&lt;br&gt;
天行健，君子以自强不息(乾卦)&lt;br&gt;
地势坤，君子以厚德载物(坤卦)
</description><language>zh-cn</language><lastBuildDate>Tue, 14 Jun 2011 19:06:56 GMT</lastBuildDate><pubDate>Tue, 14 Jun 2011 19:06:56 GMT</pubDate><ttl>60</ttl><item><title>APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks</title><link>http://www.blogjava.net/bnlovebn/archive/2011/06/12/352125.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Sun, 12 Jun 2011 05:51:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2011/06/12/352125.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/352125.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2011/06/12/352125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/352125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/352125.html</trackback:ping><description><![CDATA[<div>最近orcale数据只有一台可以服务，导致hibernate 连接数据库每个13分钟就会报&#8220;APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks&#8221;的错误.<br />原因是 hibernate 使用c3p0连接orcale数据后不会释放 ， c3p0的最大连接数为100，但显然c3p0有Bug，导致数据库连接池不够用，导致进程锁死。<br />后换Proxool后，观察正常。<br /><br />下面转引其它网友文章说明c3p0 、 Proxool、 <span class="hilite1" style="background-color: #ffffff">dbcp</span>&nbsp; 的区别 
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;JDBC驱动程序&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="connection.driver_class"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.mysql.jdbc.Driver</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="connection.url"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:mysql://localhost:3306/struts?useUnicode=true</span><span style="color: #ff0000">&amp;characterEncoding</span><span style="color: #000000">=GBK</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;数据库用户名&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="connection.username"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">root</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;数据库密码&nbsp;</span><span style="color: #008000">--&gt;</span></div><br />上面的一段配置，在<span class="hilite2" style="background-color: #ffffff">c3p0</span>和<span class="hilite1" style="background-color: #ffffff">dbcp</span>中，都是必需的，因为hibernate会根据上述的配置来生成connections，再交给<span class="hilite2" style="background-color: #ffffff">c3p0</span>或<span class="hilite1" style="background-color: #ffffff">dbcp</span>管理.<br /><br />1 <span class="hilite2" style="background-color: #ffffff">C3P0</span> <br /><br />只需在hibernate.cfg.xml中加入 <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="c3p0.min_size"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">5</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="c3p0.max_size"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">30</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="c3p0.time_out"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1800</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="c3p0.max_statement"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">50</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />还有在classespath中加入<span class="hilite2" style="background-color: #ffffff">c3p0</span>-0.8.4.5.jar <br /><br /><br />2 <span class="hilite1" style="background-color: #ffffff">dbcp</span> <br /><br />在hibernate.cfg.xml中加入 <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.maxActive"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">100</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.whenExhaustedAction"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.maxWait"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">60000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.maxIdle"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">10</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.ps.maxActive"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">100</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.ps.whenExhaustedAction"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">1</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.ps.maxWait"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">60000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="dbcp.ps.maxIdle"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">10</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /></span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />还有在classespath中加入commons-pool-1.2.jar 和commons-<span class="hilite1" style="background-color: #ffffff">dbcp</span>-1.2.1.jar. <br /><br />3 proxool <br /><br />由于数据库connection在较长时间没有访问下会自动断开连接，导致浏览出错，增加proxool作为数据库pool。它有自动连接功能。<br />1)、从<a href="http://proxool.sourceforge.net/" target="_blank"><span style="color: #006600; background-color: #ffffff">http://proxool.sourceforge...</span></a><span style="background-color: #ffffff">下载proxool，释放proxool.jar到WEB-INF/lib<br /><br />2)、在hibernate.cfg.xml中增加：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="hibernate.proxool.pool_alias"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">dbpool</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="hibernate.proxool.xml"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">proxool.xml</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="connection.provider_class"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">org.hibernate.connection.ProxoolConnectionProvider</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /></span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div></span><br />3)、在与hibernate.cfg.xml同级目录（src根目录下）增加proxool.xml文件：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">&nbsp;1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;the&nbsp;proxool&nbsp;configuration&nbsp;can&nbsp;be&nbsp;embedded&nbsp;within&nbsp;your&nbsp;own&nbsp;application's.&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;3</span><span style="color: #008000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;Anything&nbsp;outside&nbsp;the&nbsp;"proxool"&nbsp;tag&nbsp;is&nbsp;ignored.&nbsp;</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">something-else-entirely</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">proxool</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">alias</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">dbpool</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">alias</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">proxool只能管理由自己产生的连接</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">driver-url</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jdbc:mysql://127.0.0.1:3306/wlsh?characterEncoding=GBK</span><span style="color: #ff0000">&amp;useUnicode</span><span style="color: #000000">=true</span><span style="color: #ff0000">&amp;autoReconnect</span><span style="color: #000000">=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">driver-url</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">10</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">driver-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.mysql.jdbc.Driver</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">driver-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">11</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">driver-properties</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">12</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="user"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="root"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">13</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="password"</span><span style="color: #ff0000">&nbsp;value</span><span style="color: #0000ff">="123456"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">14</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">driver-properties</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">15</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">16</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">house-keeping-sleep-time</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">90000</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">house-keeping-sleep-time</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">17</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;最少保持的空闲连接数</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">18</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">prototype-count</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">5</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">prototype-count</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">19</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;允许最大连接数,超过了这个连接，再有请求时，就排在队列中等候，最大的等待请求数由maximum-new-connections决定</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">20</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">maximum-connection-count</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">100</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">maximum-connection-count</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">21</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">&lt;!--</span><span style="color: #008000">&nbsp;最小连接数</span><span style="color: #008000">--&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">22</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">minimum-connection-count</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">10</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">minimum-connection-count</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">23</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">proxool</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">24</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">something-else-entirely</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;&nbsp;<br /></span><span style="color: #008080">25</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />于在hibernate3.0中，已经不再支持dbcp了，hibernate的作者在hibernate.org中，明确指出在实践中发现dbcp有 BUG,在某些种情会产生很多空连接不能释放，所以抛弃了对dbcp的支持。至于c3p0，有评论说它的算法不是最优的，因为网上查资料得知：有网友做了一个实验，在同一项目中分别用了几个常用的连接池，然后测试其性能，发现c3p0占用资源比较大，效率也不高。所以，基于上述原因，proxool不少行家推荐使用，而且暂时来说，是负面评价是最少的一个。在三星中也有项目是用proxool的。从性能和出错率来说，proxool稍微比前两种好些。C3P0，稳定性似乎不错，在这方面似乎有很好的口碑。至于性能，应该不是最好的，算是中规中矩的类型。 <br />　　Proxool的口碑似乎很好，不大见到负面的评价，从官方资料上来看，有许多有用的特性和特点，也是许多人推荐的。<br /></div><img src ="http://www.blogjava.net/bnlovebn/aggbug/352125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2011-06-12 13:51 <a href="http://www.blogjava.net/bnlovebn/archive/2011/06/12/352125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>error:java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource</title><link>http://www.blogjava.net/bnlovebn/archive/2007/09/12/144500.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Wed, 12 Sep 2007 07:16:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/09/12/144500.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/144500.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/09/12/144500.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/144500.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/144500.html</trackback:ping><description><![CDATA[<div><span style="font-size: 10pt; color: black"><span style="font-size: 10pt; color: black"><u><span style="font-size: 10pt; color: navy">java.lang.ClassNotFoundException</span></u><span style="font-size: 10pt; color: black">: org.apache.commons.dbcp.BasicDataSource</span><br />
很显然这是一个没有找到对应的类文件的异常。<br />
<span style="font-size: 10pt; color: black">还有两个包commons-pool.jar和commons-dbcp-1.2.1.jar需要引入到工程中。</span></span></span></div>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/144500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-09-12 15:16 <a href="http://www.blogjava.net/bnlovebn/archive/2007/09/12/144500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在你的struts应用中施展部分AJAX魔法(翻译)[转]</title><link>http://www.blogjava.net/bnlovebn/archive/2007/07/31/133607.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Tue, 31 Jul 2007 08:33:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/07/31/133607.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/133607.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/07/31/133607.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/133607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/133607.html</trackback:ping><description><![CDATA[<span style="COLOR: #00ff00; BACKGROUND-COLOR: #666699">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本文将介绍在JSP页面中包含一些JavaScript这样一个简单而有效的方法来结合AJAX和Struts。在此我们介绍如何重新使用已经存在的Struts actions，但此技术同样可用于你选择的其他Java-Web 框架。本方法同样可平移到Struts或者JSF的下一个版本。 <br></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AJAX是&#8220;异步的JavaScript和XML&#8221;的缩写。这是一项技术，而不是一个如Struts一样的框架。为什么在AJAX周围会有这么多的关注呢?这是因为AJAX使web页面看起来并不像一个平面的文档，而更像用户所期望的如桌面应用的动态GUI应用程序。AJAX技术能在很多的浏览器上使用(包括IE和Netscape/Mozilla)。它已经为Microsoft(用于Outlook的web客户端)和Google(用户Google Maps和Gmail)所使用。
<p>　　未使用AJAX之前</p>
<p>　　目前大多数的Struts应用都是标准的&#8220;如同一个平面文档的web页面&#8221;的结构。如果你想模仿一些桌面应用程序(比如那些使用<a href="http://dev.yesky.com/devjava/" target=_blank>Java</a> Swing，Visual Basic，或者Delphi建立的应用程序)，那么你有两个选择:你可以发送所有的可能作为页面的一部分被请求的信息，使用大量的JavaScript来操作其动态的显示(一个很慢并且非企业级Java的方法);或者你可以不改变形式地提交到后台服务器(一种有效的方法) 。AJAX提高给你了融合前面的最佳解决方案:动态的页面，但是大多数的应用是在你的web服务器的Java程序来处理的。</p>
<p>　　AJAX 101</p>
<p>　　AJAX和现有的动态HTML技术非常相似，并在其上增加了一个发送到&#8220;后台&#8221;服务器的请求来获取需要的新的或者更新的信息。AJAX的机制在其他地方已经有详细的说明――请查看本文后的Resources来获取更多。但是你至少需要知道:</p>
<ul>
    <li>　　1. XMLHttpRequest (如果你使用的是IE浏览器的话，则是Microsoft.XMLHTTP的ActiveX的对象)。这些对象，你可以在web页面中使用JavaScript调用。他们允许你作为后台的调用方式来请求web服务器的内容(例如，在表单提交后，屏幕并不像平时一样显示&#8220;空白&#8221;)。
    <li>　　2. XMLHttpRequest 和Microsoft.XMLHTTP 返回的内容可以作为XML或者文本来处理。JavaScript(在你页面上的)可以使用请求的新内容来更新页面。
    <li>　　3. 整个处理过程可以由普通的JavaScript事件来触发:onclick，onchange，onblur，等。</li>
</ul>
<p>　　在你的Struts应用中使用AJAX</p>
<p>　　你阅读了本文，然后你会对使用AJAX来创建动态的web页面感兴趣，并且想知道如何将它加入到你的Struts应用中。这只是选择之一。那么你会如何选择呢?</p>
<ul>
    <li>　　&#183; 等待，知道Struts的下一个版本融合了AJAX技术。如果Struts开发者准备开发一个新的应用，这或许会是一个好的选择。再后面，可能会是要求JSF也这样做――对其本身并不一件坏事，但是对于已经存在的系统这将会带来最根本的改变。
    <li>　　&#183; 你也可以直接采用新的方法，比如Direct Web Remoting (DWR) 和Ruby on Rails，这些都是专为建立AJAX应用的。如果你考虑不使用Struts来开发web的话，那么这些都是很又用的框架，并且值得一试。但是，这也同时意味着你必须要重写你的应用。
    <li>　　&#183; 在你已经存在的Struts应用中增加AJAX。既然AJAX只是一项技术而并非框架，那么它就很容易融入到Struts中。作为现有的系统，其稳定性(如，保持现有的库文件)是相当重要的。所以这个方法被推荐，并且我们将在后面详细介绍。</li>
</ul>
<p>　　我们选择在Struts应用中增加AJAX的优势是:</p>
<ul>
    <li>　　1. 它并不需要任何新的库文件或者服务器代码;只需要使用现有的Struts库文件和action。
    <li>　　2. 解决方案中所有部分――JavaScript，XML，Java和Struts――早已为广泛所知。
    <li>　　3. 此应用可以一块一块地移植到AJAX;我们可以确定哪些部分对用户有益，并首先将它们更新到动态AJAX显示。</li>
</ul>
<p>　　实现方案</p>
<p>　　我们如何真正的贯彻我们的选择呢?我们首先应该注意一个&#8220;标准的&#8221;(没有AJAX)Struts应用是如何工作的。在此应用中，一个一般的事件流程如下:</p>
<ul>
    <li>　　1. 使用点击超链接或者表单的提交按钮，用户发送请求。
    <li>　　2. web服务器运行处理请求的Struts Action来生成一个web页面。
    <li>　　3. 浏览器显示web页面。
    <li>　　4. 当用户点击保存的时候，信息由Struts框架中一个ActionForm类来转换并发送到服务器。
    <li>　　5. 然后，Struts框架调用Struts Action来出来请求(如，保存数据到数据库中)。
    <li>　　6. 页面再一次回传，处理流程继续。</li>
</ul>
<p>　　现有的Struts应用</p>
<p>　　一个演示事件流程的简单Struts应用可以在以下地址下载: <a href="http://sourceforge.net/project/showfiles.php?group_id=99476&amp;package_id=158438" target=_blank>struts-non-ajax.zip</a>。此基于Struts的应用，是基于用户的输入显示或者隐藏蓝色和绿色的表格。图1显示了载入初始页面的画面。图2显示了用户输入值并点击了提交后的画面。虽然简单，但它已经足以表示一个Struts的工作流程。</p>
<p><img src="http://searchwebservices.techtarget.com.cn/imagelist/06/04/w5xpm4gf26fg.jpg" border=0></p>
<p>　　图 1. 没有AJAX的例子:初始屏幕</p>
<p><img src="http://searchwebservices.techtarget.com.cn/imagelist/06/04/e1992717m03d.jpg" border=0></p>
<p>　　图 2. 没有AJAX的例子:输入值并点击了提交</p>
服务器端的代码是:一个Struts Action使用struts-config.xml 中定义的值转发到(相同的)JSP。这个例子代码中一些需要注意的地方是:
<ul>
    <li>　　&#183;struts-config.xml文件将所有的请求重定向到http://localhost:8080/struts-non-ajax/(或者和你自己的服务器相同)的index.jsp。
    <li>　　&#183; index.jsp 包含了一个两个文本框的Struts form(showBlue和showGreen)。该页面同样包含了标签，但是如同两个文本框被初始化为空，标签之间的内容并不显示。
    <li>　　&#183; 用户输入值(true或者false)并点击提交按钮，处理控制(经过Struts框架，读取struts-config.xml)提交到SampleAction类中。
    <li>　　&#183;SampleAction记录下值，然后转发到index.jsp。一个成熟的Struts应用可能会处理更多的事情，不如保存或者查询数据库等。
    <li>　　&#183; index.jsp 现在重新处理请求;如果ShowBlue或者ShowGreen的值是true，这些表格就显示出来。</li>
</ul>
<p>　　该应用并没有任何&#8220;错误&#8221;。类似的Struts项目好多年都是这样做的。但是，我们如何在不添加复杂的JavaScript或者频繁的表单提交的前提下，为此应用增加动态的元素呢?</p>
<p>　　我们的第一个Struts AJAX应用</p>
<p>　　观察下下面的图3和图4。第一眼看上去，它们和前面的例子没有说明区别。它们的不同之处在于，页面载入后(图3)然后文本框中的值改变了，窗体自动提交而不显示空白的，然后在图4中显示结果。普通的提交按钮仍然在，你也可以选择使用它。</p>
<p><img src="http://searchwebservices.techtarget.com.cn/imagelist/06/04/6s0y6u481893.jpg" border=0></p>
<p>　　图 3. 页面载入后的AJAX例子</p>
<p><img src="http://searchwebservices.techtarget.com.cn/imagelist/06/04/xc0k049x6hf0.jpg" border=0></p>
<p>　　图 4. AJAX调用后的AJAX例子</p>
<p>　　添加AJAX是出奇的容易。服务器端的代码和前面的例子是一样的: 一个Struts的ActionForm来后去数据，一个Struts的Action来执行需要的任务(例如，存储数据库)然后转发到适当的JSP页面来显示结果。</p>
<p>　　继续</p>
<p>　　如果你希望就此停止阅读(跳过这个例子的工作说明)，但是这里的是和你需要转换你的Struts应用到一个Struts-AJAX应用同样的风格:</p>
<ul>
    <li>　　1. 在你的web页面中引入一个Ajax.js (该文件是struts-ajax.zip 例文件中的一部分)。Ajax.js 包含了所有需要发送和接收AJAX调用的JavaScript方法。
    <li>　　2. 确保你希望在AJAX调用中更新的web页面的部分包含在标签中，并且给每个标签一个id。
    <li>　　3. 当一些事件触发的时候就更新页面(例如，文本框的the onchange()方法)，调用retrieveURL()方法，通过URL传递到需要执行服务器端处理的Struts Action。
    <li>　　4. 为了页面的显示/更新，最简单的方法是Struts Action转发回同样的页面。在本例中，showGreen/showBlue 文本框中的onchange()方法来触发AJAX调用。</li>
</ul>
<p>　　JavaScript方法retrieveURL()调用服务器的Struts(通过URL)，获取JSP响应，然后更新显示页面中的 标签中的部分。就是这么简单!</p>
<p>　　AJAX解决方案的细节</p>
<p>　　我们将例子变为AJAX-Struts应用的时候，需要三个变化:</p>
<ul>
    <li>　　1. 增加一个JavaScript方法来完成到服务器的&#8220;背后的&#8221;AJAX调用。
    <li>　　2. 增加JavaScript代码来接收服务器的响应并更新页面。
    <li>　　3. 在JSP页面增加标签标签，这个标签中内容将在AJAX调用中更新。</li>
</ul>
<p>　　我们将详细的说明上面的每一步。</p>
发送AJAX请求到服务器
<p>　　有两个方法(在下面列出)用于发送请求到服务器。</p>
<p>　　&#183; retrieveURL()方法获得服务器的URL和Struts form。URL用于使用AJAX，form的值用于传递到服务器。</p>
<p>　　&#183; getFormAsString()方法用于将retrieveURL()中form命名的值组装成查询字符串，并发送到服务器。</p>
<p>　　使用方法很简单，使用onclick()/onChange()事件来触发retrieveURL()更新显示。</p>
<p>　　在这两个方法中有一些有趣的东西。</p>
<p>　　在retrieveURL()方法中，req.onreadystatechange = processStateChange (注意，没有括号)这一行来告诉浏览器在服务器响应到达的时候调用processStateChange()方法(该方法将在后面介绍)。retrieveURL()方法中(现在已经是AJAX的标准了)同样决定是使用IE浏览器(ActiveX)还是使用Netscape/Mozilla (XmlHttpRequest) 来实现跨浏览器兼容。</p>
<p>　　getFormAsString()方法将HTML form转换成字符串连接在URL后面(这样就允许我们发送HTTP GET请求)。这个字符串是经过转换的(比如，空格转换成%20等)，并且是一个Struts能将其组装成ActionForm的格式(并不需要Struts清楚的明白这个是来之AJAX的请求)。注意，在本例中我们使用HTTP GET，使用HTTP POST的方法也是类似的。</p>
<p>function retrieveURL(url,nameOfFormToPost) {</p>
<p>//将url转换成字符串<br>url=url+getFormAsString(nameOfFormToPost);</p>
<p>//调用AJAX<br>if (window.XMLHttpRequest) { </p>
<p>// 非IE浏览器<br>req = new XMLHttpRequest();<br>req.onreadystatechange = processStateChange;<br>try {<br>req.open("GET", url, true); <br>} catch (e) {<br>alert("Server Communication Problem\n"+e);<br>}<br>req.send(null);<br>} else if (window.ActiveXObject) {<br>// IE</p>
<p>req = new ActiveXObject("Microsoft.XMLHTTP");<br>if (req) {<br>req.onreadystatechange=processStateChange;<br>req.open("GET", url, true);<br>req.send();<br>}<br>}<br>}</p>
<p>getFormAsString() 是一个&#8220;私有&#8221; 方法，在retrieveURL()中使用。</p>
<p>function getFormAsString(formName){</p>
<p>//设置返回字符串<br>returnString ="";</p>
<p>//取得表单的值<br>formElements=document.forms[formName].elements;</p>
<p>//循环数组，组装url<br>//像'/strutsaction.do&amp;name=value'这样的格式</p>
<p>for(var i=formElements.length-1;i&gt;=0; --i ){<br>//转化每一个值<br>returnString+="&amp;" <br>+escape(formElements[i].name)+"=" <br>+escape(formElements[i].value);<br>}</p>
<p>//返回字符串<br>return returnString; <br>}</p>
根据AJAX的响应更新web页面
<p>　　到现在为止，我们学习过了使用JavaScript来完成AJAX调用(前面列出)，Struts Action，ActionForm以及JSP(基本没有变化，只是增加了标签)。为了完善我们对Struts-AJAX项目的了解，我们需要了解三个用于根据服务器返回的结果而更新页面的JavaScript方法。</p>
<ul>
    <li>　　&#183; processStateChange(): 该方法在AJAX调用前设定。它在服务器响应到达后由XMLHttpRequest/Microsoft.XMLHTTP 对象调用。
    <li>　　&#183;splitTextIntoSpan(): 根据响应，循环取出数组中的元素组装成NewContent。
    <li>　　&#183;replaceExistingWithNewHtml(): 根据span元素数组，循环搜索，将里面的元素调换掉页面中和它的'someName'相同的中的内容。注意，我们使用的是req.responseText 方法来获得返回的内容(它允许我们操作任何文本的响应)。与此相对于的是req.responseXml (它的作用更大，但是要求服务器返回是XHTML或者XML)。</li>
</ul>
<p>function processStateChange() {</p>
<p>if (req.readyState == 4) { // 完成<br>if (req.status == 200) { // 响应正常</p>
<p>//将响应的文本分割成Span元素<br>spanElements = <br>splitTextIntoSpan(req.responseText);</p>
<p>//使用这些Span元素更新页面<br>replaceExistingWithNewHtml(spanElements);</p>
<p>} else {<br>alert("Problem with server response:\n " <br>+ req.statusText);<br>}<br>}<br>}<br>replaceExistingWithNewHtml() 是为processStateChange()使用的&#8220;私有&#8221;方法。</p>
<p>function replaceExistingWithNewHtml <br>(newTextElements){</p>
<p>//循环newTextElements<br>for(var i=newTextElements.length-1;i&gt;=0;--i){</p>
<p>//判断是否以 if(newTextElements[i]. <br>indexOf("-1){</p>
<p>//获得span的名字- 设置在第一和第二个引号之间<br>//确认span元素是以下的格式<br>//NewContent<br>startNamePos=newTextElements[i]. <br>indexOf('"')+1;<br>endNamePos=newTextElements[i]. <br>indexOf('"',startNamePos);<br>name=newTextElements[i]. <br>substring(startNamePos,endNamePos);</p>
<p>//获得内容－在第一个&gt;标记后的所有内容<br>startContentPos=newTextElements[i]. <br>indexOf('&gt;')+1; <br>content=newTextElements[i].<br>substring(startContentPos);</p>
<p>//现在更新现有的Document中的元素， <br>// 确保文档存在该元素<br>if(document.getElementById(name)){<br>document.getElementById(name). <br>innerHTML = content;<br>}<br>}<br>}<br>splitTextIntoSpan() 是为processStateChange() 使用的&#8220;私有&#8221;方法。<br>function splitTextIntoSpan(textToSplit){</p>
<p>//分割文档<br>returnElements=textToSplit. <br>split("")</p>
<p>//处理每个元素 <br>for(var i=returnElements.length-1;i&gt;=0;--i){</p>
<p>//删除掉第一个span后面的元素<br>spanPos = returnElements[i]. <br>indexOf(" </p>
<p>//如果找到匹配的，获得span前的内容<br>if(spanPos&gt;0){<br>subString=returnElements[i].<br>substring(spanPos);<br>returnElements[i]=subString;<br>} <br>}<br>return returnElements;<br>}</p>
<p>　　新的控制流</p>
<p>　　添加以下的JavaScript代码到我们的应用中，以下的步骤将在服务器和浏览器中执行。</p>
<ul>
    <li>　　1. 如同一个普通Struts应用装载页面。
    <li>　　2. 用户改变文本框的值，触发一个onChange() 事件，调用retrieveURL() 方法。
    <li>　　3. 该JavaScript方法通过发送Struts明白的表单变量(后台)请求到服务器的Struts Action。
    <li>　　4. 该JavaScript方法同样设定了第二个JavaScript方法的名字，此方法将到服务器响应完毕后调用。本例子中，设定为processStateChange() 方法。
    <li>　　5. 如我们所预期的，服务器响应完毕，调用processStateChange() 方法。
    <li>　　6. JavaScript在(新的)服务器响应中循环取出所有元素。将页面上存在与获得元素名字相同的 中的元素替换掉。</li>
</ul>
<p>　　在你的应用中设计AJAX</p>
<p>　　以上描述的JavaScript方法能在大多数的应用中使用，包括比我们的例子复杂得多的。但是，在使用之前，你需要注意以下几点:</p>
<p>　　&#183; 避免复制代码，最好在初始化请求(如，显示完整的页面)和AJAX(更新部分页面)请求中使用相同的Struts Action和JSP。</p>
<p>　　&#183;在公共的Action(控制器)中，决定JSP页面(所有的JSP页面或者其中的一部分)中的一个区域需要传送到浏览器。通过在web服务器的session或者ActionForm中设定标记来让JSP页面知道哪些部分需要提交。</p>
<p>　　&#183; 在JSP中，使用Struts 或者JSTL标签来决定提交的HTML区域。</p>
<p>　　使用AJAX的本例子，可以在以下下载: <a href="http://sourceforge.net/project/showfiles.php?group_id=99476&amp;package_id=158438" target=_blank>struts-Ajax.zip</a></p>
<p>　　结语</p>
<p>　　AJAX技术允许我们在创建和使用web应用的时候完全的改变。本文介绍了一个简单的技术，在现有的Struts应用中增加Struts的处理。它允许我们利用我们已有的东西，不仅仅是代码，还包括了开发的技能。作为一个好的产品，它同样允许我们写出更清晰，更具移植性的Java Struts应用。</p>
<p>版权声明：Techtarget获Matrix授权发布,如需转载请联系Matrix<br>作者:作者:Paul Browne;pawenwen(作者的blog:http://blog.matrix.org.cn/page/pawenwen)<br>译文:<a href="http://blog.matrix.org.cn/page/pawenwen?entry=%E5%9C%A8%E4%BD%A0%E7%9A%84struts%E5%BA%94%E7%94%A8%E4%B8%AD%E6%96%BD%E5%B1%95%E9%83%A8%E5%88%86ajax%E9%AD%94%E6%B3%95_%E7%BF%BB%E8%AF%91" target=_blank>点击</a></p>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/133607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-07-31 16:33 <a href="http://www.blogjava.net/bnlovebn/archive/2007/07/31/133607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在Servlet与JSP中取得当前文件所在的相对路径与绝对路径（路径相关）</title><link>http://www.blogjava.net/bnlovebn/archive/2007/07/27/132741.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 27 Jul 2007 04:23:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/07/27/132741.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/132741.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/07/27/132741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/132741.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/132741.html</trackback:ping><description><![CDATA[<p>&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><span style="COLOR: #000000">System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">根目录所对应的绝对路径:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;request.getServletPath()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>String&nbsp;strPathFile&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;request.getSession().getServletContext().getRealPath(request.getRequestURI());&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">文件的绝对路径:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;strPathFile&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>String&nbsp;strDirPath&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;File(request.getSession().getServletContext().getRealPath(request.getRequestURI())).getParent();&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">目录的绝对路径:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;strDirPath&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);&nbsp;<br>&nbsp;&nbsp;&nbsp; this.getServlet().getServletContext().getRealPath("/");//在struts的action中取得当前系统的根目录<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br>　举例：<a href="http://localhost:7001/myservlet/somepath/test?someparam=somevalue">http://localhost:7001/myservlet/somepath/test?someparam=somevalue</a><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>request.getPathInfo()：返回</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">somepath</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">test<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>request.getRequestURL()：返回http:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">localhost:7001/myservlet/somepath/test</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">request.getRequestURI()：返回</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">myservlet</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">somepath</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">test<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>request.getServletPath()：返回</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">myservlet<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>request.getQueryString()：返回someparam</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">somevalue<br>&nbsp;&nbsp;&nbsp; request.getContextPath();&nbsp; 返回项目名<u><font color=#0000ff>/myservlet</font></u></span></div>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/132741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-07-27 12:23 <a href="http://www.blogjava.net/bnlovebn/archive/2007/07/27/132741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts+FCKeditor修改读取的html文本</title><link>http://www.blogjava.net/bnlovebn/archive/2007/07/25/132216.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Wed, 25 Jul 2007 02:06:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/07/25/132216.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/132216.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/07/25/132216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/132216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/132216.html</trackback:ping><description><![CDATA[因为<span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean:write　默认的filter是true。表示把html敏感标签转换成转换成它们实体的等价物。如&lt;转换成&amp;lt。设为false则不转换。</span><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">FCK:editor&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="classContent"</span><span style="COLOR: #ff0000">&nbsp;basePath</span><span style="COLOR: #0000ff">="/ECR_WWW/FCKeditor/"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;width</span><span style="COLOR: #0000ff">="500"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;height</span><span style="COLOR: #0000ff">="500"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skinPath</span><span style="COLOR: #0000ff">="/ECR_WWW/FCKeditor/editor/skins/silver/"</span><span style="COLOR: #ff0000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean:write&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="articleAdminForm"</span><span style="COLOR: #ff0000">&nbsp;property</span><span style="COLOR: #0000ff">="classContent"</span><span style="COLOR: #ff0000">&nbsp;filter</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">FCK:editor</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/132216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-07-25 10:06 <a href="http://www.blogjava.net/bnlovebn/archive/2007/07/25/132216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FCKeditor2.4 JSP版使用[转] </title><link>http://www.blogjava.net/bnlovebn/archive/2007/07/24/132119.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Tue, 24 Jul 2007 09:58:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/07/24/132119.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/132119.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/07/24/132119.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/132119.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/132119.html</trackback:ping><description><![CDATA[<p>1.下载<br>FCKeditor2.3 (FCKeditot for java)<br>FCKeditor2.4 (FCKeditor基本文件)<br>以下是下载地址：<br><a href="http://www.fckeditor.net/download/default.html">http://www.fckeditor.net/download/default.html</a></p>
<p>2.建立项目:<br>建立项目tomcat/webapps/TestFCKeditor.</p>
<p>3.将FCKeditor2.4解压缩<br>将FCKeditor2.4解压缩,将整个目录FCKeditor复制到项目的根目录下，并将解压缩出来的文件夹fckeditor重命名为FCKeditor<br>目录结构为：tomcat/webapps/TestFCKeditor/FCKeditor<br>然后将FCKeditor-2.3.zip（java）压缩包中\web\WEB-INF\lib\目录下的两个jar文件拷到项目的\WEB-INF\ lib\目录下。把其中的src目录下的FCKeditor.tld文件copy到TestFCKedit/WEB-INF/下</p>
<p>4.合并web.xml:<br>将FCKeditor-2.3.zip压缩包中\web\WEB-INF\目录下的web.xml文件合并到项目的\WEB-INF\目录下的web.xml文件中。</p>
<p><br>5. 修改合并后的web.xml文件<br>修改合并后的web.xml文件，将名为SimpleUploader的Servlet的enabled参数值改为true，<br>以允许上传功能，Connector Servlet的baseDir参数值用于设置上传文件存放的位置。<br>在web.xml最后添加标签定义:</p>
<p>&lt;taglib&gt;<br>&nbsp;&nbsp;&nbsp; &lt;taglib-uri&gt;/TestFCKeditor&lt;/taglib-uri&gt;<br>&nbsp;&nbsp;&nbsp; &lt;taglib-location&gt;/WEB-INF/FCKeditor.tld&lt;/taglib-location&gt;<br>&nbsp;&lt;/taglib&gt;</p>
<p>现在的web.xml文件没有&lt;taglib&gt;标签了，应该直接在jsp文件中使用：&lt;%@ taglib uri="<a href="http://fckeditor.net/tags-fckeditor">http://fckeditor.net/tags-fckeditor</a>" prefix="FCK" %&gt;</p>
<p>&nbsp;</p>
<p>6. 映射:<br>上面文件中两个servlet的映射分别为：/editor/filemanager/browser/default/connectors/jsp/connector<br>和/editor/filemanager/upload/simpleuploader，需要在两个映射前面加上/FCKeditor，<br>即改为/FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector和<br>/FCKeditor/editor/filemanager/upload/simpleuploader。<br>这两个名字根据你放在工程中的FCKeditor文件夹名称而定。。</p>
<p><br>7.修改skin文件夹<br>进入skin文件夹，如果你想使用fckeditor默认的这种奶黄色，<br>那就把除了default文件夹外的另两个文件夹直接删除.（建议不删除，以后要用到其中的一个文件夹）</p>
<p>8.删除无用文件<br>删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文件以外的所有文件，保留文件夹editor<br>删除目录/editor/_source,<br>删除/editor/filemanager/browser/default/connectors/下的所有文件<br>删除/editor/filemanager/upload/下的所有文件<br>删除/editor/lang/下的除了fcklanguagemanager.js（我下载的没有这个文件）, en.js, zh.js, zh-cn.js四个文件的所有文件</p>
<p>9.修改配置：<br>打开/FCKeditor/fckconfig.js<br>修改 FCKConfig.DefaultLanguage = 'zh-cn' ;<br>把FCKConfig.LinkBrowserURL等的值替换成以下内容：<br>FCKConfig.LinkBrowserURL<br>= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;</p>
<p>FCKConfig.ImageBrowserURL<br>= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&amp;Connector=connectors/jsp/connector" ;</p>
<p>FCKConfig.FlashBrowserURL<br>= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&amp;Connector=connectors/jsp/connector" ;</p>
<p>FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;<br>FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;<br>FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;</p>
<p>10.其它<br>fckconfig.js总配置文件，可用记录本打开，修改后将文件存为utf-8 编码格式。找到：</p>
<p>FCKConfig.TabSpaces = 0 ; 改为FCKConfig.TabSpaces = 1 ; 即在编辑器域内可以使用Tab键。</p>
<p>如果你的编辑器还用在网站前台的话，比如说用于留言本或是日记回复时，那就不得不考虑安全了，<br>在前台千万不要使用Default的toolbar，要么自定义一下功能，要么就用系统已经定义好的Basic，<br>也就是基本的toolbar，找到：<br>FCKConfig.ToolbarSets["Basic"] = [<br>['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',<br>'Smiley','SpecialChar','Replace','Preview'] ] ;<br>这是改过的Basic，把图像功能去掉，把添加链接功能去掉，因为图像和链接和flash和图像按钮添加功能都能让前台<br>页直接访问和上传文件， fckeditor还支持编辑域内的鼠标右键功能。</p>
<p>FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',<br>/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;</p>
<p>这也是改过的把鼠标右键的&#8220;链接、图像，FLASH，图像按钮&#8221;功能都去掉。</p>
<p>　　找到： FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;<br>加上几种我们常用的字体<br>FCKConfig.FontNames<br>= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;</p>
<p><br>11.添加文件<br>添加文件 /TestFCKeditor/test.jsp:<br>&lt;%@ page language="java" import="com.fredck.FCKeditor.*" %&gt;<br>&lt;%@ taglib uri="/TestFCKeditor" prefix="FCK" %&gt;<br>&lt;script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"&gt;&lt;/script&gt;</p>
<p>&lt;%--<br>三种方法调用FCKeditor<br>1.FCKeditor自定义标签 (必须加头文件 &lt;%@ taglib uri="/TestFCKeditor" prefix="FCK" %&gt; )<br>2.script脚本语言调用 (必须引用 脚本文件 &lt;script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"&gt;&lt;/script&gt; )<br>3.FCKeditor API 调用 (必须加头文件 &lt;%@ page language="java" import="com.fredck.FCKeditor.*" %&gt; )<br>--%&gt;</p>
<p><br>//标签调用方式<br>&lt;%--<br>&lt;form action="show.jsp" method="post" target="_blank"&gt;<br>&lt;FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"<br>width="700"<br>height="500"<br>skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"<br>toolbarSet = "Default"<br>&gt;<br>input<br>&lt;/FCK:editor&gt;<br>&lt;input type="submit" value="Submit"&gt;<br>&lt;/form&gt;<br>--%&gt;</p>
<p><br>//JS调用方式<br>&lt;form action="show.jsp" method="post" target="_blank"&gt;<br>&lt;table border="0" width="700"&gt;&lt;tr&gt;&lt;td&gt;<br>&lt;textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px"&gt;input&lt;/textarea&gt;<br>&lt;script type="text/javascript"&gt;<br>var oFCKeditor = new FCKeditor('content') ;<br>oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;<br>oFCKeditor.Height = 400;<br>oFCKeditor.ToolbarSet = "Default" ;<br>oFCKeditor.ReplaceTextarea();<br>&lt;/script&gt;<br>&lt;input type="submit" value="Submit"&gt;<br>&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<br>&lt;/form&gt;</p>
<p><br>//FCKeditor API 调用<br>&lt;%--<br>&lt;form action="show.jsp" method="post" target="_blank"&gt;<br>&lt;%<br>FCKeditor oFCKeditor ;<br>oFCKeditor = new FCKeditor( request, "content" ) ;<br>oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;<br>oFCKeditor.setValue( "input" );<br>out.println( oFCKeditor.create() ) ;<br>%&gt;<br>&lt;br&gt;<br>&lt;input type="submit" value="Submit"&gt;<br>&lt;/form&gt;<br>--%&gt;</p>
<p>添加文件/TestFCKeditor/show.jsp:<br>&lt;%<br>String content = request.getParameter("content");<br>out.print(content);<br>%&gt;</p>
<p>&nbsp;</p>
<p><br>12.测试<br>浏览<a href="http://localhost:8080/TestFCKeditor/test.jsp">http://localhost:8080/TestFCKeditor/test.jsp</a> </p>
<p><br>最后注意。。不同的版本 变量名称可能不一样。请参考你使用的API文档</p>
<p>配置选项:</p>
<p>AutoDetectLanguage=true/false 自动检测语言<br>BaseHref="" 相对链接的基地址<br>ContentLangDirection="ltr/rtl" 默认文字方向<br>ContextMenu=字符串数组,右键菜单的内容<br>CustomConfigurationsPath="" 自定义配置文件路径和名称<br>Debug=true/false 是否开启调试功能,这样,当调用FCKDebug.Output()时,会在调试窗中输出内容<br>DefaultLanguage="" 缺省语言<br>EditorAreaCss="" 编辑区的样式表文件<br>EnableSourceXHTML=true/false 为TRUE时,当由可视化界面切换到代码页时,把HTML处理成XHTML<br>EnableXHTML=true/false 是否允许使用XHTML取代HTML<br>FillEmptyBlocks=true/false 使用这个功能,可以将空的块级元素用空格来替代<br>FontColors="" 设置显示颜色拾取器时文字颜色列表<br>FontFormats="" 设置显示在文字格式列表中的命名<br>FontNames="" 字体列表中的字体名<br>FontSizes="" 字体大小中的字号列表<br>ForcePasteAsPlainText=true/false 强制粘贴为纯文本<br>ForceSimpleAmpersand=true/false 是否不把&amp;符号转换为XML实体<br>FormatIndentator="" 当在源码格式下缩进代码使用的字符<br>FormatOutput=true/false 当输出内容时是否自动格式化代码<br>FormatSource=true/false 在切换到代码视图时是否自动格式化代码<br>FullPage=true/false 是否允许编辑整个HTML文件,还是仅允许编辑BODY间的内容<br>GeckoUseSPAN=true/false 是否允许SPAN标记代替B,I,U标记<br>IeSpellDownloadUrl=""下载拼写检查器的网址<br>ImageBrowser=true/false 是否允许浏览服务器功能<br>ImageBrowserURL="" 浏览服务器时运行的URL<br>ImageBrowserWindowHeight="" 图像浏览器窗口高度<br>ImageBrowserWindowWidth="" 图像浏览器窗口宽度<br>LinkBrowser=true/false 是否允许在插入链接时浏览服务器<br>LinkBrowserURL="" 插入链接时浏览服务器的URL<br>LinkBrowserWindowHeight=""链接目标浏览器窗口高度<br>LinkBrowserWindowWidth=""链接目标浏览器窗口宽度<br>Plugins=object 注册插件<br>PluginsPath="" 插件文件夹<br>ShowBorders=true/false 合并边框<br>SkinPath="" 皮肤文件夹位置<br>SmileyColumns=12 图符窗列数<br>SmileyImages=字符数组 图符窗中图片文件名数组<br>SmileyPath="" 图符文件夹路径<br>SmileyWindowHeight 图符窗口高度<br>SmileyWindowWidth 图符窗口宽度<br>SpellChecker="ieSpell/Spellerpages" 设置拼写检查器<br>StartupFocus=true/false 开启时FOCUS到编辑器<br>StylesXmlPath="" 设置定义CSS样式列表的XML文件的位置<br>TabSpaces=4 TAB键产生的空格字符数<br>ToolBarCanCollapse=true/false 是否允许展开/折叠工具栏<br>ToolbarSets=object 允许使用TOOLBAR集合<br>ToolbarStartExpanded=true/false 开启是TOOLBAR是否展开<br>UseBROnCarriageReturn=true/false 当回车时是产生BR标记还是P或者DIV标记</p>
<p>解决上传乱码:<br>在SimpleUploaderServlet.java和ConnectorServlet.java两个文件里找到<br>DiskFileUpload upload = new DiskFileUpload();<br>分别在其后加入 upload.setHeaderEncoding("utf-8");<br>这样解决了文件上传的中文乱码问题.<br>但是在控制台显示的中文内容还是乱码,但是没关系,我们没必要去看控制台下的中文</p>
<p>----------------------------------------------------------------another<br>FCKeditor2.4.2 Java版使用说明<br>下载地址以及基本配置请参考：<a href="http://hi.baidu.com/wain19/blog/item/c33fb0fab74f24dfb48f312d.html">http://hi.baidu.com/wain19/blog/item/c33fb0fab74f24dfb48f312d.html</a></p>
<p>我的开发环境是ubuntu7.04, 系统默认编码是utf-8, <br>期间，本人遇到了下面这些问题：</p>
<p>问题一：XML request error: Internel Server Error(500)</p>
<p>出现错误的地方是在：点插入图片，点Browse按钮的时候：<br>XML request error: Internel Server Error(500)</p>
<p>找资料：<a href="http://lamono.javaeye.com/blog/49135">http://lamono.javaeye.com/blog/49135</a><br>拷贝xalan.jar和serialize.jar到/WEB-INF/lib，问题解决。</p>
<p>FCKeditor-java没有很好的解决中文问题。需要我们修改它的源代码后重新编译打包。打包过程如下：<br>1。 新建一个web工程名字为FCKeditor-java-2.3，然后把FCKeditor-2.3-java.zip解压缩后的代码拷贝到工程目录下。<br>2。如果是用的Eclipse,使用快捷键Ctrl+Shift+R<br>在SimpleUploaderServlet.java和ConnectorServlet.java两个文件里找到<br>DiskFileUpload upload = new DiskFileUpload();<br>分别在其后加入 upload.setHeaderEncoding("utf-8");<br>现在如果直接运行ant任务，会报下面的错误：<br>taskdef class org.apache.catalina.ant.DeployTask cannot be found</p>
<p>3。 把tomcat安装目录下/server/lib中的catalina-ant.jar拷贝到/WEB-INF/lib目录 下。<br>4。 打开build.xml<br>找到<br>&lt;property name="catalina.home"<br>修改成你自己的tomcat安装目录<br>&lt;property name="catalina.home"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value="/home/uniquejava/tool/tomcat5028/"/&gt;<br>找到<br>&lt;taskdef name="deploy"<br>修改成如下内容<br>&nbsp;&nbsp;&nbsp;&nbsp; &lt;taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;classpath refid="compile.classpath"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/classpath&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/taskdef&gt;<br>&nbsp;&nbsp;&nbsp; &lt;taskdef name="list" classname="org.apache.catalina.ant.ListTask"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;classpath refid="compile.classpath"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/classpath&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/taskdef&gt;<br>&nbsp;&nbsp;&nbsp; &lt;taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;classpath refid="compile.classpath"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/classpath&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/taskdef&gt;<br>&nbsp;&nbsp;&nbsp; &lt;taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;classpath refid="compile.classpath"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/classpath&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/taskdef&gt;</p>
<p>运行ant任务dist, 就可以生成新的FCKeditor-2.3.jar包</p>
<p>问题三： 上传时新建的中文目录全部乱码。 虽然上传到服务器上的文件名正常，但在JSP页面点下载链接时文件名乱码导致不能正常下载。</p>
<p>查找资料：TOMCAT 链接参数有中文时，乱码解决方法<br><a href="http://hi.baidu.com/jadestone/blog/item/7564deefc9192d36acafd5be.html">http://hi.baidu.com/jadestone/blog/item/7564deefc9192d36acafd5be.html</a><br>修改tomcat-home/conf/server.xml<br>方法一:<br>在两处地方加上URIEncoding="utf-8"：<br>&nbsp;&nbsp;&nbsp; &lt;Connector port="8080"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="100"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; debug="0" connectionTimeout="20000" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; disableUploadTimeout="true" URIEncoding="utf-8" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &lt;Connector port="8009" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" debug="0"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protocol="AJP/1.3" URIEncoding="utf-8" /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>方法二:<br>使用useBodyEncodingForURI="true". 这个方法适合你的TOMCAT实例下需要跑多个不同Encoding的程序时。（有点怀疑？！）<br>&lt;... maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" acceptCount="100"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true" /&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" protocol="AJP/1.3" useBodyEncodingForURI="true" /</p>
<p>我只试了方法一，问题解决！</p>
<p>这样, FCKeditor终于可以正常使用了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。<br>=================================================================<br>以下为个人原创 <a href="http://blog.csdn.net/nickshen3/">http://blog.csdn.net/nickshen3/</a><br>怎么将FCKeditor2.4使用在自己的web中。<br>1. 在webapps创建test文件夹。webapps\test<br>2. 将下载的FCKeditor2.3的Java包FCKeditor-2.3.zip解压缩，并将web文件夹下的两个文件夹_samples，WEB-INF拷贝到刚才建立的webapps\test下。再将src文件夹下的FCKeditor.tld拷贝到WEB-INF下。<br>3. 在webapps\test\下建立文件夹FCKeditor 。<br>4. 将刚才下载的 FCKeditor_2.4.3.zip 解压缩，然后将fckeditor文件夹下的 editor（文件夹）,fckconfig.js,fckeditor.js,fckstyles.xml,fcktemplates.xml。四个文件拷贝到刚才建立的文件夹FCKeditor下。<br>5.修改test\_samples\jsp\sample02.jsp文件，将原来的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;FCK:editor id="EditorDefault" basePath="/FCKeditor/"<br>改为&lt;FCK:editor id="EditorDefault" basePath="/test/FCKeditor/"。以后使用的时候只需将test换成项目的名称即可。<br>6.打开tomcat。测试<a href="http://localhost:8080/test/_samples/jsp/sample02.jsp">Http://localhost:8080/test/_samples/jsp/sample02.jsp</a>。<br>ok。<br><br>另外 ： &nbsp;<a href="http://www.blogjava.net/youxia/archive/2007/03/15/104077.html"><font color=#000080>http://www.blogjava.net/youxia/archive/2007/03/15/104077.html</font></a>&nbsp;</p>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/132119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-07-24 17:58 <a href="http://www.blogjava.net/bnlovebn/archive/2007/07/24/132119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用过滤器(Filter)对请求做统一的认证处理</title><link>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128019.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Wed, 04 Jul 2007 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128019.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/128019.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/128019.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/128019.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Filter有要实现的三方法：void init(FilterConfig config) throws ServletExceptionvoid doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletExceptionvoid destroy...&nbsp;&nbsp;<a href='http://www.blogjava.net/bnlovebn/archive/2007/07/04/128019.html'>阅读全文</a><img src ="http://www.blogjava.net/bnlovebn/aggbug/128019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-07-04 09:31 <a href="http://www.blogjava.net/bnlovebn/archive/2007/07/04/128019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态WEB应用中的用户SESSION管理方案</title><link>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128006.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Wed, 04 Jul 2007 00:59:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128006.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/128006.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128006.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/128006.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/128006.html</trackback:ping><description><![CDATA[<p>要有这么一个监听器，当加入session时就可以触发一个加入session事件，在session过期时就可以触发一个删除事件，那么我们的把要处理的东西加入到这两个事件中就可以做很多于SESSION相关连的事。如在线用户的管理，单点登陆等等。<br>在J2EE中可以实现HttpSessionBindingListener接口，此接口有两要实现的方法。<br>&nbsp;void valueBound(HttpSessionBindingEvent event) 当实现此接口的监听类和session绑定时触发此事件。<br>void valueUnbound(HttpSessionBindingEvent event) 当session过期或实现此接口的监听类卸裁时触发此事件。<br><br>下面是一个示例解决方案：可以把登陆用户的信息记录在缓冲池中，当SESSION过期时，用户信息自动删除。<br>一个用户信息接口。一个用户缓冲池。一个HttpSessionBindingListener接口的监听类。<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Codehighlighter1_34_35_Open_Image onclick="this.style.display='none'; Codehighlighter1_34_35_Open_Text.style.display='none'; Codehighlighter1_34_35_Closed_Image.style.display='inline'; Codehighlighter1_34_35_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_34_35_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_34_35_Closed_Text.style.display='none'; Codehighlighter1_34_35_Open_Image.style.display='inline'; Codehighlighter1_34_35_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000">&nbsp;LoginUserMessage&nbsp;</span><span id=Codehighlighter1_34_35_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"></span><span id=Codehighlighter1_34_35_Open_Text><span style="COLOR: #000000">{}</span></span></div>
<p>&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 id=Codehighlighter1_27_797_Open_Image onclick="this.style.display='none'; Codehighlighter1_27_797_Open_Text.style.display='none'; Codehighlighter1_27_797_Closed_Image.style.display='inline'; Codehighlighter1_27_797_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_27_797_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_27_797_Closed_Text.style.display='none'; Codehighlighter1_27_797_Open_Image.style.display='inline'; Codehighlighter1_27_797_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;LoginUserPool&nbsp;</span><span id=Codehighlighter1_27_797_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"></span><span id=Codehighlighter1_27_797_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;Map&nbsp;map&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;HashMap();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;LoginUserPool&nbsp;loginUserPool&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;LoginUserPool();<br><img id=Codehighlighter1_163_164_Open_Image onclick="this.style.display='none'; Codehighlighter1_163_164_Open_Text.style.display='none'; Codehighlighter1_163_164_Closed_Image.style.display='inline'; Codehighlighter1_163_164_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_163_164_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_163_164_Closed_Text.style.display='none'; Codehighlighter1_163_164_Open_Image.style.display='inline'; Codehighlighter1_163_164_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;LoginUserPool()</span><span id=Codehighlighter1_163_164_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"></span><span id=Codehighlighter1_163_164_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_209_236_Open_Image onclick="this.style.display='none'; Codehighlighter1_209_236_Open_Text.style.display='none'; Codehighlighter1_209_236_Closed_Image.style.display='inline'; Codehighlighter1_209_236_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_209_236_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_209_236_Closed_Text.style.display='none'; Codehighlighter1_209_236_Open_Image.style.display='inline'; Codehighlighter1_209_236_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;LoginUserPool&nbsp;getInstance()&nbsp;</span><span id=Codehighlighter1_209_236_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"></span><span id=Codehighlighter1_209_236_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;loginUserPool;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_325_405_Open_Image onclick="this.style.display='none'; Codehighlighter1_325_405_Open_Text.style.display='none'; Codehighlighter1_325_405_Closed_Image.style.display='inline'; Codehighlighter1_325_405_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_325_405_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_325_405_Closed_Text.style.display='none'; Codehighlighter1_325_405_Open_Image.style.display='inline'; Codehighlighter1_325_405_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;addLoginUserMessage(String&nbsp;sessionId,LoginUserMessage&nbsp;loginUserMessage)</span><span id=Codehighlighter1_325_405_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"></span><span id=Codehighlighter1_325_405_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.remove(sessionId);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map.put(sessionId,loginUserMessage);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_475_539_Open_Image onclick="this.style.display='none'; Codehighlighter1_475_539_Open_Text.style.display='none'; Codehighlighter1_475_539_Closed_Image.style.display='inline'; Codehighlighter1_475_539_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_475_539_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_475_539_Closed_Text.style.display='none'; Codehighlighter1_475_539_Open_Image.style.display='inline'; Codehighlighter1_475_539_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;LoginUserMessage&nbsp;removeLoginUserMessage(String&nbsp;sessionId)</span><span id=Codehighlighter1_475_539_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"></span><span id=Codehighlighter1_475_539_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;(LoginUserMessage)&nbsp;map.remove(sessionId);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_606_666_Open_Image onclick="this.style.display='none'; Codehighlighter1_606_666_Open_Text.style.display='none'; Codehighlighter1_606_666_Closed_Image.style.display='inline'; Codehighlighter1_606_666_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_606_666_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_606_666_Closed_Text.style.display='none'; Codehighlighter1_606_666_Open_Image.style.display='inline'; Codehighlighter1_606_666_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;LoginUserMessage&nbsp;getLoginUserMessage(String&nbsp;sessionId)</span><span id=Codehighlighter1_606_666_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"></span><span id=Codehighlighter1_606_666_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;(LoginUserMessage)&nbsp;map.get(sessionId);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_705_728_Open_Image onclick="this.style.display='none'; Codehighlighter1_705_728_Open_Text.style.display='none'; Codehighlighter1_705_728_Closed_Image.style.display='inline'; Codehighlighter1_705_728_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_705_728_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_705_728_Closed_Text.style.display='none'; Codehighlighter1_705_728_Open_Image.style.display='inline'; Codehighlighter1_705_728_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;Map&nbsp;getLoginUserMessages()</span><span id=Codehighlighter1_705_728_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"></span><span id=Codehighlighter1_705_728_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;map;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_758_795_Open_Image onclick="this.style.display='none'; Codehighlighter1_758_795_Open_Text.style.display='none'; Codehighlighter1_758_795_Closed_Image.style.display='inline'; Codehighlighter1_758_795_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_758_795_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_758_795_Closed_Text.style.display='none'; Codehighlighter1_758_795_Open_Image.style.display='inline'; Codehighlighter1_758_795_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000">&nbsp;isEmpty()</span><span id=Codehighlighter1_758_795_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"></span><span id=Codehighlighter1_758_795_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;map.isEmpty();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p>&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 id=Codehighlighter1_68_1565_Open_Image onclick="this.style.display='none'; Codehighlighter1_68_1565_Open_Text.style.display='none'; Codehighlighter1_68_1565_Closed_Image.style.display='inline'; Codehighlighter1_68_1565_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_68_1565_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_1565_Closed_Text.style.display='none'; Codehighlighter1_68_1565_Open_Image.style.display='inline'; Codehighlighter1_68_1565_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;UserLoginListener&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;HttpSessionBindingListener</span><span id=Codehighlighter1_68_1565_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"></span><span id=Codehighlighter1_68_1565_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">final</span><span style="COLOR: #000000">&nbsp;Log&nbsp;logger&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;LogFactory.getLog(getClass());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;String&nbsp;sessionId&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;LoginUserMessage&nbsp;loginUserMessage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;LoginUserPool&nbsp;loginUserPool&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;LoginUserPool.getInstance();<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_345_384_Open_Image onclick="this.style.display='none'; Codehighlighter1_345_384_Open_Text.style.display='none'; Codehighlighter1_345_384_Closed_Image.style.display='inline'; Codehighlighter1_345_384_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_345_384_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_345_384_Closed_Text.style.display='none'; Codehighlighter1_345_384_Open_Image.style.display='inline'; Codehighlighter1_345_384_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;LoginUserMessage&nbsp;getLoginUserMessage()&nbsp;</span><span id=Codehighlighter1_345_384_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"></span><span id=Codehighlighter1_345_384_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;loginUserMessage;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_457_513_Open_Image onclick="this.style.display='none'; Codehighlighter1_457_513_Open_Text.style.display='none'; Codehighlighter1_457_513_Closed_Image.style.display='inline'; Codehighlighter1_457_513_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_457_513_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_457_513_Closed_Text.style.display='none'; Codehighlighter1_457_513_Open_Image.style.display='inline'; Codehighlighter1_457_513_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setLoginUserMessage(LoginUserMessage&nbsp;loginUserMessage)&nbsp;</span><span id=Codehighlighter1_457_513_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"></span><span id=Codehighlighter1_457_513_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.loginUserMessage&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;loginUserMessage;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_548_580_Open_Image onclick="this.style.display='none'; Codehighlighter1_548_580_Open_Text.style.display='none'; Codehighlighter1_548_580_Closed_Image.style.display='inline'; Codehighlighter1_548_580_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_548_580_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_548_580_Closed_Text.style.display='none'; Codehighlighter1_548_580_Open_Image.style.display='inline'; Codehighlighter1_548_580_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;String&nbsp;getSessionId()&nbsp;</span><span id=Codehighlighter1_548_580_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"></span><span id=Codehighlighter1_548_580_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;sessionId;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_629_671_Open_Image onclick="this.style.display='none'; Codehighlighter1_629_671_Open_Text.style.display='none'; Codehighlighter1_629_671_Closed_Image.style.display='inline'; Codehighlighter1_629_671_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_629_671_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_629_671_Closed_Text.style.display='none'; Codehighlighter1_629_671_Open_Image.style.display='inline'; Codehighlighter1_629_671_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;setSessionId(String&nbsp;sessionId)&nbsp;</span><span id=Codehighlighter1_629_671_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"></span><span id=Codehighlighter1_629_671_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.sessionId&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sessionId;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_677_813_Open_Image onclick="this.style.display='none'; Codehighlighter1_677_813_Open_Text.style.display='none'; Codehighlighter1_677_813_Closed_Image.style.display='inline'; Codehighlighter1_677_813_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_677_813_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_677_813_Closed_Text.style.display='none'; Codehighlighter1_677_813_Open_Image.style.display='inline'; Codehighlighter1_677_813_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_677_813_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_677_813_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;(non-Javadoc)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;javax.servlet.http.HttpSessionBindingListener#valueBound(javax.servlet.http.HttpSessionBindingEvent)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_873_1155_Open_Image onclick="this.style.display='none'; Codehighlighter1_873_1155_Open_Text.style.display='none'; Codehighlighter1_873_1155_Closed_Image.style.display='inline'; Codehighlighter1_873_1155_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_873_1155_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_873_1155_Closed_Text.style.display='none'; Codehighlighter1_873_1155_Open_Image.style.display='inline'; Codehighlighter1_873_1155_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;valueBound(HttpSessionBindingEvent&nbsp;event)&nbsp;</span><span id=Codehighlighter1_873_1155_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"></span><span id=Codehighlighter1_873_1155_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_964_1109_Open_Image onclick="this.style.display='none'; Codehighlighter1_964_1109_Open_Text.style.display='none'; Codehighlighter1_964_1109_Closed_Image.style.display='inline'; Codehighlighter1_964_1109_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_964_1109_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_964_1109_Closed_Text.style.display='none'; Codehighlighter1_964_1109_Open_Image.style.display='inline'; Codehighlighter1_964_1109_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getLoginUserMessage()&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_964_1109_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"></span><span id=Codehighlighter1_964_1109_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loginUserPool.addLoginUserMessage(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getSessionId(),</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.getLoginUserMessage());<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">用户信息加入缓存池成功</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.setLoginUserMessage(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img id=Codehighlighter1_1162_1300_Open_Image onclick="this.style.display='none'; Codehighlighter1_1162_1300_Open_Text.style.display='none'; Codehighlighter1_1162_1300_Closed_Image.style.display='inline'; Codehighlighter1_1162_1300_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1162_1300_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1162_1300_Closed_Text.style.display='none'; Codehighlighter1_1162_1300_Open_Image.style.display='inline'; Codehighlighter1_1162_1300_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1162_1300_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_1162_1300_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;(non-Javadoc)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;@see&nbsp;javax.servlet.http.HttpSessionBindingListener#valueUnbound(javax.servlet.http.HttpSessionBindingEvent)<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_1362_1562_Open_Image onclick="this.style.display='none'; Codehighlighter1_1362_1562_Open_Text.style.display='none'; Codehighlighter1_1362_1562_Closed_Image.style.display='inline'; Codehighlighter1_1362_1562_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1362_1562_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1362_1562_Closed_Text.style.display='none'; Codehighlighter1_1362_1562_Open_Image.style.display='inline'; Codehighlighter1_1362_1562_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;valueUnbound(HttpSessionBindingEvent&nbsp;event)&nbsp;</span><span id=Codehighlighter1_1362_1562_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"></span><span id=Codehighlighter1_1362_1562_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;TODO&nbsp;Auto-generated&nbsp;method&nbsp;stub</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_1443_1556_Open_Image onclick="this.style.display='none'; Codehighlighter1_1443_1556_Open_Text.style.display='none'; Codehighlighter1_1443_1556_Closed_Image.style.display='inline'; Codehighlighter1_1443_1556_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1443_1556_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1443_1556_Closed_Text.style.display='none'; Codehighlighter1_1443_1556_Open_Image.style.display='inline'; Codehighlighter1_1443_1556_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">loginUserPool.isEmpty())</span><span id=Codehighlighter1_1443_1556_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"></span><span id=Codehighlighter1_1443_1556_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loginUserPool.removeLoginUserMessage(sessionId);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">用户信息从缓存池中移除成功</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
<p><br>这样子的话，当在应用中把userLoginListener加入到session中时，就会自动把用户信息加入到缓冲池中了。<br>如：<br>&nbsp;session.setAttribute("userLoginListener",userLoginListener);<br><br><br><br>（原创，转载请保留文章出处<a id=Editor_Edit_hlEntryLink title="view: 动态WEB应用中的用户SESSION管理方案" href="http://www.blogjava.net/bnlovebn/archive/2007/07/04/128006.html" target=_blank><u><font color=#810081>http://www.blogjava.net/bnlovebn/archive/2007/07/04/128006.html</font></u></a>）<br><br><br></p>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/128006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-07-04 08:59 <a href="http://www.blogjava.net/bnlovebn/archive/2007/07/04/128006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP文件下载的几种方式</title><link>http://www.blogjava.net/bnlovebn/archive/2007/02/12/99431.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Mon, 12 Feb 2007 05:41:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/02/12/99431.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/99431.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/02/12/99431.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/99431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/99431.html</trackback:ping><description><![CDATA[
		<span id="Codehighlighter1_36_1003_Open_Text">
		</span>１。最直接最简单的，方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了，并且还无法对文件下载进行其它的控制（如权限）。这个就不写示例了。<br />２。在服务器端把文件转换成输出流，写入到response，以response把文件带到浏览器，由浏览器来提示用户是否愿意保存文件到本地。（示例如下）<br /><span id="Codehighlighter1_7_640_Open_Text"></span><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000"><br /> response.setContentType(fileminitype);<br /> response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Location</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,filename);<br /> response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cache-Control</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">max-age=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> cacheTime);<br /> response.setHeader(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Content-Disposition</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">attachment; filename=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">filename应该是编码后的(utf-8)</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"> response.setContentLength(filelength);<br /> OutputStream outputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> response.getOutputStream();<br /> InputStream inputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileInputStream(filepath);<br /> </span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[] buffer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">1024</span><span style="COLOR: #000000">];<br /> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br /> </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> inputStream.read(buffer)) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) {<br />  outputStream.write(buffer, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">, i);<br />  }<br /> outputStream.flush();<br /> outputStream.close();<br /> inputStream.close();<br /> outputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><br /></span><span style="COLOR: #000000">%&gt;</span></div><br />３。既然是JSP的话，还有一种方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序，由这个程序来接受由servlet发送来的数据流，并写入到本地。<br />servlet端示例<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> service(HttpServletRequest req, HttpServletResponse res)<br />            </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> ServletException, IOException {<br />        res.setContentType(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> text/plain </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />        OutputStream outputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            outputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> res.getOutputStream();<br />            popFile(srcFile, outputStream)) ;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">把文件路径为srcFile的文件写入到outputStream中。</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException e) {<br />            e.printStackTrace();<br />        }<br />    } </span></div><br />JApplet端示例 <br /><span id="Codehighlighter1_36_1002_Open_Text"></span><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">   URLConnection con;<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            con </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> url.openConnection();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">url是被调用的SERVLET的网址 如http:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">localhost:8080/sendDateSevlet.do  </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">            con.setUseCaches(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);<br />            con.setDoInput(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />            con.setDoOutput(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />            con.setRequestProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Content-Type</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />                </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">application/octet-stream</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            InputStream in </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> con.getInputStream();<br />            ProgressMonitorInputStream pmInputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ProgressMonitorInputStream(<br />                    pane, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">正在从服务器下载文件内容</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, in);<br />            ProgressMonitor pMonitor </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> pmInputStream<br />                    .getProgressMonitor();<br />            pMonitor.setMillisToDecideToPopup(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br />            pMonitor.setMillisToPopup(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br />            String localfilepath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> localstr </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename ;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">localfilepath本地路径,localstr文件文件夹，filename本地文件名</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">   　　</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(saveFilsaveFilee(localfilepath,pmInputStream)){　</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法saveFilsaveFilee是把输入流pmInputStream写到文件localfilepath中。                    </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">　　　　　openLocalFile(localfilepath);<br />            }</span></div><p><br /><span id="Codehighlighter1_36_955_Open_Text"></span><br />４。顺便把JApplet上传文件的代码也贴上来.<br />JApplet端示例 </p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">URLConnection con;<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            con </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> url.openConnection();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">url是被调用的SERVLET的网址 如http:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">localhost:8080/sendDateSevlet.do         </span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">　　   con.setUseCaches(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);<br />            con.setDoInput(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />            con.setDoOutput(</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />            con.setRequestProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Content-Type</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,<br />                </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">application/octet-stream</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            <br />            OutputStream out </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> con.getOutputStream();<br />            String localfilepath </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> localstr </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> filename; </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">localfilepath本地路径,localstr文件文件夹，filename本地文件名</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">            getOutputStream(localfilepath,out);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">文件getOutputStream是把文件localfilepath写到输出流out中。</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">            InputStream in </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> con.getInputStream();<br />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br />        }</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException e) {<br />               System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">文件上传出错！</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />            e.printStackTrace();<br />        }<br /></span></div><br />servlet端代码示例<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> service(HttpServletRequest req, HttpServletResponse res)<br />            </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> ServletException, IOException {<br />        res.setContentType(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> text/plain </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />        InputStream inputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            inputStream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> res.getInputStream();<br />            writefile(srcFile, inputStream);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">把输入流inputStream保存到文件路径为srcFile的文件中</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (IOException e) {<br />            e.printStackTrace();<br />        }<br />    } </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> end service<br /></span></div><br /> 总结：在文件的传输中是流的形式存在的，在硬盘上是文件的形式存在的。我们要做的只是通过HttpServletRequest和HttpServletResponse，或者是response和request来发送流和读取流。以及把文件转换成流或把流转换成文件的操作。<img src ="http://www.blogjava.net/bnlovebn/aggbug/99431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-02-12 13:41 <a href="http://www.blogjava.net/bnlovebn/archive/2007/02/12/99431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp文件上传的处理</title><link>http://www.blogjava.net/bnlovebn/archive/2007/01/22/95254.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Mon, 22 Jan 2007 03:42:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2007/01/22/95254.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/95254.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2007/01/22/95254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/95254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/95254.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: jsp文件上传大多采用采用开源项目来简化处理，这里列出常用的两个jar包的实现，并进行比较，说明他们的优缺点和应该注意的问题。												Commons FileUpload，可以在http://jakarta.apache.org/commons/fileupload/下载，这个包需要Commons IO的支持，可以在http://jakarta.apache.org/commo...&nbsp;&nbsp;<a href='http://www.blogjava.net/bnlovebn/archive/2007/01/22/95254.html'>阅读全文</a><img src ="http://www.blogjava.net/bnlovebn/aggbug/95254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2007-01-22 11:42 <a href="http://www.blogjava.net/bnlovebn/archive/2007/01/22/95254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse中classpath和link配制总结</title><link>http://www.blogjava.net/bnlovebn/archive/2006/12/21/89295.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Thu, 21 Dec 2006 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/12/21/89295.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/89295.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/12/21/89295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/89295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/89295.html</trackback:ping><description><![CDATA[      在eclipse中要想正确的运行应用程序，首先要做的就是把相关的类库，类文件包含进来，以及其它配制文件link进来。<br /><br />      在eclipse中可以非常方便的做到。<br /><br />      在工程文件目录中点右键，打开“构建路径”——&gt;“配制构建路径”，就可以进行相关的类库，类文件，配制文件的设置。<br /><br />      在“库”中可以加入编译运行时需要的类库，在“源代码”中可以link入编译运行需要的类，同时还要吧设置源文件的位置以及输出位置。在“项目”中可以加入运行时依赖的其它project。在“排序和导出”可以对设置好的类库，类文件，配制文件进行排序，可以设定哪些文件要导出到硬盘上。<img src ="http://www.blogjava.net/bnlovebn/aggbug/89295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-12-21 15:26 <a href="http://www.blogjava.net/bnlovebn/archive/2006/12/21/89295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关JSP/Servlet的重定向技术综述如下</title><link>http://www.blogjava.net/bnlovebn/archive/2006/12/14/87623.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Thu, 14 Dec 2006 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/12/14/87623.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/87623.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/12/14/87623.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/87623.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/87623.html</trackback:ping><description><![CDATA[1.RequestDispatcher.forward()<br />是在<font color="#ff0000">服务器端</font>起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet or JSP到另外一个Servlet,JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在b.jsp都可以获得,参数自动传递.<br />但forward()无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward()无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute("name",name)来传至下一个页面.<br /><br />  重定向后浏览器地址栏URL不变.<br /><br />例:在servlet中进行重定向<br />public void doPost(HttpServletRequest request,HttpServletResponse response)<br />throws ServletException,IOException<br />{<br /><br />    response.setContentType("text/html; charset=gb2312");<br /><br />    ServletContext sc = getServletContext();<br /><br />    RequestDispatcher rd = null;<br /><br />    rd = sc.getRequestDispatcher("/index.jsp");   //定向的页面<br /><br />    rd.forward(request, response);<br /><br />}<br />通常在servlet中使用，不在jsp中使用。<br /><br />2.response.sendRedirect()<br />  是在用户的<font color="#ff0000">浏览器端</font>工作,sendRedirect()可以带参数传递,比如servlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect()可以重定向有frame.的jsp文件.<br />  重定向后在浏览器地址栏上会出现重定向页面的URL。 
<p><span class="content"></span><span class="content">sendRedirect()实际上是reponse.setStatus(302)的快捷方式，后者用于设置Http响应的状态代码。</span></p><p><span class="content"><br />例:在servlet中重定向<br />public void doPost(HttpServletRequest request,HttpServletResponse response)<br /><br />    throws ServletException,IOException<br /><br />{<br /><br />    response.setContentType("text/html; charset=gb2312");<br /><br />    response.sendRedirect("/index.jsp");<br /><br />}<br />由于response是jsp页面中的隐含对象，故在jsp页面中可以用response.sendRedirect()直接实现重定位。<br />注意：<br />(1).使用response.sendRedirect时，前面不能有HTML输出。<br />这并不是绝对的，不能有HTML输出其实是指不能有HTML被送到了浏览器。事实上现在的server都有cache机制，一般在8K（我是说JSP　SERVER），这就意味着，除非你关闭了cache，或者你使用了out.flush()强制刷新，那么在使用sendRedirect之前，有少量的HTML输出也是允许的。<br />(2).response.sendRedirect之后，应该紧跟一句return;<br />我们已经知道response.sendRedirect是通过浏览器来做转向的，所以只有在页面处理完成后，才会有实际的动作。既然你已经要做转向了，那么后的输出还有什么意义呢？而且有可能会因为后面的输出导致转向失败。<br />比较：<br />(1).Request Dispatcher.forward()是容器中控制权的转向，在客户端浏览器地址栏中不会显示出转向后的地址；<br />(2).response.sendRedirect()则是完全的跳转，浏览器将会得到跳转的地址，并重新发送请求链接。这样，从浏览器的地址栏中可以看到跳转后的链接地址。<br />前者更加高效，在前者可以满足需要时，尽量使用RequestDispatcher.forward()方法.<br /><br />注：在有些情况下，比如，需要跳转到一个其它服务器上的资源，则必须使用HttpServletResponse.sendRequest()方法。<br /><br />3.&lt;jsp:forward page="" /&gt; <br /><br />它的底层部分是由RequestDispatcher来实现的，因此它带有RequestDispatcher.forward()方法的印记。<br /><br /><br />如果在&lt;jsp:forward&gt;之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。<br />另外要注意：它不能改变浏览器地址，刷新的话会导致重复提交<br /><br />4.JSP中实现在某页面停留若干秒后,自动重定向到另一页面<br />在html文件中，下面的代码：<br />  &lt;meta http-equiv="refresh" content="300; url=target.jsp"&gt;<br />  它的含义：在5分钟之后正在浏览的页面将会自动变为target.html这一页。代码中300为刷新的延迟时间，以秒为单位。targer.html为你想转向的目标页,若为本页则为自动刷新本页。<br />  由上可知，可以通过setHeader来实现某页面停留若干秒后,自动重定向到另一页面。<br />  关键代码：<br />      String content=stayTime+";URL="+URL;<br />      response.setHeader("REFRESH",content);<br /></span> </p><img src ="http://www.blogjava.net/bnlovebn/aggbug/87623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-12-14 09:44 <a href="http://www.blogjava.net/bnlovebn/archive/2006/12/14/87623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个applet——servlet通讯的例子</title><link>http://www.blogjava.net/bnlovebn/archive/2006/12/12/87154.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Tue, 12 Dec 2006 02:43:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/12/12/87154.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/87154.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/12/12/87154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/87154.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/87154.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ---servlet文件												import				 java.io.				*				;				import				 java.util.Date;				import				 javax.servlet.				*				;				import				 javax.servlet.http.				*				;...&nbsp;&nbsp;<a href='http://www.blogjava.net/bnlovebn/archive/2006/12/12/87154.html'>阅读全文</a><img src ="http://www.blogjava.net/bnlovebn/aggbug/87154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-12-12 10:43 <a href="http://www.blogjava.net/bnlovebn/archive/2006/12/12/87154.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>页面跳转(javascript/php/asp)</title><link>http://www.blogjava.net/bnlovebn/archive/2006/11/03/78959.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 03 Nov 2006 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/11/03/78959.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/78959.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/11/03/78959.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/78959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/78959.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" align="center" border="0">
				<tbody>
						<tr bgcolor="#ffffff">
								<td height="0">
										<p>ASP页面：<br />&lt;%response.redirect "页面路径"%&gt;</p>
										<p>
												<br />有好几种方法：<br />(1)在页面中跳转：加入以下句子，2秒后跳到test.html<br />   &lt;meta HTTP-EQUIV=REFRESH CONTENT='2; URL=test.html'&gt;<br />(2)2秒后转到ly2.php<br />   &lt;script&gt;setTimeout("location.href="/home/ly2.php'",2000)&lt;/script&gt;<br />(3)在php中用header()函数跳转：<br />   header("Location :http://www.xxx.com");<br />(4)用一个按钮，点击后跳转：(5种按钮)<br />  </p>
										<p>
												<br />&lt;input type=button value=Return onClick</p>
										<p>="javascript:location.href('URL');"&gt;<br />   &lt;input type=button value=Return onClick=</p>
										<p>"javascript:window.location.href('URL');"&gt;<br />   &lt;input type=button value=Return onClick</p>
										<p>="javascript:window.location.replace('URL');"&gt;<br />   &lt;input type=button value=Return onClick</p>
										<p>="javascript:window.location.assign('URL');"&gt;<br />   &lt;input type="button" value="Return" onClick</p>
										<p>="window.location='URL'" /&gt;&lt;!--这种最好--&gt;</p>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/78959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-11-03 17:45 <a href="http://www.blogjava.net/bnlovebn/archive/2006/11/03/78959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring文件上传</title><link>http://www.blogjava.net/bnlovebn/archive/2006/10/23/76792.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Mon, 23 Oct 2006 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/10/23/76792.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/76792.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/10/23/76792.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/76792.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/76792.html</trackback:ping><description><![CDATA[在beans文件中要加入 
<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" /><span style="COLOR: #000000">    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">bean id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">multipartResolver</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">org.springframework.web.multipart.commons.CommonsMultipartResolver</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">description</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  ifpre::要使用文件上传功能，必须在定义文件中加入MeltipartResolver,<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />                  可以选用CommonsMutipartResolver或CosMultipartResolver<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">description</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">property name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">maxUploadSize</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">1000000</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">value</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">property</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">bean</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />同时上传文件使用到相依赖的Commands FileUpload，所以要在lib目录中包括commons-fileupload.jar文件。<br /><p>写完后调试的过程中，老报错：java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream，少了commons-io.jar，加上后，就ok了<br /><br />在Controller端，可以用以下方式取得上传的文件，可以上传多个文件：<br /> public Set getMultipartFileForForm(HttpServletRequest req) {<br />  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;<br />  // CommonsMultipartFile file = (CommonsMultipartFile)<br />  // multipartRequest.getFile("attach");//attach为form为file的id值<br />  // MultipartHttpServletRequest multipartRequest =<br />  // (MultipartHttpServletRequest)request;<br />  Set fileset = new LinkedHashSet();<br />  for (Iterator it = multipartRequest.getFileNames(); it.hasNext();) {<br />   String key = (String) it.next();<br />   MultipartFile file = multipartRequest.getFile(key);<br />   if (file.getOriginalFilename().length() &gt; 0) {<br />    fileset.add(file);<br />   }<br />  }<br />  return fileset;<br /> }<br /></p><img src ="http://www.blogjava.net/bnlovebn/aggbug/76792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-10-23 17:24 <a href="http://www.blogjava.net/bnlovebn/archive/2006/10/23/76792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE 自增序列SEQUENCE</title><link>http://www.blogjava.net/bnlovebn/archive/2006/10/20/76388.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Fri, 20 Oct 2006 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/10/20/76388.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/76388.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/10/20/76388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/76388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/76388.html</trackback:ping><description><![CDATA[
		<br />
		<br />在oracle中sequence就是所谓的序列号，每次取的时候它会自动增加，一般用在需要按序列号排序的地方。 <br />1、Create Sequence <br />你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限， <br />CREATE SEQUENCE emp_sequence <br />INCREMENT BY 1 -- 每次加几个 <br />START WITH 1 -- 从1开始计数 <br />NOMAXVALUE -- 不设置最大值 <br />NOCYCLE -- 一直累加，不循环 <br />CACHE 10; <br /><br />一旦定义了emp_sequence，你就可以用CURRVAL，NEXTVAL <br />CURRVAL=返回 sequence的当前值 <br />NEXTVAL=增加sequence的值，然后返回 sequence 值 <br />比如： <br />emp_sequence.CURRVAL <br />emp_sequence.NEXTVAL <br /><br />可以使用sequence的地方： <br />- 不包含子查询、snapshot、VIEW的 SELECT 语句 <br />- INSERT语句的子查询中 <br />- NSERT语句的VALUES中 <br />- UPDATE 的 SET中 <br /><br />可以看如下例子： <br />INSERT INTO emp VALUES <br />(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20); <br /><br />SELECT empseq.currval FROM DUAL; <br /><br />但是要注意的是： <br />- 第一次NEXTVAL返回的是初始值；随后的NEXTVAL会自动增加你定义的INCREMENT BY值，然后返回增加后的值。CURRVAL 总是返回当前SEQUENCE的值，但是在第一次NEXTVAL初始化之后才能使用CURRVAL，否则会出错。一次NEXTVAL会增加一次SEQUENCE的值，所以如果你在同一个语句里面使用多个NEXTVAL，其值就是不一样的。明白？ <br /><br />- 如果指定CACHE值，ORACLE就可以预先在内存里面放置一些sequence，这样存取的快些。cache里面的取完后，oracle自动再取一组到cache。 使用cache或许会跳号， 比如数据库突然不正常down掉（shutdown abort),cache中的sequence就会丢失. 所以可以在create sequence的时候用nocache防止这种情况。 <br /><br />2、Alter Sequence <br />你或者是该sequence的owner，或者有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值，必须 drop sequence 再 re-create . <br />Alter sequence 的例子 <br />ALTER SEQUENCE emp_sequence <br />INCREMENT BY 10 <br />MAXVALUE 10000 <br />CYCLE -- 到10000后从头开始 <br />NOCACHE ; <br /><br /><br />影响Sequence的初始化参数： <br />SEQUENCE_CACHE_ENTRIES =设置能同时被cache的sequence数目。 <br /><br />可以很简单的Drop Sequence <br />DROP SEQUENCE order_seq; <br /><br />示例Sequence：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">CREATE SEQUENCE SCOTT.DMIFPOSTID <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    START WITH </span><span style="COLOR: #000000">261</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    INCREMENT BY </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    NOMINVALUE<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    NOMAXVALUE<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    NOCYCLE<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    CACHE </span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    NOORDER</span></div><br /><br />3、如何使用<br />         第一种方法：一般来说需要新建一个触发器（TRIGGER），使得在插入数据之前先运行Sequence生成自增号。<br />示例Trigger<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">CREATE OR REPLACE TRIGGER SCOTT.DMIFATTACH_TRG<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />BEFORE INSERT <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />ON SCOTT.DMIFATTACH<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />REFERENCING OLD AS OLD NEW AS NEW<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />FOR EACH ROW <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />begin<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    select SCOTT.DMIFATTACHID.nextval into :</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">.ATTACHID from dual;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  end;</span></div><br />         第二种方法：可以在插入数据时直接调用。<br />          insert into table(id,name) values(seq_name.nextval,'名字');<br /><br />         其它：对于hibernate来说，在插入数据之前会先运行一次Sequence生成id的，所以这时如果还有触发器（TRIGGER），又要再运行一次Sequence，于是就会发现id是以２为步进增加的。这时把Trigger删除，步进就为１了。<br />         如果使用hibernate则需要在hbm.xml文件中把ＩＤ的生成方式设为sequence.<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">id<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">postid</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java.lang.Integer</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        column</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">POSTID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">meta attribute</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">field-description</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />           @hibernate.id<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            generator</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sequence</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java.lang.Integer</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            column</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">POSTID</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">meta</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;!--</span><span style="COLOR: #000000">设置id生成方式</span><span style="COLOR: #000000">--&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">generator </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sequence</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">param name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sequence</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">SCOTT.DMIFPOSTID</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">param</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">generator</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">id</span><span style="COLOR: #000000">&gt;</span></div><br />同时在调用this.getHibernateTemplate().save()方法时会自动生成根据sequence把查询到的id号set给这个对象的id.<img src ="http://www.blogjava.net/bnlovebn/aggbug/76388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-10-20 15:04 <a href="http://www.blogjava.net/bnlovebn/archive/2006/10/20/76388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp操作存储过程并返回值</title><link>http://www.blogjava.net/bnlovebn/archive/2006/09/12/69142.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Tue, 12 Sep 2006 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/09/12/69142.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/69142.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/09/12/69142.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/69142.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/69142.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">
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@page contentType</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">text/html;charset=gb2312</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">d7ith.*</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">jsp:usejBean id</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">DataConn</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> scope</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">page</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">d7ith.DataConn</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">/&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">@page </span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">java.sql.*</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;%</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  String oracleDriver </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">oracle.jdbc.driver.OracleDriver</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  String oracleUrl </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">jdbc:oracle:thin:@10.119.40.94:1521:d7i</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  String username </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">system</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  String password </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">d7i</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  Connection conn </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  ResultSet rs </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">null</span>
				<span style="COLOR: #000000">;<br /><img id="Codehighlighter1_473_579_Open_Image" onclick="this.style.display='none'; Codehighlighter1_473_579_Open_Text.style.display='none'; Codehighlighter1_473_579_Closed_Image.style.display='inline'; Codehighlighter1_473_579_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_473_579_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_473_579_Closed_Text.style.display='none'; Codehighlighter1_473_579_Open_Image.style.display='inline'; Codehighlighter1_473_579_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  </span>
				<span style="COLOR: #0000ff">try</span>
				<span id="Codehighlighter1_473_579_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" />
				</span>
				<span id="Codehighlighter1_473_579_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Class.forName(oracleDriver);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    conn </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> DriverManager.getConnection(oracleUrl,username,password);<br /><img id="Codehighlighter1_612_643_Open_Image" onclick="this.style.display='none'; Codehighlighter1_612_643_Open_Text.style.display='none'; Codehighlighter1_612_643_Closed_Image.style.display='inline'; Codehighlighter1_612_643_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_612_643_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_612_643_Closed_Text.style.display='none'; Codehighlighter1_612_643_Open_Image.style.display='inline'; Codehighlighter1_612_643_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  }</span>
				</span>
				<span style="COLOR: #0000ff">catch</span>
				<span style="COLOR: #000000">(ClassNotFoundException ex)</span>
				<span id="Codehighlighter1_612_643_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" />
				</span>
				<span id="Codehighlighter1_612_643_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    out.print(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">装载驱动程序错误</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_666_697_Open_Image" onclick="this.style.display='none'; Codehighlighter1_666_697_Open_Text.style.display='none'; Codehighlighter1_666_697_Closed_Image.style.display='inline'; Codehighlighter1_666_697_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_666_697_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_666_697_Closed_Text.style.display='none'; Codehighlighter1_666_697_Open_Image.style.display='inline'; Codehighlighter1_666_697_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />  }</span>
				</span>
				<span style="COLOR: #0000ff">catch</span>
				<span style="COLOR: #000000">(SQLException ex)</span>
				<span id="Codehighlighter1_666_697_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" />
				</span>
				<span id="Codehighlighter1_666_697_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    out.print(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">不能够连接数据库</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />  }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  String sql </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">{call R5.o7chkpsd(?,?,?)}</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  CallableStatement stmt </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> conn.prepareCall(sql);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    stmt.setString(</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">R5</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);  </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">输入参数</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">    stmt.setString(</span>
				<span style="COLOR: #000000">2</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">111111</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    stmt.registerOutParameter(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">,Types.CHAR); </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">输出参数为结果集参数</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">    stmt.executeQuery();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    String str </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> stmt.getString(</span>
				<span style="COLOR: #000000">3</span>
				<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    out.println(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">第二个参数为:</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">+</span>
				<span style="COLOR: #000000">str);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #000000">%&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
		</div>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/69142.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-09-12 13:55 <a href="http://www.blogjava.net/bnlovebn/archive/2006/09/12/69142.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSP一个密码验证的方法</title><link>http://www.blogjava.net/bnlovebn/archive/2006/06/20/53933.html</link><dc:creator>重归本垒（Bing）</dc:creator><author>重归本垒（Bing）</author><pubDate>Tue, 20 Jun 2006 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/bnlovebn/archive/2006/06/20/53933.html</guid><wfw:comment>http://www.blogjava.net/bnlovebn/comments/53933.html</wfw:comment><comments>http://www.blogjava.net/bnlovebn/archive/2006/06/20/53933.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bnlovebn/comments/commentRss/53933.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bnlovebn/services/trackbacks/53933.html</trackback:ping><description><![CDATA[
		<p>tomcat服务器：<br />在应用web的web-inf下面的web.xml中定义用户角色及其可以访问的页面。<br /></p>
		<span id="Codehighlighter1_135_925_Open_Text">
				<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" />
						<span style="COLOR: #000000">  </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">security-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">web-resource-collection</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">web-resource-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">admin</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">web-resource-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">url-pattern</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">/ch12/admin/*</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">url-pattern</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">url-pattern</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">/ch12/search/delete.jsp</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">url-pattern</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">web-resource-collection</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">auth-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">admin</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">auth-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">security-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">security-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">web-resource-collection</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">web-resource-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">search</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">web-resource-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">url-pattern</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">/ch12/search/*</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">url-pattern</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">web-resource-collection</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">auth-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">admin</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">user</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">auth-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">security-constraint</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">login-config</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">auth-method</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">BASIC</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">auth-method</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">realm-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">ORA Examples</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">realm-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">login-config</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">security-role</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">admin</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">security-role</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">security-role</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">user</span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">role-name</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span>
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">security-role</span>
						<span style="COLOR: #0000ff">&gt;</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</div>
				<br />在tomcat-user.xml定义用户，及其所属角色。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">user </span><span style="COLOR: #ff0000">username</span><span style="COLOR: #0000ff">="hans"</span><span style="COLOR: #ff0000"> password</span><span style="COLOR: #0000ff">="secret"</span><span style="COLOR: #ff0000"> roles</span><span style="COLOR: #0000ff">="user"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">user </span><span style="COLOR: #ff0000">username</span><span style="COLOR: #0000ff">="paula"</span><span style="COLOR: #ff0000"> password</span><span style="COLOR: #0000ff">="boss"</span><span style="COLOR: #ff0000"> roles</span><span style="COLOR: #0000ff">="admin"</span><span style="COLOR: #0000ff">/&gt;</span></div><br />在bean中实现用户的角色取得，同时让其可以支持EL：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> com.ora.jsp.tags;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.servlet.http.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.servlet.jsp.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> javax.servlet.jsp.jstl.core.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.apache.taglibs.standard.lang.support.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_644_1391_Open_Image" onclick="this.style.display='none'; Codehighlighter1_644_1391_Open_Text.style.display='none'; Codehighlighter1_644_1391_Closed_Image.style.display='inline'; Codehighlighter1_644_1391_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_644_1391_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_644_1391_Closed_Text.style.display='none'; Codehighlighter1_644_1391_Open_Image.style.display='inline'; Codehighlighter1_644_1391_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> IfUserInRoleTag </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> ConditionalTagSupport </span><span id="Codehighlighter1_644_1391_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" /></span><span id="Codehighlighter1_644_1391_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String valueEL;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_714_745_Open_Image" onclick="this.style.display='none'; Codehighlighter1_714_745_Open_Text.style.display='none'; Codehighlighter1_714_745_Closed_Image.style.display='inline'; Codehighlighter1_714_745_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_714_745_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_714_745_Closed_Text.style.display='none'; Codehighlighter1_714_745_Open_Image.style.display='inline'; Codehighlighter1_714_745_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setValue(String value) </span><span id="Codehighlighter1_714_745_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" /></span><span id="Codehighlighter1_714_745_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        valueEL </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> value;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_802_1389_Open_Image" onclick="this.style.display='none'; Codehighlighter1_802_1389_Open_Text.style.display='none'; Codehighlighter1_802_1389_Closed_Image.style.display='inline'; Codehighlighter1_802_1389_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_802_1389_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_802_1389_Closed_Text.style.display='none'; Codehighlighter1_802_1389_Open_Image.style.display='inline'; Codehighlighter1_802_1389_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> condition() </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> JspTagException </span><span id="Codehighlighter1_802_1389_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" /></span><span id="Codehighlighter1_802_1389_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_812_871_Open_Image" onclick="this.style.display='none'; Codehighlighter1_812_871_Open_Text.style.display='none'; Codehighlighter1_812_871_Closed_Image.style.display='inline'; Codehighlighter1_812_871_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_812_871_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_812_871_Closed_Text.style.display='none'; Codehighlighter1_812_871_Open_Image.style.display='inline'; Codehighlighter1_812_871_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_812_871_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_812_871_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />         * Evaluate the EL expression, if any<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />         </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String role </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_913_1137_Open_Image" onclick="this.style.display='none'; Codehighlighter1_913_1137_Open_Text.style.display='none'; Codehighlighter1_913_1137_Closed_Image.style.display='inline'; Codehighlighter1_913_1137_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_913_1137_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_913_1137_Closed_Text.style.display='none'; Codehighlighter1_913_1137_Open_Image.style.display='inline'; Codehighlighter1_913_1137_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_913_1137_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" /></span><span id="Codehighlighter1_913_1137_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            role </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (String)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />             </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">ExpressionEvaluatorManager.evaluate可以使valueEL用于EL，属性名为value               <br />                  ExpressionEvaluatorManager.evaluate("value", valueEL, </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">                    String.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">, pageContext);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1170_1235_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1170_1235_Open_Text.style.display='none'; Codehighlighter1_1170_1235_Closed_Image.style.display='inline'; Codehighlighter1_1170_1235_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1170_1235_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1170_1235_Closed_Text.style.display='none'; Codehighlighter1_1170_1235_Open_Image.style.display='inline'; Codehighlighter1_1170_1235_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (JspException e) </span><span id="Codehighlighter1_1170_1235_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" /></span><span id="Codehighlighter1_1170_1235_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throw</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> JspTagException(e.getMessage());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        HttpServletRequest request </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            (HttpServletRequest) pageContext.getRequest();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> request.isUserInRole(role);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">取得角色类别</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />在tld文件中定义EL自定义标签<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tag</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">ifUserInRole</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">tag-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.ora.jsp.tags.IfUserInRoleTag</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tag-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">body-content</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">JSP</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">body-content</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">description</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      Evaluates its body if the current, authenticated, user belongs to<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      the specified security role, and optionally saves the result<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      of the test as a Boolean in a variable specified by the var and <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      scope attributes.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">description</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">attribute</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">value</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">true</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">attribute</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">attribute</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">var</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">false</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">attribute</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">attribute</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">scope</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">false</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">required</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">attribute</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">tag</span><span style="COLOR: #0000ff">&gt;</span></div><br />在应用程序jsp页面中调用自定义标签进行访问控制<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000">@ taglib prefix</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ora</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> uri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">orataglib</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ora:ifUserInRole value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">admin</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> var</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">isAdmin</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div></span>
<img src ="http://www.blogjava.net/bnlovebn/aggbug/53933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bnlovebn/" target="_blank">重归本垒（Bing）</a> 2006-06-20 11:30 <a href="http://www.blogjava.net/bnlovebn/archive/2006/06/20/53933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>