﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-流腥鱼</title><link>http://www.blogjava.net/goodlyts/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 08:58:31 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 08:58:31 GMT</pubDate><ttl>60</ttl><item><title>cas单点登录配置速成</title><link>http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Tue, 20 Oct 2009 10:21:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/299091.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/299091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/299091.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 服务端配置cas是个好东西，很灵活很好用，但是配置起来很麻烦，网上资料比较零碎。不弄个三五天根本不知道其中的原理，终于在多天的奋斗中配置成功，现在将配置的一些过程记录下来供大家参考。cas官方网站http://www.jasig.org/cas下载最新的服务端 CAS Server 3.3.3 Final解压后将modules下面的cas-server-webapp-3.3...&nbsp;&nbsp;<a href='http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html'>阅读全文</a><img src ="http://www.blogjava.net/goodlyts/aggbug/299091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-10-20 18:21 <a href="http://www.blogjava.net/goodlyts/archive/2009/10/20/299091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse使用svn插件，状态图标、版本号不能显示的解决办法  </title><link>http://www.blogjava.net/goodlyts/archive/2009/05/21/271906.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Thu, 21 May 2009 04:19:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/05/21/271906.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/271906.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/05/21/271906.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/271906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/271906.html</trackback:ping><description><![CDATA[&nbsp;eclipse&nbsp; 中使用 svn 插件，原本正常，未作任何更改，突然有一天， eclipse 中查看文件时，文件后面的 版本号 、 文件的状态图标 等等都不见了。
<p>&nbsp; 检查插件都在，更新，提交等操作都能正常使用，唯独看不到状态了。</p>
<p>&nbsp;&nbsp;经过一番查找，找到问题解决办法。</p>
<p>&nbsp; 打开 ： windows -&gt;preferences-&gt;General-&gt;Appearance-&gt;Lable Decorations&nbsp; 勾选其中的 SVN 项即可。</p>
<p>&nbsp; 同时，还可以打开 windows -&gt;preferences-&gt;Team -&gt; SVN 中做相关设置。</p>
<img src ="http://www.blogjava.net/goodlyts/aggbug/271906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-05-21 12:19 <a href="http://www.blogjava.net/goodlyts/archive/2009/05/21/271906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS实现完美垂直居中 </title><link>http://www.blogjava.net/goodlyts/archive/2009/04/17/266217.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Fri, 17 Apr 2009 11:59:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/04/17/266217.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/266217.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/04/17/266217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/266217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/266217.html</trackback:ping><description><![CDATA[<p>之前看到很多人一直都问这个问题，不过当时我没当一回事，因为在 CSS 中要垂直居中，多数是在有高度的情况下，或者容器高度不定的情况下才用，看上去比较舒服，而且实现的方法也不少，不一定要拘泥于和 table 布局一样。不过最近有人问了几个例子，看来对此的需求还不少。现在就把我经验拿出来分享一下，希望大家鼓鼓掌。</p>
<p>首先，要有一个概念：<strong>凡是 table 布局可以实现的，CSS 一定可以实现</strong>。CSS 可以实现的，table 未必能做到。</p>
<p>现在来几个例子：</p>
<p><strong>一、单行内容的居中</strong><br />
只考虑单行是最简单的，无论是否给容器固定高度，只要给容器设置 <font color="#000099">line-height</font> 和 <font color="#000099">height</font>，并使两值相等，再加上 <font color="#000099">over-flow: hidden</font> 就可以了</p>
<span class="code">.middle-demo-1{<br />
height: 4em;<br />
line-height: 4em;<br />
overflow: hidden;<br />
} </span>
<p>优点：<br />
1. 同时支持块级和内联极元素<br />
2. 支持所有浏览器<br />
缺点：<br />
1. 只能显示一行<br />
2. IE中不支持&lt;img&gt;等的居中<br />
要注意的是：<br />
1. 使用相对高度定义你的 height 和 line-height<br />
2. 不想毁了你的布局的话，overflow: hidden 一定要<br />
为什么？<br />
请比较以下两个例子：</p>
<span><textarea class="" style="width: 470px; height: 186px" rows="12" cols="64">&lt;p style="background: #900; color: #00f; font: bold 12px/24px Helvertica,Arial,sans-serif; height:24px; width:370px;"&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;/p&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;p style="background: #090; color: #00f; font: bold 12px/2em Helvertica,Arial,sans-serif; height:2em; width:370px; overflow: hidden;"&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;/p&gt;
</textarea><br />
<input onclick="runCode(event)" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</span>
<p>上一个高度是用的绝对单位px，并且没有隐藏溢出，下一个高度用的单位是相对单位em，并且隐藏了溢出。如果你的浏览器支持放大字体，那么尽情地放大字体，看看会出现什么效果。</p>
<p><strong>二、多行内容居中，且容器高度可变</strong><br />
也很简单，给出一致的 padding-bottom 和 padding-top 就行</p>
<span class="code">.middle-demo-2{<br />
padding-top: 24px;<br />
padding-bottom: 24px;<br />
} </span>
<p>优点：<br />
1. 同时支持块级和内联极元素<br />
2. 支持非文本内容<br />
3. 支持所有浏览器<br />
缺点：<br />
容器不能固定高度</p>
<p><strong>三、把容器当作表格单元</strong><br />
CSS 提供一系列diplay属性值，包括 display: table, display: table-row, display: table-cell 等，能把元素当作表格单元来显示。这是再加上 vertical-align: middle, 就和表格中的 valign="middle" 一样了。</p>
<span class="code">.middle-demo-3{<br />
display: table-cell;<br />
height: 300px;<br />
vertical-align: middle;<br />
}</span>
<p>可惜IE不支持这些属性，不过在其他浏览器上显示效果非常完美。<br />
要注意的是：和一个合法的&lt;td&gt;元素必须在&lt;table&gt;里一样，display: table-cell 元素必须作为 display: table 的元素的子孙出现。</p>
<p>优点：<br />
不用说了吧，就是表格，效果和表格一模一样<br />
缺点：<br />
IE下无效</p>
<p><strong>四、以毒攻毒！用 IE 的 bug 解决 IE 中的绝对居中</strong><br />
先不得不说一句，IE 真的是个很烂的浏览器，CSS1中的定义都不支持，害得要我们转个大圈子来造居中。不过就像我说的，<strong>凡是 table 布局可以实现的，CSS 一定可以实现</strong>，即使在 IE 里也不例外。我研究 IE layout 模式多年，还是找出了一个可以在 IE 中绝对居中的方法。这个方法就是基于 IE layout 的 bug，也可以算以毒攻毒。至于原理，不要问我，这是独门秘学，何况三言两语也讲不清楚，只要好用就行</p>
<span class="code">.middle-demo-4{<br />
height: 300px;<br />
position: relative;<br />
}<br />
.middle-demo-4 div{<br />
position: absolute;<br />
top: 50%;<br />
left: 0;<br />
}<br />
.middle-demo-4 div div{<br />
position: relative;<br />
top: -50%;<br />
left: 0;<br />
} </span>
<p><strong>五、整合三和四，写出支持所有浏览器的垂直居中容器！</strong><br />
思路是利用 IE 和 非IE 浏览器的 CSS hack, 整合三和四的CSS，写出兼容主流浏览器的垂直居中容器。具体代码就不给出了，大家权当作练习练习。例子可以在下面的附录中找到。<br />
最终实测支持的浏览器：IE6+, Mozilla 1.7, Netscape Navigator 8, Opera 8.0+, Firefox 1.0+ 和 Safari 1.0+IE5 下需要加上对合适模型的补正。<br />
推测支持的浏览器：Mozilla 1.5+, Netscape Navigator 7+, Opera 7+<br />
未测试浏览器：Konqueror</p>
<p><strong>最后附上自己写的，所有居中布局的范例网页，大家不明白可以参考。</strong></p>
<span><textarea style="width: 487px; height: 186px" rows="12" cols="67">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
&lt;title&gt;Demo:: vertical align: middle&lt;/title&gt;
&lt;meta lang="en" name="author" content="Spenser Lee" /&gt;
&lt;meta lang="en" name="copyright" content="(c)2006 Liberty Studio" /&gt;
&lt;style media="screen" type="text/css"&gt;
html,body,div,h1,h2,pre,dd,ol{margin: 0;padding: 0;border: 0}
html{min-width: 779px}
body{background: #fff;color: #596480;text-align: center}
div#main-wrapper{padding: 12px 5px;width: 769px;margin: 0 auto}
div,code,p,h1,h2,address,dt,dd,li{font: normal 12px/1.5em Tahoma,"Lucida Grande",Helvetica,Verdana,Lucida,Arial,"Arial Unicode",sans-serif,serif}
h1{font-size: 22px;font-weight: bold;border-left: 12px solid #324f96;background: #e0eaf4;color: #4868a9;height: 4em;line-height: 4em;padding: 0 12px;overflow: hidden; text-align: left}
h2{font-size: 12px;font-weight: bold;background: #c0014e;color: #fff;height: 2.5em;line-height: 2.5em;padding: 0 24px;overflow: hidden;margin: 12px 0;text-align: left}
h2 a{color: #fff;background: transparent}
h2 a:hover{text-decoration: none}
p{margin: 6px 0;padding: 0 12px 0 24px;text-indent: 2em;text-align: left}
p.snap-back{text-align: right}
code{display: block;font-family: "Courier New", Courier, monospace, mono, serif;margin: 12px auto;padding: 12px;border: 1px solid #596480;color: inherit;background: #f6f6f6;text-align: left;white-space: pre;width: 350px}
strong{font-weight: bold}
em{font-style: italic}
address{display: block;padding: 0 12px;margin: 12px 0;text-align: right}
dl{margin: 6px 0;padding: 0 12px 0 24px;text-align: left}
dt{margin: 0;text-indent: 2em;font-weight: bold}
dd{margin-left: 24px;text-indent: 2em}
li{list-style: square inside none;text-align: left}
ol#table-of-content{padding-left: 24px}
a{color: #c0014e;background: transparent;text-decoration: none}
a:hover{text-decoration: underline}
div.demo{width: 400px;margin: 12px auto;border: 1px solid #596480;color: inherit;background: #ffc}
div.demo p{text-align: left;margin: 24px;text-indent: 0}
p#demo-1{margin: 12px auto;padding: 0 12px;width: 400px;text-indent: 0;border: 1px solid #596480;color: inherit;background: #ffc;line-height: 4em;height: 4em;overflow: hidden}
div#demo-2{padding: 50px 0}
div#demo-4, div#demo-5{height: 300px;position: relative}
div#demo-4 div, div#demo-5 div{position: absolute;top: 50%;left: 0}
div#demo-4 p, div#demo-5 p{position: relative;top: -50%}
div#demo-3{display: table;height: 300px;border-collapse: collapse}
div#main-wrapper&gt;div#demo-5{position: static;display:table}
div#main-wrapper&gt;div#demo-5&gt;div{display:table-cell;vertical-align:middle;position:static}
div#demo-3&gt;div{display: table-row}
div#demo-3&gt;div&gt;div{display: table-cell;vertical-align: middle}
span.property{font-family: "Courier New", Courier, monospace, mono, serif;border-bottom: 1px dotted #596480;background: #ffc;color: #c0014e}
p.copyright{line-height: 3em;text-align: center;border-top: 1px dotted #596480}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id="main-wrapper"&gt;
&lt;h1&gt;Demo of middled vertical align&lt;/h1&gt;
&lt;address&gt;
Author: Spenser Lee, Liberty Studio&lt;br /&gt;
Originally posted on &lt;a href="http://www.blueidea.com/bbs/" title="BlueIdea Forum"&gt;BlueIdea Forum&lt;/a&gt;
&lt;/address&gt;
&lt;h2&gt;&lt;a id="bullet-0"&gt;Table of centents:&lt;/a&gt;&lt;/h2&gt;
&lt;ol id="table-of-content"&gt;
&lt;li&gt;&lt;a href="#bullet-1" title="Single line countainer with/without a fixed height"&gt;Single line countainer with/without a fixed height&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#bullet-2" title="Align multi-line container which does not have a fixed height"&gt;Align multi-line container which does not have a fixed height&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#bullet-3" title="Simulating table layout in container with a fixed height"&gt;Simulating table layout in container with a fixed height&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#bullet-4" title="IE's solution"&gt;IE's solution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#bullet-5" title="A perfect compounded sample"&gt;A perfect compounded sample&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;&lt;a id="bullet-1"&gt;Case One: Single line countainer with/without a fixed height&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you only want to display a container which only holds a single line of text, you can set &lt;span class="property"&gt;line-height&lt;/span&gt; property to &lt;span class="property"&gt;height&lt;/span&gt; property, then set &lt;span class="property"&gt;overflow&lt;/span&gt; to hidden.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample:&lt;/strong&gt;&lt;/p&gt;
&lt;p id="demo-1"&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Core code:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.middle-demo-1{
height: 4em;
line-height: 4em;
overflow: hidden;
}&lt;/code&gt;&lt;/pre&gt;
&lt;dl&gt;
&lt;dt&gt;Notes:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;I strongly recommend you use relative size in &lt;span class="property"&gt;height&lt;/span&gt; and &lt;span class="property"&gt;line-height&lt;/span&gt; property. &lt;em&gt;Why?&lt;/em&gt; You can simply set the font size larger if your browser support it. When it gets large enough, you will see the countainer is stretched and the &lt;span class="property"&gt;height&lt;/span&gt; is no longer equal to &lt;span class="property"&gt;line-height&lt;/span&gt; property, thus, the layout is messed up. Using relative size as &lt;span class="property"&gt;em, ex&lt;/span&gt; or &lt;span class="property"&gt;%&lt;/span&gt; will let your countainer stretch with the content.&lt;/li&gt;
&lt;li&gt;&lt;span class="property"&gt;overflow: hidden&lt;/span&gt; is a must. &lt;em&gt;Why?&lt;/em&gt; Same as above. Just ensure &lt;span class="property"&gt;height&lt;/span&gt; and &lt;span class="property"&gt;line-height&lt;/span&gt; are always equal.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;Pros:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;Fits in both &lt;span class="property"&gt;block&lt;/span&gt; elements and &lt;span class="property"&gt;inline&lt;/span&gt; elements.&lt;/li&gt;
&lt;li&gt;Capable of all 5th-gen browsers.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;Cons:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;Text length is limited. Max with only &lt;em&gt;one&lt;/em&gt; line.&lt;/li&gt;
&lt;li&gt;Does not work well on none text contents such as images and objects.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p class="snap-back"&gt;&lt;a href="#bullet-0" title="Back top table of centents"&gt;Back&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="bullet-2"&gt;Case Two: Align multi-line container which does not have a fixed height&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;In this case, we should simply set a pair of fixed equivalences to padding-top and padding-bottom attribute. It works on both IE and non-IE browsers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="demo" id="demo-2"&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas dignissim diam eu sem. Proin nunc ante, accumsan sollicitudin, sodales at, semper sed, ipsum. Etiam orci. Vestibulum magna lectus, venenatis nec, tempus ac, dictum vel, lorem.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Core code:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.middle-demo-2{
padding-top: 24px;
padding-bottom: 24px;
}&lt;/code&gt;&lt;/pre&gt;
&lt;dl&gt;
&lt;dt&gt;Pros:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;Fits in both &lt;span class="property"&gt;block&lt;/span&gt; elements and &lt;span class="property"&gt;inline&lt;/span&gt; elements.&lt;/li&gt;
&lt;li&gt;Works on none text contents as fine as text contents.&lt;/li&gt;
&lt;li&gt;Capable of all 5th-gen browsers. Might need a little tune-up for the box model bug of IE5 though.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;Cons:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;You can &lt;em&gt;not&lt;/em&gt; assign height in this solution.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p class="snap-back"&gt;&lt;a href="#bullet-0" title="Back top table of centents"&gt;Back&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="bullet-3"&gt;Case Three: Simulating table layout in container with a fixed height&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;CSS offers a set of very convenient display atrribute values called &lt;span class="property"&gt;display: table&lt;/span&gt;, &lt;span class="property"&gt;display: table-row&lt;/span&gt;, &lt;span class="property"&gt;display: table-cell&lt;/span&gt; and other display values begin with &lt;span class="property"&gt;table-&lt;/span&gt;. It offers a way to simulate table layout in all elements. As a result, any element with &lt;span class="property"&gt;display: table-cell&lt;/span&gt;, &lt;span class="property"&gt;vertical-align: middle&lt;/span&gt; and a fixed height will display exactly like a table cell.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample:&lt;/strong&gt; (You may not be able to view the effect on IE)&lt;/p&gt;
&lt;div class="demo" id="demo-3"&gt;
&lt;div&gt;&lt;div&gt;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas dignissim diam eu sem. Proin nunc ante, accumsan sollicitudin, sodales at, semper sed, ipsum. Etiam orci. Vestibulum magna lectus, venenatis nec, tempus ac, dictum vel, lorem.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Core code:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.middle-demo-3{
display: table-cell;
height: 300px;
vertical-align: middle;
}&lt;/code&gt;&lt;/pre&gt;
&lt;dl&gt;
&lt;dt&gt;Notes:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="property"&gt;display: table-cell&lt;/span&gt; must work with other elements with &lt;span class="property"&gt;display: table&lt;/span&gt; value sets in order to form a literal table. Or it might cause unexceptable bugs.&lt;/li&gt;
&lt;li&gt;Sadly IE series (including the latest IE 7 beta) does not support any of &lt;span class="property"&gt;display: table&lt;/span&gt; values, so it won't work in IE.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;Pros:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;It has the most perfect render for &lt;span class="property"&gt;vertical-align: middle&lt;/span&gt; align.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;Cons:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;It only works in latest versions of non-IE browsers, such as Mozilla, Firefox, Netscape 8, Opera 8, and Safari.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p class="snap-back"&gt;&lt;a href="#bullet-0" title="Back top table of centents"&gt;Back&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="bullet-4"&gt;Case Four: IE's solution&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Since IE is a lame browser when it comes to ANYTHING, so you can't use the solution above simply because IE does not recognize it at all. However, &lt;strong&gt;there has been nothing yet you can not code with CSS if you have already coded it with table&lt;/strong&gt;. It even offers you possibility to layout your page that tables can not do!&lt;/p&gt;
&lt;p&gt;So what's the solution for IE? Like what we always do: Hit IE's back with the BUGS it offers!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample:&lt;/strong&gt; (You are able to view the correct result only on IE)&lt;/p&gt;
&lt;div class="demo" id="demo-4"&gt;
&lt;div&gt;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas dignissim diam eu sem. Proin nunc ante, accumsan sollicitudin, sodales at, semper sed, ipsum. Etiam orci. Vestibulum magna lectus, venenatis nec, tempus ac, dictum vel, lorem.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;.middle-demo-4{
height: 300px;
position: relative;
}
.middle-demo-4 div{
position: absolute;
top: 50%;
left: 0;
}
.middle-demo-4 div div{
position: relative;
top: -50%;
left: 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See? Don't ask me why it worked. This hack is based on years of study in IE's own stupid layout model and it works very well, even in IE5 given the box width hack. I won't tell you the theory behind all these. It's my top secret, with which I solved a lot of other cross browser layout problems, and I'm not going to share it with you. But you are free to use this IE hack It's kinda handful in most occassions.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Pros:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;The only perfect vertical align method in IE. It works even better then add automatic &lt;span class="property"&gt;padding&lt;/span&gt;s.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;dl&gt;
&lt;dt&gt;Cons:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;After all it's a CSS hack. We can avoid it if not for IE.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p class="snap-back"&gt;&lt;a href="#bullet-0" title="Back top table of centents"&gt;Back&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a id="bullet-5"&gt;Case Five: A perfect compounded sample&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Here's the perfect compounded solution on vertical centering that works on almost all latest browsers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sample:&lt;/strong&gt; (This works on almost all browsers)&lt;/p&gt;
&lt;div class="demo" id="demo-5"&gt;
&lt;div&gt;&lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas dignissim diam eu sem. Proin nunc ante, accumsan sollicitudin, sodales at, semper sed, ipsum. Etiam orci. Vestibulum magna lectus, venenatis nec, tempus ac, dictum vel, lorem.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;I'm not going to give you the full code of this one. But it's not difficult to write it yourself, with the solution of case 3 and 4, and a little knowledge in IE/non-IE CSS hackers. And actually the hacking style is not limited, so I don't want to force you to use my hacking style neither. Stop being lazy, and write the code yourself!&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Browser capability:&lt;/dt&gt;
&lt;dd&gt;
&lt;ol&gt;
&lt;li&gt;Works on: IE6+, Mozilla 1.5+, Netscape Navigator 7+, Opera 7+, Firefox 1.0+ and Safari 1.0+&lt;/li&gt;
&lt;li&gt;On IE5, you might need to apply the box model hacker to make the height correct.&lt;/li&gt;
&lt;li&gt;Untested: WebOmini, Konqueror.&lt;/li&gt;
&lt;li&gt;Fails on: Other browsers not reffered in the list above.&lt;/li&gt;
&lt;/ol&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;p class="snap-back"&gt;&lt;a href="#bullet-0" title="Back top table of centents"&gt;Back&lt;/a&gt;&lt;/p&gt;
&lt;p class="copyright"&gt;Copyright &amp;copy; Spenser Lee, 2006 Liberty Studio&lt;/p&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</textarea><br />
<input onclick="runCode(event)" type="button" value="运行代码" /> [Ctrl+A 全部选择 提示：你可先修改部分代码，再按运行]</span> 
<img src ="http://www.blogjava.net/goodlyts/aggbug/266217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-04-17 19:59 <a href="http://www.blogjava.net/goodlyts/archive/2009/04/17/266217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Birt报表使用连接池配置</title><link>http://www.blogjava.net/goodlyts/archive/2009/03/19/260687.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Thu, 19 Mar 2009 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/03/19/260687.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/260687.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/03/19/260687.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/260687.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/260687.html</trackback:ping><description><![CDATA[<p>现阶段我们在开发报表的时候，是使用jdbc链接数据库的，为提高报表的运行效率和稳定性，使用连接池进行管理。比较简便和低耦合的解决办法，使用jndi连接池。</p>
<p>&nbsp;</p>
<p><font color="#ff0000"><strong>jdbc和jndi的区别</strong></font></p>
<p><font color="#ff0000">JDBC -最基本的连接数据库的方式， 每次对数据库打交道的时候 ，连接数据库是需要实例下你实现连接数据库的方法或者类。 <br />
JNDI DataSource 英文全称是:Java Naming and Directory Interface java 命明接口，当服务启动时 事先把连接数据库的已经连好多条，具体多少条你可以设置，存放在tomcat容器里，用的时候可以直接使用， 不用再实例化得到连接， 相对与jdbc效率要快点</font></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>在eclipse设计报表的时候，我们使用jdbc链接数据库做测试，当到了tomcat运行环境中切换到jndi连接池，这是比较方便的开发方法。</p>
<p>实现步骤：</p>
<p><strong>1.tomcat配置jndi连接池</strong></p>
<p>在 {tomcat目录}\webapps\{项目名}\META-INF 中新增context.xml文件，配置代码如下<br />
</p>
<p><strong></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;?</span><span style="color: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000ff">?&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">Resource<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">auth</span><span style="color: #0000ff">="Container"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;name</span><span style="color: #0000ff">="jdbc/travel_agency"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</span><span style="color: #0000ff">="javax.sql.DataSource"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxIdle</span><span style="color: #0000ff">="5"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxWait</span><span style="color: #0000ff">="-1"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;driverClassName</span><span style="color: #0000ff">="com.mysql.jdbc.Driver"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;username</span><span style="color: #0000ff">="itravel"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;password</span><span style="color: #0000ff">="709394"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url</span><span style="color: #0000ff">="jdbc:mysql://192.168.1.100/travel_agency?useUnicode=true&amp;amp;characterEncoding=UTF-8"</span><span style="color: #ff0000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxActive</span><span style="color: #0000ff">="10"</span><span style="color: #0000ff">/&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">Context</span><span style="color: #0000ff">&gt;</span></div>
<p>2.在web.xml中加入配置<br />
</strong></p>
<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"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">resource-ref</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">description</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Database&nbsp;Source</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"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-ref-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc/travel_agency</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-ref-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"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-type</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">javax.sql.DataSource</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-type</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">res-auth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Container</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">res-auth</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">resource-ref</span><span style="color: #0000ff">&gt;</span></div>
<p><br />
<strong>3.实例报表中数据源代码</strong></p>
<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"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">data-sources</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">oda-data-source&nbsp;</span><span style="color: #ff0000">extensionID</span><span style="color: #0000ff">="org.eclipse.birt.report.data.oda.jdbc"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="数据源"</span><span style="color: #ff0000">&nbsp;id</span><span style="color: #0000ff">="227"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">="odaDriverClass"</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;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">="odaURL"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">jdbc:mysql://192.168.1.100/travel_agency</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">="odaUser"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">itravel</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">encrypted-property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="odaPassword"</span><span style="color: #ff0000">&nbsp;encryptionID</span><span style="color: #0000ff">="base64"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">NzA5Mzk0</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">encrypted-property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">="odaJndiName"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">java:comp/env/jdbc/travel_agency</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">oda-data-source</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">data-sources</span><span style="color: #0000ff">&gt;</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>除了第7行&nbsp;<span style="color: #0000ff">&lt;</span><span style="color: #800000">property&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="odaJndiName"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">java:comp/env/jdbc/travel_agency</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">property</span><span style="color: #0000ff">&gt;</span>，其余是我们的之前的配置。用了第7行的代码，表示该报表支持jndi数据源，birt在运行报表的时候，会先用jndi去连接，如果失败了再用jdbc链接，这样做的好处就是，我们在开发报表的时候，没有放到web环境中，可以使用jdbc，当放到tomcat中，因为有了第7行的配置。默认采用jdni连接。</p>
<p><br />
&nbsp;</p>
<img src ="http://www.blogjava.net/goodlyts/aggbug/260687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-03-19 10:46 <a href="http://www.blogjava.net/goodlyts/archive/2009/03/19/260687.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Birt报表安全权限方案</title><link>http://www.blogjava.net/goodlyts/archive/2009/03/19/260686.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Thu, 19 Mar 2009 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/03/19/260686.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/260686.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/03/19/260686.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/260686.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/260686.html</trackback:ping><description><![CDATA[<p>从论坛的一篇文章（http://www.javaeye.com/topic/335078）得知，在BIRT VIEWER SERVLET内部也有认证接口代码，只是简单的返回了true，没有做处理。BIRT VIEWER SERVLET是报表处理的入口，该接口如果返回flase，那么报表将不会显示，目标就是在该接口加入我们自己的逻辑实现，本阶段先实现简单的安全认证，即在没有登录的情况下无法访问报表。</p>
<p>处理步骤：</p>
<p>1.把birt viewer项目和现有项目整合在一起（为了让birt viewer项目能获取到现有项目的session）</p>
<p>2.修改BIRT VIEWER SERVLET类，该类源码在org.eclipse.birt.report.servlet.BirtEngineServlet下面，找到函数经行修改，红色为新增部分</p>
<p><font style="background-color: #ccffff">/**<br />
&nbsp; * Local authentication.<br />
&nbsp; * <br />
&nbsp; * @param request<br />
&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; incoming http request<br />
&nbsp; * @param response<br />
&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http response<br />
&nbsp; * @return<br />
&nbsp; */<br />
&nbsp;protected boolean __authenticate( HttpServletRequest request,<br />
&nbsp;&nbsp;&nbsp;HttpServletResponse response )<br />
&nbsp;{<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;<font style="color: #ff0000">//报表权限，没有登录访问不了<br />
&nbsp;&nbsp;if(request.getSession().getAttribute("user")==null)<br />
&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp;}</font><br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp;return true;<br />
&nbsp;}</font></p>
<p>3.将该类编译后放进BIRT包里面。</p>
 <img src ="http://www.blogjava.net/goodlyts/aggbug/260686.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-03-19 10:42 <a href="http://www.blogjava.net/goodlyts/archive/2009/03/19/260686.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个不错的js时间控件，支持双月显示，和多天选择</title><link>http://www.blogjava.net/goodlyts/archive/2009/02/17/255013.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Mon, 16 Feb 2009 16:26:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/02/17/255013.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/255013.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/02/17/255013.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/255013.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/255013.html</trackback:ping><description><![CDATA[http://www.overset.com/2008/05/12/multiday-calendar-datepicker-jquery-plugin/
<img src ="http://www.blogjava.net/goodlyts/aggbug/255013.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-02-17 00:26 <a href="http://www.blogjava.net/goodlyts/archive/2009/02/17/255013.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>工作流任务环节权限设计</title><link>http://www.blogjava.net/goodlyts/archive/2009/02/12/254428.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Thu, 12 Feb 2009 09:27:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/02/12/254428.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/254428.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/02/12/254428.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/254428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/254428.html</trackback:ping><description><![CDATA[<p><strong>1.组织机构的完善</strong></p>
<p>工作流中的权限设置往往是比较复杂的，如审批中经常需要某部门的主管审批，或者某个人的上级领导审批等等。</p>
<p>为了满足需求的多样化，在原来的组织机构基础上引入岗位的模型，每个员工都对应一个部门和一个岗位。部门中设置主管的岗位。有个这个关系，这样可以比较清楚地查找某个人的上级领导，或者是某个部门的主管。</p>
<p><img height="430" alt="" src="http://www.blogjava.net/images/blogjava_net/goodlyts/20090212171620001.png" width="733" border="0" /><br />
<br />
</p>
<p><strong>2.工作流节点中设置执行者方案</strong></p>
<p>6种方式定义执行者</p>
<p>1.指定人</p>
<p>通过在组织结构树中点选具体的某些人。</p>
<p>2.指定岗位</p>
<p>在岗位树中指定执行的岗位。</p>
<p>3.指定部门</p>
<p>在组织机构树中指定执行的部门</p>
<p>4.指定角色</p>
<p>角色是某些逻辑上相识的一个组定义。选择某个角色。</p>
<p>5.相对执行人</p>
<p>在流程还没有开启之前，执行者是谁是未知的，所以这里的指定是相对的，当流程开启的时候才能确定，这里可以设置相对执行人的部门主管、相对执行人的上级主管、相对执行人的所在部门、执行人自己这4个情况。</p>
<p>6.表单确定</p>
<p>有些流程不在定义的时候确定，是由上一节点执行者确定的。</p>
<p>前五种方式可以混合，只要登录者复合定义制定人的并集，就有权限在待办任务中看到等待处理任务并有权限执行。</p>
<img src ="http://www.blogjava.net/goodlyts/aggbug/254428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-02-12 17:27 <a href="http://www.blogjava.net/goodlyts/archive/2009/02/12/254428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux关闭tomcat进程</title><link>http://www.blogjava.net/goodlyts/archive/2009/01/09/250725.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Fri, 09 Jan 2009 10:28:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2009/01/09/250725.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/250725.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2009/01/09/250725.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/250725.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/250725.html</trackback:ping><description><![CDATA[ps -ef |grep tomcat<br />
kill -9 端口<br />
<img src ="http://www.blogjava.net/goodlyts/aggbug/250725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2009-01-09 18:28 <a href="http://www.blogjava.net/goodlyts/archive/2009/01/09/250725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用两个IP实现IIS和Tomcat或Apache共用80端口的方法（转）</title><link>http://www.blogjava.net/goodlyts/archive/2008/12/26/248527.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Fri, 26 Dec 2008 10:36:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2008/12/26/248527.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/248527.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2008/12/26/248527.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/248527.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/248527.html</trackback:ping><description><![CDATA[<p>前段时间有个JSP网站要在服务器上部署，由于服务器上根本没<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C5%E4%D6%C3">配置</span>过jsp环境，于是装了Jdk和Tomcat，过程还算顺利，很快就<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B0%B2%D7%B0">安装</span>好了，但是Tomcat的默认端口是8080，访问网站也带个端口多么不爽，因为服务器上有很多ASP站点，又不能不用IIS，于是第一个想到的便是跟IIS6.0整合，baidu google了大半天，搜出来文章倒是很多，也不知是由于我安装的是最新的JDK和Tomcat，的原因还是权限原因（为了<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B0%B2%C8%AB">安全</span>，更改过多处权限），总之就是不成功，换了两台服务器也没配置成功，到最后不是不能正确运行，就是提示函数不正确，到网上搜，很多人问之类的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%CA%CC%E2">问题</span>，但几乎没有人正了把经回答的，有些&#8220;热心&#8221;的倒还说两句&#8220;重装一下看看?&#8221;&#8220;再从头到尾检查一遍试试&#8221;。。。算了还是自己搞吧。<br />
<br />
&nbsp;&nbsp;继续搞啊搞，还是不行，最后干脆不搞了，心想即使弄好了，<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%D0%D4%C4%DC">性能</span>还不知怎么样呢。于是想另外的解决方法，因为服务器所在的网络有空闲的ip，便想何不让IIS用一个ip，Tomcat用一个ip，都<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CA%B9%D3%C3">使用</span>80端口？问了几个人都说不行，两个软件用同一个端口那不冲突么，也有的说两个ip那得需要两块网卡啊。服务器上倒是有两块网卡，但就插了一根网线，另一个闲着。我就是要用一块网卡，两个ip，因为在TCP/ip协议属性-》高级中，一块网卡是可以添加多个ip地址的，iis与Tomcat分别监听不同ip的80端口，OK，开始吧。<br />
<br />
&nbsp;&nbsp;我们知道IIS默认情况下是监听所有ip地址的80端口的，也就是说，在网站属性中只要选择&#8220;全部未分配&#8221;，则该网站就可以使用所有本机可用的ip地址。显然这个不符合我们现在的要求，我们首先将IIS所有站点当中全部改为指定IIS要监听的IP地址，包括默认站点，例如全部改为61.156.31.1。再在网卡中加一个ip，也就是在TCP/ip高级属性中再加一个可用的ip，这样一块网卡就可以使用两个或更多个ip了，看似很简单的操作可能有很多人不知道，认为一块网卡只能设一个ip，呵呵。<br />
<br />
&nbsp;&nbsp;接下来最关键的一步开始了，便是禁用IIS的套接字池(如果这一步没调好，便不会成功)，在<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%A2%C8%ED">微软</span>官方网站上有解释：<br />
<br />
<a href="http://support.microsoft.com/kb/238131/zh-cn" target="_blank"><span class="t_tag" onclick="tagshow(event)" href="tag.php?name=http">http</span>://support.microsoft.com/kb/238131/zh-cn</a><br />
<br />
&nbsp; &nbsp;概要<br />
在下列情况下，您可能需要禁用套接字池： <br />
1、承载的站点数目不多。 <br />
2、有特殊的安全考虑。 <br />
3、另一个应用程序或服务器需要某个 IP 地址上的端口 80。 <br />
<br />
更多信息<br />
&nbsp; &nbsp; 套接字池会导致&#8220;Internet 信息服务&#8221;(IIS) 侦听所有 IP 地址，这样，可能会对具有多个网络的安全域造成安全隐患。另外，带宽调节和性能调整会应用于所有针对同一端口（例如，端口 80）进行配置的 Web 站点。如果基于每个站点进行带宽调节或性能调整，则必须禁用套接字池。 <br />
<br />
&nbsp; &nbsp; 由于 DisableSocketPooling 在 IIS 6.0 元数据库<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%BC%DC%B9%B9">架构</span> (MBSchema.xml) 中被定义为有效属性，所以，您仍然可以使用 Adsutil.vbs 设置该属性，但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序HTTP.sys 的一部分。要配置 HTTP.sys，您必须使用Httpcfg.exe。 有关如何在 IIS 6.0 中禁用套接字池的其他信息，请单击下面的文章编号，以查看 Microsoft 知识库中相应的文章： <br />
813368 (<a href="http://support.microsoft.com/kb/813368/" target="_blank">http://support.microsoft.com/kb/813368/</a>) IIS 6.0：设置配置数据库数据 DisableSocketPooling 没有作用 <br />
<br />
&nbsp; &nbsp; 要禁用套接字池，请执行下列步骤： <br />
1. 打开<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%C3%FC%C1%EE">命令</span>提示符并确保您位于 X:\Inetpub\Adminscripts <span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%C4%BC%FE">文件</span>夹（其中 X 是 IIS 安装驱动器）中。为此，请在命令提示符下键入以下<br />
<br />
行：<br />
X:<br />
<br />
CD\Inetpub\Adminscripts <br />
<br />
2. 打开 Adminscripts 文件夹后，请在命令提示符下键入以下行：<br />
cscript adsutil.vbs set w3svc/disablesocketpooling true <br />
3. 该命令反馈如下：<br />
disablesocketpooling :(BOOLEAN) True&nbsp;&nbsp;<br />
4. 停止 IIS Admin 服务，然后再启动它。 <br />
5. 重新启动 WWW 服务。 <br />
<br />
<br />
<br />
&nbsp; &nbsp;好了，接下来设置IIS要监听的ip地址。到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe文件，COPY到<br />
<br />
<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=windows">windows</span>/system32/目录下，用法自己看帮助<br />
命令行：<br />
绑定到某IP： httpcfg set iplisten -i 61.156.31.1<br />
即命令使用IIS的只监听指定的IP及端口<br />
查看绑定： httpcfg query iplisten <br />
删除绑定： httpcfg delete iplisten -i 61.156.31.1<br />
<br />
<br />
&nbsp; &nbsp;IIS部分到此就设置好了，接下来设置Tomcat，当然或者你用<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=Apache">Apache</span>，Resin等也都可以，在Tomcat的配置文件Server.xml里找到<br />
<br />
&nbsp; &nbsp; &lt;Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"&nbsp;&nbsp;redirectPort="8443"/&gt;<br />
<br />
&nbsp; &nbsp; &lt;Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"&nbsp;&nbsp;redirectPort="8443" address="61.156.31.2"/&gt;<br />
<br />
在后面添加上需要Tomcat监听的ip地址即可，例如：address="61.156.31.2"&nbsp;&nbsp;Apache，Resin或者其他WEB服务器软件都应该有相应的设置的，自己找一下即可。<br />
<br />
&nbsp; &nbsp; 好了接下来重启IIS，重启Tomcat或Apache，怎么？启动失败？提示端口占用？是啊，我也遇到这种情况，捣鼓了大半天要是再不成功我就要放弃了。实在无奈之下重启了一下服务器，哇，好啦。测试一下61.156.31.1访问的是IIS，61.156.31.2访问的是Tomcat可爱的大猫。<br />
<br />
&nbsp; &nbsp; 实际上，实现IIS和Apache或Tomcat公用80的方法还很多，例如IIS设置8080，Apache设置80，利用Apache<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B7%B4%CF%F2%B4%FA%C0%ED">反向代理</span>IIS的8080，当然也可以用NT下面的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=squid">squid</span>。或者在IIS中安装IIS的Isapi Rewrite，利用IIS的反向代理代理Apache，当然如果IIS站点少，Apache站点多就用第一种方法，IIS站点多，Apache站点少就用第二种方法，但这两种方法在性能上都不是很好，Apache在Windows下的反向代理也有BUG，经常出现Proxy Error的提示，至于IIS的反向代理没用过，因为IIS的ISAPI带反向代理功能的是要收费的。<a href="http://www.xpb.cn/blog/623.html" target="_blank">http://www.xpb.cn/b<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=log">log</span>/623.html</a></p>
<img src ="http://www.blogjava.net/goodlyts/aggbug/248527.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2008-12-26 18:36 <a href="http://www.blogjava.net/goodlyts/archive/2008/12/26/248527.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse  svn插件不能正常显示的解决办法</title><link>http://www.blogjava.net/goodlyts/archive/2008/12/16/246659.html</link><dc:creator>流腥鱼</dc:creator><author>流腥鱼</author><pubDate>Tue, 16 Dec 2008 08:34:00 GMT</pubDate><guid>http://www.blogjava.net/goodlyts/archive/2008/12/16/246659.html</guid><wfw:comment>http://www.blogjava.net/goodlyts/comments/246659.html</wfw:comment><comments>http://www.blogjava.net/goodlyts/archive/2008/12/16/246659.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/goodlyts/comments/commentRss/246659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/goodlyts/services/trackbacks/246659.html</trackback:ping><description><![CDATA[eclipse&nbsp; 中使用 svn 插件，原本正常，未作任何更改，突然有一天， eclipse 中查看文件时，文件后面的 版本号 、 文件的状态图标 等等都不见了。
<p>&nbsp; 检查插件都在，更新，提交等操作都能正常使用，唯独看不到状态了。</p>
<p>&nbsp;&nbsp;经过一番查找，找到问题解决办法。</p>
<p>&nbsp; 打开 ： windows -&gt;preferences-&gt;General-&gt;Appearance-&gt;Lable Decorations&nbsp; 勾选其中的 SVN 项即可。</p>
<img src ="http://www.blogjava.net/goodlyts/aggbug/246659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/goodlyts/" target="_blank">流腥鱼</a> 2008-12-16 16:34 <a href="http://www.blogjava.net/goodlyts/archive/2008/12/16/246659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>