﻿<?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-风人园-随笔分类-ECP</title><link>http://www.blogjava.net/wuxufeng8080/category/41166.html</link><description>弱水三千，只取一瓢，便能解渴；佛法无边，奉行一法，便能得益。</description><language>zh-cn</language><lastBuildDate>Wed, 02 Sep 2009 08:36:35 GMT</lastBuildDate><pubDate>Wed, 02 Sep 2009 08:36:35 GMT</pubDate><ttl>60</ttl><item><title>代码质量随想</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/09/02/293572.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Wed, 02 Sep 2009 04:19:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/09/02/293572.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/293572.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/09/02/293572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/293572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/293572.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;干了这么多年的代码工，对于代码质量的理解，个人认为就是一个，可维护性，除非你开发的东东是一锤子买卖，否则后期的投入会多的可怕，而且对于错误就没有办法控制了<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面引用别人的一段话来说明一下什么是高质量的代码：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;高质量的代码，除了符合产品的功能设计需求外，还应该便于维护、执行效率高、经过充分测试并且拥有较好的稳定性。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是从我个人来讲，可维护性是第一位的，其他都是必须的，冲突的话就应该适当取舍。便于维护必然会影响到一点点的效率，但是这个肯定是可以接受的。是可以通过其他方式来弥补的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不能为了追求所谓的高效，而破坏了系统的维护性，这样导致后期维护会有很大的问题，从而可能导致低效。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里介绍几个工具，来提高代码质量。findbugs就是其中的一个，可以对代码提出很好的修改建议。<br />
<br />
purifyplus 一个运行时检测系统，可惜不免费。<br />
<br />
<br />
备注： rational team concert 协作开发系统，集成版本控制、工作项和构建<br />
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/293572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-09-02 12:19 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/09/02/293572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECP--之信息提示</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293310.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Mon, 31 Aug 2009 06:37:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293310.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/293310.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/293310.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/293310.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一般，系统中把提示信息保存在request中传递会页面，但是有些情况是redirect的，这样就导致了request失效。在ROR中，有一个scope是夸两个request的，不知道那个是怎么实现的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在用session来代替这个东西，只是显示完成之后，就立刻清除这个数据。感觉比较挫，只能凑合着用了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;每次新开发一个系统，如果不用现成的东西来做，都要搞很多很多东西，什么东西好像都要自己来，特别是页面上的东西，感觉挺烦的。写写js，改改css，调调table/div。感觉挺无聊的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总而言之，这样子都是因为这家公司的it部门太弱了，几乎没有一点技术积累，这么多年了，什么东西都没有留下，就留下了一堆垃圾，让我改的挺郁闷的。现在正在用自己的东西重新。有些东西又没法改，一些现成的组件也不一定能用，不能用的只能自己重新写一遍，来实现这个功能。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作为一个技术部门，结果什么技术都没有，感觉挺悲哀的，特别是一个技术部门的老大，结果是个门外汉，被手下人看不起，这个也挺惨的，作老大做成这样，连死的心都有了，悲剧啊。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作为一个技术部门的主管，可以不做技术，但是不能不懂技术。这样才能服众。
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/293310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-31 14:37 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECP--之弹出窗口解决方案（json传递）</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293278.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Mon, 31 Aug 2009 02:39:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293278.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/293278.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293278.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/293278.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/293278.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在应用中，弹出式窗口选择数据，这种解决方案是很普遍的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;弹出窗口，有两种方式，一种是：showModalDialog，使用模式窗口，这种方式的好处有两个地方，一、可以直接返回数据，二、在最前面显示，避免用户误操作，窗口被遮蔽。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;但是这种方式个人感觉比较致命的地方就是因为这个是一个对话框，在form提交的时候只能新开一个页面（可能我没有发现其他的方式）。但是也有其他的方式，如加iframe，但是这样感觉页面太烦了，需要两个页面才能实现，比较麻烦。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第二种：window.open，这种方式也有一个问题，就是会被当做广告拦截掉，还算不是很致命。<br />
我的方案就是这个，下面上代码。<br />
传递格式通过json，这样我可以自己定义需要回填那些域，返回值这边就是竟可能的完整。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000"><br />
<img id="Codehighlighter1_1_37_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1_37_Open_Text.style.display='none'; Codehighlighter1_1_37_Closed_Image.style.display='inline'; Codehighlighter1_1_37_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1_37_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1_37_Closed_Text.style.display='none'; Codehighlighter1_1_37_Open_Image.style.display='inline'; Codehighlighter1_1_37_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1_37_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_1_37_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />弹出窗口<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />endtarget：&nbsp;string&nbsp;目标窗口<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />无返回<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_70_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_220_Open_Text.style.display='none'; Codehighlighter1_70_220_Closed_Image.style.display='inline'; Codehighlighter1_70_220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_70_220_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_70_220_Closed_Text.style.display='none'; Codehighlighter1_70_220_Open_Image.style.display='inline'; Codehighlighter1_70_220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;fopenWindow(endtarget)</span><span id="Codehighlighter1_70_220_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_70_220_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;window.open(&nbsp;endtarget,&nbsp;</span><span style="color: #000000">""</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">left=0,&nbsp;top=0,&nbsp;width=800px,&nbsp;height=600px,&nbsp;scrollbars=1,&nbsp;resizable=1,&nbsp;menubar=0,&nbsp;location=0,&nbsp;status=0,&nbsp;toolbar=0,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_223_304_Open_Image" onclick="this.style.display='none'; Codehighlighter1_223_304_Open_Text.style.display='none'; Codehighlighter1_223_304_Closed_Image.style.display='inline'; Codehighlighter1_223_304_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_223_304_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_223_304_Closed_Text.style.display='none'; Codehighlighter1_223_304_Open_Image.style.display='inline'; Codehighlighter1_223_304_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_223_304_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_223_304_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />window.open的回调函数<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />根据传入的json格式，赋值相应的域值<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />cmp：string&nbsp;域id<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />retval&nbsp;：json&nbsp;所选行的数据<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />无返回<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_341_517_Open_Image" onclick="this.style.display='none'; Codehighlighter1_341_517_Open_Text.style.display='none'; Codehighlighter1_341_517_Closed_Image.style.display='inline'; Codehighlighter1_341_517_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_341_517_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_341_517_Closed_Text.style.display='none'; Codehighlighter1_341_517_Open_Image.style.display='inline'; Codehighlighter1_341_517_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;fopenCallback(cmp,&nbsp;retval)</span><span id="Codehighlighter1_341_517_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_341_517_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert("call&nbsp;back&nbsp;start."&nbsp;+&nbsp;cmp);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;obj&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;eval('('&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;cmp&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;')');<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_436_515_Open_Image" onclick="this.style.display='none'; Codehighlighter1_436_515_Open_Text.style.display='none'; Codehighlighter1_436_515_Closed_Image.style.display='inline'; Codehighlighter1_436_515_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_436_515_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_436_515_Closed_Text.style.display='none'; Codehighlighter1_436_515_Open_Image.style.display='inline'; Codehighlighter1_436_515_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;e&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;obj&nbsp;)</span><span id="Codehighlighter1_436_515_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_436_515_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">alert(obj[e]);</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(obj[e]).value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;retval[obj[e]]<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />window.openCallback&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;fopenCallback;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_558_588_Open_Image" onclick="this.style.display='none'; Codehighlighter1_558_588_Open_Text.style.display='none'; Codehighlighter1_558_588_Closed_Image.style.display='inline'; Codehighlighter1_558_588_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_558_588_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_558_588_Closed_Text.style.display='none'; Codehighlighter1_558_588_Open_Image.style.display='inline'; Codehighlighter1_558_588_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_558_588_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_558_588_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />获取url上的参数<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />返回：key&nbsp;value&nbsp;对<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;GetUrlParms()&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_617_1082_Open_Image" onclick="this.style.display='none'; Codehighlighter1_617_1082_Open_Text.style.display='none'; Codehighlighter1_617_1082_Closed_Image.style.display='inline'; Codehighlighter1_617_1082_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_617_1082_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_617_1082_Closed_Text.style.display='none'; Codehighlighter1_617_1082_Open_Image.style.display='inline'; Codehighlighter1_617_1082_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_617_1082_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_617_1082_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;args</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Object();&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;query</span><span style="color: #000000">=</span><span style="color: #000000">location.search.substring(</span><span style="color: #000000">1</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">获取查询串&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;pairs</span><span style="color: #000000">=</span><span style="color: #000000">query.split(</span><span style="color: #000000">"</span><span style="color: #000000">&amp;</span><span style="color: #000000">"</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">在逗号处断开&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">pairs.length;i</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;<br />
<img id="Codehighlighter1_789_1063_Open_Image" onclick="this.style.display='none'; Codehighlighter1_789_1063_Open_Text.style.display='none'; Codehighlighter1_789_1063_Closed_Image.style.display='inline'; Codehighlighter1_789_1063_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_789_1063_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_789_1063_Closed_Text.style.display='none'; Codehighlighter1_789_1063_Open_Image.style.display='inline'; Codehighlighter1_789_1063_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_789_1063_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_789_1063_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;pos</span><span style="color: #000000">=</span><span style="color: #000000">pairs[i].indexOf('</span><span style="color: #000000">=</span><span style="color: #000000">');</span><span style="color: #008000">//</span><span style="color: #008000">查找name=value&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(pos</span><span style="color: #000000">==-</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">continue</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">如果没有找到就跳过&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;argname</span><span style="color: #000000">=</span><span style="color: #000000">pairs[i].substring(</span><span style="color: #000000">0</span><span style="color: #000000">,pos);</span><span style="color: #008000">//</span><span style="color: #008000">提取name&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;value</span><span style="color: #000000">=</span><span style="color: #000000">pairs[i].substring(pos</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);</span><span style="color: #008000">//</span><span style="color: #008000">提取value&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args[argname]</span><span style="color: #000000">=</span><span style="color: #000000">unescape(value);</span><span style="color: #008000">//</span><span style="color: #008000">存为属性&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;args;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_1088_1145_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1088_1145_Open_Text.style.display='none'; Codehighlighter1_1088_1145_Closed_Image.style.display='inline'; Codehighlighter1_1088_1145_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1088_1145_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1088_1145_Closed_Text.style.display='none'; Codehighlighter1_1088_1145_Open_Image.style.display='inline'; Codehighlighter1_1088_1145_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1088_1145_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_1088_1145_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />行双击方法，用户选择行数据。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />通过回调函数，完成赋值，最后关闭窗口<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />rtnval：&nbsp;string&nbsp;行数据<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" /></span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Dialog_onDblClick(rtnval)<br />
<img id="Codehighlighter1_1182_1375_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1182_1375_Open_Text.style.display='none'; Codehighlighter1_1182_1375_Closed_Image.style.display='inline'; Codehighlighter1_1182_1375_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1182_1375_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1182_1375_Closed_Text.style.display='none'; Codehighlighter1_1182_1375_Open_Image.style.display='inline'; Codehighlighter1_1182_1375_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1182_1375_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_1182_1375_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">var&nbsp;rtnval&nbsp;=&nbsp;{prodId:&nbsp;prodId,&nbsp;prodName:&nbsp;prodName};</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;args&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Object();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;args&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;GetUrlParms();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;cmp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;args['cmp']<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;window.opener.openCallback(cmp,&nbsp;rtnval);&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;window.close();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
主页面 域id通过json字符串跟url传递后弹出页面<br />
function popProductDialog(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;var endtarget = "&lt;%=path%&gt;/bas/product.do?method=dialog";<br />
&nbsp;&nbsp;&nbsp;&nbsp;var cmp = "{a: 'prodId', b: 'prodName'}";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //fshowModalDialog(endtarget, cmp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fopenWindow(endtarget+ "&amp;cmp=" + cmp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;}<br />
<br />
弹出框<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;Document_onDblClick(value1,value2)<br />
<img id="Codehighlighter1_47_147_Open_Image" onclick="this.style.display='none'; Codehighlighter1_47_147_Open_Text.style.display='none'; Codehighlighter1_47_147_Closed_Image.style.display='inline'; Codehighlighter1_47_147_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_47_147_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_47_147_Closed_Text.style.display='none'; Codehighlighter1_47_147_Open_Image.style.display='inline'; Codehighlighter1_47_147_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_47_147_Open_Text"><span style="color: #000000">{<br />
<img id="Codehighlighter1_66_101_Open_Image" onclick="this.style.display='none'; Codehighlighter1_66_101_Open_Text.style.display='none'; Codehighlighter1_66_101_Closed_Image.style.display='inline'; Codehighlighter1_66_101_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_66_101_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_66_101_Closed_Text.style.display='none'; Codehighlighter1_66_101_Open_Image.style.display='inline'; Codehighlighter1_66_101_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">var</span><span style="color: #000000">&nbsp;rtnval&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_66_101_Open_Text"><span style="color: #000000">{clientId:value1,&nbsp;clientName:value2}</span></span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dialog_onDblClick(rtnval);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
弹出页面解析获得域id，并通过循环域id从返回值中获取数据，并进行赋值。<br />
<br />
这里唯一需要变的就是，弹出页面的返回值，可能因为需求的增加，需要返回更多的数据，或者就一次性将所有数据都作为json数据返回。<br />
<br />
这样客户在调用的时候，只要域id不超出返回字段的范围，就可以正确使用了。<br />
<br />
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/293278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-31 10:39 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/31/293278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECP--旧系统维护之感慨</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/20/291957.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Thu, 20 Aug 2009 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/20/291957.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/291957.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/20/291957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/291957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/291957.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这几天再改老的EC系统，天啊，都快受不了了。我自认为我写的已经算丑的了，没想到有写的丑到这个程度的也是一绝啊，而且这个还是一家国内还有点名气的软件公司的产品（中科软sinosoft）。爷爷，当初是谁写的，帮我问候一下他家先人。害我现在这么惨，看那个代码，看了就想吐。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;只要我还在这家公司做着，一定把这个系统给换了，什么玩意啊。软件公司就知道赚钱，做出来的什么狗屁玩意。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在这里发发牢骚，实在是有点受不了了，改这些破东西，累啊。shit
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/291957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-20 15:01 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/20/291957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECP--安全控制</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/13/290990.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Thu, 13 Aug 2009 06:18:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/13/290990.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/290990.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/13/290990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/290990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/290990.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基础数据的操作暂告一个段落，基本上差不多，后面可能还有一些小问题，要修修补补，暂时不弄了，呵呵，典型的喜新厌旧型，弄多了就有点烦，下面开始玩权限。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 权限管理使用spring security 来进行，以前稍微看过，只是感觉挺复杂的，也没有怎么仔细研究，这次一定要用，就好好研究下。这样系统安全性才能有保障。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 毕竟是第一次使用，使用的过程中还是有很多的问题的。下面就是一些小问题，需要注意一下的。<br />
&nbsp;
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">1、&nbsp;<span style="font-family: 宋体">登录</span>action<span style="font-family: 宋体">：</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">/spring_security_login</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">2、&nbsp;<span style="font-size: 10pt; color: black; font-family: 宋体">登出</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">action</span><span style="font-size: 10pt; color: black; font-family: 宋体">：</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">j_spring_security_logout </span><span style="font-size: 10pt; color: black; font-family: 宋体">（这两个</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">action</span><span style="font-size: 10pt; color: black; font-family: 宋体">是</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">springSecurity</span><span style="font-size: 10pt; color: black; font-family: 宋体">自带的，直接用就可以了）</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">3、&nbsp;<span style="font-size: 10pt; color: black; font-family: 'Courier New'">Filter</span><span style="font-size: 10pt; color: black; font-family: 宋体">的配置，在项目中，跟</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">struts2</span><span style="font-size: 10pt; color: black; font-family: 宋体">一起使用，</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">filter</span><span style="font-size: 10pt; color: black; font-family: 宋体">的前后顺序有关系。</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Spring secutiry</span><span style="font-size: 10pt; color: black; font-family: 宋体">要放在</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">struts2</span><span style="font-size: 10pt; color: black; font-family: 宋体">的前面，否则系统找不到</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">security</span><span style="font-size: 10pt; color: black; font-family: 宋体">的</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">action</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt">4、&nbsp;<span style="font-size: 10pt; color: black; font-family: 宋体">怎么获取用户信息：可以参考</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">springside</span><span style="font-size: 10pt; color: black; font-family: 宋体">中的实现</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">org.springside.modules.security.springsecurity.SpringSecurityUtils</span><span style="font-size: 10pt; color: black; font-family: 宋体">。具体信息都在</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Authentication</span><span style="font-size: 10pt; color: black; font-family: 宋体">这个类中。</span></p>
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/290990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-13 14:18 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/13/290990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECP--Ext grid</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/10/290569.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Mon, 10 Aug 2009 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/10/290569.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/290569.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/10/290569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/290569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/290569.html</trackback:ping><description><![CDATA[周末的时候给项目从新想了一个名字，ECP，（电子商务平台），呵呵，自己陶醉用的。<br />
<br />
今天的成果就是异步的grid实现，效果是不错。现在剩下按钮操作与grid的结合的问题。明天继续努力。<br />
<br />
工作越来越烦了，该死的破老大，一点不懂，就瞎指挥，要不是回家没有地方去，早不干了。哎，继续努力吧。早日完成这个项目，走人：）
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/290569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-10 17:00 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/10/290569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECApp--产品主数据操作界面</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/07/290229.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Fri, 07 Aug 2009 07:01:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/07/290229.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/290229.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/07/290229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/290229.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/290229.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;又经过了半天多的努力，总算页面基本操作都能实现了，下面就是完善操作及异常处理。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在window&amp;form的操作上有些小问题。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;还有就是grid的异步数据载入，暂时用array，下面考虑用json来异步实现。<br />
<br />
继续看效果图<br />
<img height="468" alt="" src="http://www.blogjava.net/images/blogjava_net/wuxufeng8080/masterproduct4.JPG" width="826" border="0" /></p>
<br />
用ext做这种界面确实很爽，用户体验会很好，呵呵，我很喜欢这种淡淡的蓝，看着养眼，舒服。<br />
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/290229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-07 15:01 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/07/290229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECApp -- 之系统初始化</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290107.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Thu, 06 Aug 2009 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290107.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/290107.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/290107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/290107.html</trackback:ping><description><![CDATA[在java web项目中，最常用的就是使用listener来实现初始化了。<br />
<br />
下面是实现代码<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;StartupListener&nbsp;</span><span style="color: #0000ff">extends</span><span style="color: #000000">&nbsp;ContextLoaderListener&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletContextListener&nbsp;{<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;Logger&nbsp;logger&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LoggerFactory.getLogger(getClass());<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;web容器启动时调用<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&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;contextInitialized(ServletContextEvent&nbsp;event)&nbsp;{<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span style="color: #000000">"</span><span style="color: #000000">application&nbsp;servlet&nbsp;initialized<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServletContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;event.getServletContext();<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">从spring中获得bean，由这个bean进行相应操作，结果存到context中</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ApplicationContext&nbsp;ctx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;WebApplicationContextUtils.getRequiredWebApplicationContext(context);<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProductClassManager&nbsp;productClassManager&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(ProductClassManager)ctx.getBean(</span><span style="color: #000000">"</span><span style="color: #000000">productClassManager</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;prodClassTreeJson&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;productClassManager.generateProdClassTree();<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.setAttribute(Constants.PRODUCT_CLASS_JSON_STRING,&nbsp;prodClassTreeJson);<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;web容器销毁时调用<br />
</span><span style="color: #008080">26</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&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;contextDestroyed(ServletContextEvent&nbsp;event){<br />
</span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(</span><span style="color: #000000">"</span><span style="color: #000000">application&nbsp;servlet&nbsp;destroyed<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000"><br />
</span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">}</span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里面还调用 了spring的bean，所以listener要配置在spring的那个listener下面，否则可能出错。<br />
<br />
这样我们就可以在系统启动的时候将一些常用的数据及配置信息都放到内存（即serlvetContext里面），在struts2中，我们可以通过这种方式获得<br />
ServletContext context = ServletActionContext.getServletContext();<br />
然后就可以使用存放在context里面的数据了。<br />
就这么简单。
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/290107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-06 15:40 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECApp--ext应用之我见</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290103.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Thu, 06 Aug 2009 07:02:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290103.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/290103.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/290103.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/290103.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以前做项目的时候也使用过一段时间的ext，但是总体来说，在使用的过程中有蛮多不习惯的地方，后来除了几个布局界面使用ext之外，其他的全部又替换为html了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这次项目，再次使用ext又有了新的感觉，总的来说，ext还是非常的好（这个是废话）。css风格是我比较喜欢的那种，非常的耐看，不会看厌。各种组件丰富，只要你能用的起来，还是非常好的，一个应用下来，整体操作非常的爽。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有一个不爽的地方就是在编写的时候 ，多一个少一个逗号就玩完，这个比较郁闷，但是注意一下就好了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面暂时show一下程序的主体页面，只能说基本完成，还没有完全弄好。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天把页面及tree给弄好，明天把中间的grid及相关的几个编辑form弄完，在完善一下相应的按钮操作，就完工了，哈哈。拿出去给人看都是眼前一亮。good，继续努力ing<br />
<br />
<img height="368" alt="" src="http://www.blogjava.net/images/blogjava_net/wuxufeng8080/masterproduct1.JPG" width="733" border="0" />
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/290103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-06 15:02 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/06/290103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECApp--产品主数据管理界面及产品选择方案构思</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/05/289955.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Wed, 05 Aug 2009 07:22:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/05/289955.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/289955.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/05/289955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/289955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/289955.html</trackback:ping><description><![CDATA[<br />
<br />
1、管理界面<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于一个ERP系统来讲，产品数据是最重要的，而且也是操作比较频繁的。所以界面一定要要友好。<br />
在c/s中，一般是这样处理的，左边树形结构显示分类，右边产品数据，提供查询定位功能。<br />
所以在这个系统里，我也想使用类似的界面，这样直观且方便。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这个界面上，提供对产品类别 &amp; 产品数据的操作。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在树形结构上操作产品类别，操作有：新增类型，新增子类型。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;产品数据：新增（需要先选择类别）、删除、修改、查找、定位等。<br />
<br />
2、产品选择<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在整个系统中，产品选择使用是最为广泛和频繁的，所以一定要提供多种选择操作，满足用户的操作需要，方便用户产品需要的产品。<br />
&nbsp;&nbsp;&nbsp;&nbsp;1）、弹出式选择对话框<br />
&nbsp;&nbsp;&nbsp;&nbsp;2）、下拉式（自动匹配建议）<br />
&nbsp;&nbsp;&nbsp;&nbsp;3）、多选输入（减少操作次数，这个很重要）<br />
<br />
上面这些看能否用ext实现。<br />
本来想使用jquery.treeview来做，但是好像有点问题。看来只能用ext的东东来做tree了。<br />
那个自动匹配的下拉菜单，估计要自己来手工打造了，已经找到了类似的源代码，自己做吧。<br />
哦：）
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/289955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-05 15:22 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/05/289955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ECApp 项目说明</title><link>http://www.blogjava.net/wuxufeng8080/archive/2009/08/04/289799.html</link><dc:creator>风人园</dc:creator><author>风人园</author><pubDate>Tue, 04 Aug 2009 08:39:00 GMT</pubDate><guid>http://www.blogjava.net/wuxufeng8080/archive/2009/08/04/289799.html</guid><wfw:comment>http://www.blogjava.net/wuxufeng8080/comments/289799.html</wfw:comment><comments>http://www.blogjava.net/wuxufeng8080/archive/2009/08/04/289799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wuxufeng8080/comments/commentRss/289799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wuxufeng8080/services/trackbacks/289799.html</trackback:ping><description><![CDATA[<p>在此记录开过过程及问题处理，便于浏览查询。<br />
ECApp是一个web版的进销存系统<br />
模块有系统模块，基础模块，采购管理，销售管理，仓库管理，应收应付等。<br />
<br />
在web版的基础上，计划再开发一个RCP版本的。web的主要用于查询分析。RCP用于数据操作。<br />
<br />
这样B/S,C/S的特点都能发挥出来。</p>
<br />
在公司工作也不是很累，有很多时间做开发，给自己点事情做作，免得人都荒废了。这样人累点，但是充实，给人的精神感觉也好。让人有个希望，有个目标。<br />
<br />
现在在完成基础模块的东西，整体架构<br />
<br />
Struts2 + spring + hibernate + ibatis <br />
<br />
数据库任意，现为sql server 2005<br />
<br />
争取以后改为ERP，有机会的话，可以拿出去卖卖，哈哈<br />
<br />
给自己一个目标，年底前完成，加油吧，兄弟。
<img src ="http://www.blogjava.net/wuxufeng8080/aggbug/289799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wuxufeng8080/" target="_blank">风人园</a> 2009-08-04 16:39 <a href="http://www.blogjava.net/wuxufeng8080/archive/2009/08/04/289799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>