??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品a一级国产免视看成人 ,国产毛片一区二区三区,国产精品无av码在线观看http://www.aygfsteel.com/flexjava/archive/2011/08/17/356721.html南山隐士南山隐士Wed, 17 Aug 2011 08:48:00 GMThttp://www.aygfsteel.com/flexjava/archive/2011/08/17/356721.htmlhttp://www.aygfsteel.com/flexjava/comments/356721.htmlhttp://www.aygfsteel.com/flexjava/archive/2011/08/17/356721.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/356721.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/356721.html软g界面设计量z明了,功能点击量做到一ơ?br />普通的工作站的使用者,l功能提供尽量直接、方便的来回切换、蟩转、导航,应当昄、直接、简U,一步到位?br />manager的管理决{用P他们的时间宝贵,最好设计成?c)式的操作Q同Ӟ最关键、最重要的信息,l织、放|在一屏当中?/div>

南山隐士 2011-08-17 16:48 发表评论
]]>
十大开发代码原??http://www.aygfsteel.com/flexjava/archive/2011/03/23/346866.html南山隐士南山隐士Wed, 23 Mar 2011 08:45:00 GMThttp://www.aygfsteel.com/flexjava/archive/2011/03/23/346866.htmlhttp://www.aygfsteel.com/flexjava/comments/346866.htmlhttp://www.aygfsteel.com/flexjava/archive/2011/03/23/346866.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/346866.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/346866.html本原则是本hl合目的实施开发编写代码情况,对多q以来带领项目实施奋战在开发一U经验的提炼与概括。这十条开发指导原则,最基本的思想?#8220;高效Q高质量的写出满业务功能目标的代码?#8221;每h可以l合当前目的实际情况应用,可以补充Q修订删改进一步ȝ提炼?br /> 1Q先开发简单明的功能模块Q后开发复杂的功能模块?br /> 2Q先做简单的子功能,再做E微复杂的子功能Q后开发有隑ֺ逻辑复杂的子功能?br /> 3Q以满业务功能要求Z要目标,不保留无用的垃圾代码。写出高质量满功能要求的代码,是徏立在对业务需求理解,明确业务目标Q逻辑思\清晰的结果。有时往往需要反复多ơ修改精益求_才能最后实现客h意的功能?br /> 4Q每开发一个功能模块,都要头脑清晰。(功能目的Q界面表玎ͼE序逻辑思\Q各层函数调用关p,数据存储Q,全面pȝ考虑Q力求每个细节都思考一遍,不疏漏。在一般情况下比葫芦画瓢,充分借鉴一般常用的逻辑代码Q业界常用的一般方法,已有cd函数。能够迅速高效写出高质量的一般性代码,以便腑և_֊解决关键问题。力求避免功能函数重复开发,代码随意复制Q逻辑思\混ؕQ代码随意修改,瞎写代码。保证所写的每一个函敎ͼ每行代码Q都有意义,都有目的Q坚军_除无用的垃圾代码。这样就保证了,我们写出的代码是z的Q思\明确的。随着旉的推U,我们写的代码来多Q就?x)积累出跟本目相关的很多通用的类库,函数。通过Ҏ(gu)Q更能深入的理解业务Q抽象出公用的方法,逻辑规范。进而提高整个团队的工作效率。通过循环q代的思\Q不断地扩大成功l验?br /> 5.我们开发程序过E中QL一些公用的函数cdQ可以调用。每ơ都不是从零开始,不是每行代码都一行一行的手工输入。要充分的利用工P灉|应用学过的方法。  
6.发扬团队协作_Q提高整体测试交叉测试意识,U极ȝ开发一般性类库函敎ͼ提供l大家调用。分享成功经验。避免一个h孤军开发,愁眉苦脸的编写程序。共同攻克业务技术难题,苦中有乐?br /> 7.力求高质量高效的完成开发模块,不要ȝ角尖Q经怺,不懂问。注意不要把问题复杂化,惛_?dng)自己跟自己制造困难。如果问题越来越复杂Q越开发代码越没头l就立即停止~写Q回到问题的原点重新考虑或跟大家交流听听别h的意见?br /> 8Q在解决技术问题上Q如果是关键问题Q坚决研IӞ要彻底搞明白。与目相关不媄(jing)响全局的问题,可以Ҏ(gu)实际情况优先U放低一U。针寚w点业务复杂的问题Q先做外围知识技术准备,扑և关键点,先易后难分步骤逐渐深入的去解决。最后将其诏I成一个整体?br /> 9.l常查看别h代码Q吸取别人的l验Q充实自己。我们的知识U篏主要来自别hQ主要在当前目。取之于别hQ受益于自己。受益于目?br /> 10Q善于利用零星时_(d)比较已经做过的功能模块。不断的整理Q优化已l开发过的代码。发现Bug?qing)时修正Q精益求_?/p>

本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/zhaoyu_1979/archive/2011/03/16/6254021.aspx



南山隐士 2011-03-23 16:45 发表评论
]]>
android开发环境搭?一)http://www.aygfsteel.com/flexjava/archive/2010/07/13/325955.html南山隐士南山隐士Tue, 13 Jul 2010 06:35:00 GMThttp://www.aygfsteel.com/flexjava/archive/2010/07/13/325955.htmlhttp://www.aygfsteel.com/flexjava/comments/325955.htmlhttp://www.aygfsteel.com/flexjava/archive/2010/07/13/325955.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/325955.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/325955.html(1) java JDK下蝲:

q入该网? http://java.sun.com/javase/downloads/index.jsp (或者直?a target="_blank">点击下蝲)如下?
选择 Download JDK 只下载JDKQ无需下蝲jre.

(2)eclipse下蝲

   q入该网? http://www.eclipse.org/downloads/ (或者直接点M?BT下蝲    HTTP下蝲) 如下?


我们选择W一?即eclipse IDE for java EE Developers)

(3)下蝲Android SDK

   说明: Android SDK两种下蝲版本Q一U是包含具体版本的SDK的,一U是只有升工具Q而不包含具体的SDK版本Q后一U大?0多MQ前一U?0多M?/span>

    完全版下?/a> (android sdk 2.1 r01)     升版下?/a> (使用q个Q本例子是使用q个q里面不包含具体版本Q想要什么版本在Eclipse里面升񔞮p)

?软g安装

   (1)安装jdk 6u19   安装完成卛_Q无需配置环境变量

   (2)解压eclipse       eclipse无需安装Q解压后Q直接打开p

   (3)解压android sdk     q个也无需安装Q解压后供后面?/span>

   (4)最l有三个文g夹,如下?

   

?Eclipse配置

   1 安装android 开发插?/span>

     (1)打开Eclipse, 在菜单栏上选择 help->Install New SoftWare 出现如下界面:


    点击 Add按钮,出现如下界面


     输入|址: https://dl-ssl.google.com/android/eclipse/    (如果出错Q请httpsҎ(gu)http)

     名称: Android (q里可以自定?

   点击OKQ将出现如下界面


点击 Next按钮 Q出现如下界?


  

点击Next按钮Q出现如下界?


选择 I accept the terms of the license agreements   点击Next,q入安装插g界面

安装完成后,出现如下界面


点击Yes按钮Q重启Eclipse

2 配置a(chn)ndroid sdk

     (1)点击菜单window->preferences,q入如下界面


   选择你的android SDK解压后的目录Q选错了就?x)报错,q个是升U工P目前q没有一个版本的SDK

Q?Q升USDK版本,选择菜单 window->Android sdk and avd manager 出现如下界面

      

   选择update all按钮Q出现如下界?/span>


选择左边的某一,点击accept表示安装Q点击reject表示不安装,我这里只选了SDK 2.1 和samples for api 7 , 自己可以L自定义,定后,选择install按钮Q进入安装界面如?

安装完成如下:

(3)新徏AVD(android vitural device)    和上面一Pq入android sdk and avd manager,选中Vitural Devices 在点击New按钮

点击New按钮后,q入如下界面:

名称可以随便取,target选择你需要的SDK版本QSD卡大自定义,点击 Create AVD,得到如下l果

如上昄创徏AVD完毕





3 新徏Android目

(1)选择菜单file->new->other q入如下界面:

选择新徏Android Project目Q点击Next按钮Q进入如下界?/span>


名称自定义,应用E序名自定义Q报名必d含一个点以上Qmin SDK version里面必须输入整数

点击Next出现如下界面:


? 若有错误? Project ... is missing required source folder: 'gen' ,则将gen->Android.Test->R.javaq个文g删掉QEclipse?x)?f)我们重新生成q个文gQƈ且不?x)报错?/span>

(3)配置q行

   右键目->Run as -> Run Configuration q入如下界面:
该界面,点击Browse 按钮Q选择你要q行的项?/span>

选择Target切换C下界?/span>


该界面选择q行的AVDQ将AVD前面的方框设|ؓ(f)选择状态?/span>

(4)试目q行

   右键目名称->run as ->Android Application 卛_启动q行该AndroidE序Q如下所C?


正在q入


试E序q行l果

 

?l束?/span>

       xQandroid开发环境搭建完毕,有问题请留言。在q里要注意,我这里只是下载了android sdk r4升工具Q没有下载具体的SDKQ而是通过在Eclipse里面的Android Sdk理工具升的,你也可以直接下蝲具体的SDK版本Q如: Android sdk 2.1 r1 上面有这个的下蝲链接Q但我Q务用升工具更好?/span>



南山隐士 2010-07-13 14:35 发表评论
]]>
Silverlight子窗口与父窗口之间的数据传?/title><link>http://www.aygfsteel.com/flexjava/archive/2009/12/11/305510.html</link><dc:creator>南山隐士</dc:creator><author>南山隐士</author><pubDate>Fri, 11 Dec 2009 01:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/flexjava/archive/2009/12/11/305510.html</guid><wfw:comment>http://www.aygfsteel.com/flexjava/comments/305510.html</wfw:comment><comments>http://www.aygfsteel.com/flexjava/archive/2009/12/11/305510.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/flexjava/comments/commentRss/305510.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/flexjava/services/trackbacks/305510.html</trackback:ping><description><![CDATA[建立一个Silverlight目Q添加一个子H口ChildWindow1.xaml.<br /> <br /> 在子H口设计中添加一个输入框Q?lt;TextBox x:Name="txtUserInfor" Grid.Row="0" /><br /> d子窗体的CS代码Q? <p> string testString;</p> <p>        public string TestString<br />         {<br />             get { return testString; }<br />             set { testString = value; }<br />         }<br /> </p> <br /> 增加一个事Ӟ(x) public event EventHandler OkClicked;<br /> 修改OKButton_ClickҎ(gu)Q?br /> <p><br />         private void OKButton_Click(object sender, RoutedEventArgs e)<br />         {<br />             if (OkClicked != null)<br />             {<br />                 TestString = txtUserInfor.Text;<br />                 OkClicked(this,new EventArgs());<br />             }</p> <p>            this.DialogResult = true;<br />         }</p> 子窗口修改完毕?br /> <br /> 父窗体:(x)<br /> 设计中添加一个输入框和一个ButtonQ?br /> <br /> <TextBox x:Name="tbInfo" Width="100" Height="50"></TextBox><br />  <Button Click="Button_Click" Width="100" Height="60" Content="子窗口测? HorizontalAlignment="Right"></Button><br /> <br />  修改父窗体代码:(x)<br /> <p>   public FatherControl()<br />         {<br />             InitializeComponent();<br />             childWindowDemo.OkClicked += new EventHandler(childWindowDemo_OkClicked);<br />         }</p> <p>        void childWindowDemo_OkClicked(object sender, EventArgs e)<br />         {<br />             tbInfo.Text = childWindowDemo.TestString;<br />         }</p> <p>        private ChildWindow1 childWindowDemo = new ChildWindow1();</p> <p>        private void Button_Click(object sender, RoutedEventArgs e)<br />         {<br />             childWindowDemo.Show();<br />         }<br /> 完毕?br /> q行Q点ȝH体按钮Q弹出子H体。在子窗体的输入框中输入内容Q点ȝ认后关闭子窗体,同时子窗体的数据更新到父H体的输入框中?/p> <img src ="http://www.aygfsteel.com/flexjava/aggbug/305510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/flexjava/" target="_blank">南山隐士</a> 2009-12-11 09:56 <a href="http://www.aygfsteel.com/flexjava/archive/2009/12/11/305510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]切实提高软g开发能力的忠告 http://www.aygfsteel.com/flexjava/archive/2008/12/11/245771.html南山隐士南山隐士Thu, 11 Dec 2008 11:12:00 GMThttp://www.aygfsteel.com/flexjava/archive/2008/12/11/245771.htmlhttp://www.aygfsteel.com/flexjava/comments/245771.htmlhttp://www.aygfsteel.com/flexjava/archive/2008/12/11/245771.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/245771.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/245771.html可以ȝZ大关键点Q一是养成好的编E习(fn)惯,二是针对自已的工作提高自已的知识含量.

一Q?nbsp;   好的~程?fn)?/p>

1.       写程序前打个草稿可以在心里,最好在U怸Q目的要从整体上考虑E序的实现?/p>

如果公司采用建模的方式,有徏模工Prose Qvisio Q那是最好不q的了?/p>

 2Q?nbsp;   注意休息Q不要浪费自已的休息旉Q用M自已的时间不但会(x)写出的代码因为注意力不集中而会(x)常常出现代码的质量有问题Q逻辑常出?/p>

3Q?nbsp;   要善于收集相关的专业开发上的资料,以便以后能更快更好的解决问题目。提倡公司能提供内部知识N的工具Q如知识论坛Q内部即时聊天器Q;提倡公司内部有技术资料的׃n库,提高解决问题的能?

4Q?nbsp;   提高Ҏ(gu)写的模块的相兛_局把握能力Q在写程序中要最好先详细设计后再发布.

5Q?nbsp;   要学?x)与他h沟通如非工E师Q学?x)沟通的不同方式Q提高沟通的效率?/p>

 二.    不同的目标不同的知识重点

(一Q?nbsp;       目标Q程序员

职责Q根据详l设计文,或根据高U程序员的设计进行相关的开发?/p>

1Q?nbsp;   要学?x)看相关的需求文档及(qing)详细设计文?/p>

注意Q你必须要通过阅读q些文把握住其中的重点Q关键点Q相x漏点

2Q?nbsp;   如果公司里会(x)用UML来相互的沟通,q时你必要深刻理解UML 的相关知识,一定要注意千万不要对UML图一知半解的情况下,q写代码,那样?x)错的很惨?/p>

3Q?nbsp;   学好对应的计机语言的基知识Q如Q程序的语法Q关键点Q易错点Q对应的出错如何出理Q如何才能把对就的程序写的键壮一?/p>

4Q?nbsp;   如果用到数据库的内容Q在学会(x)sql的前提下Q尽量学?x)数据库原理中的相关sql内容, 当然Z提高查询的能力也可以增加一?/p>

5Q?nbsp;   如果用到面向对像的语a那最好学点相关的设计模式Q这L(fng)可以增加代码的扩展性,?qing)可l护性等Q能够理解详l设计中的模块间的设计原则这个也可以提高Ҏ(gu)块的内容~写的正?

6Q?nbsp;   你一定要学会(x)公司内部的通用的编码规范?/p>

7Q?nbsp;   学习(fn)如何做单元测试比较好.必须要熟(zhn)相关的单元试工具.

8Q?nbsp;   要不断的对相关知识进行ȝQ同时也要必L相关的资料进行整理和学习(fn)Q在学习(fn)q后的资料中你可以在遇到问题时更快的扑ֈ问题的答题?/p>

9Q?nbsp;   在开发你必须记录下大家常出错的地方及(qing)大家的解x法,q个对你以后错误的避免有很大的作?

10Q?nbsp;   在写代码中时必须把上面写q代码记在心里,q样可以养成习(fn)惯,提高代码的速度

11Q?nbsp;   Ҏ(gu)据库操作Ӟ要尽量共用ConnectionQƈ用以减Connection的数?/p>

(二)(j)    目标Q高U程序员

职责Q对需求文档进行系l相x块的详细设计Qƈ负责对程序员的支持及(qing)指导和相x心模块的~写

所以不但要学会(x)相关E序员要的知识,同时q要学会(x)隑ֺ比较大的知识?/p>

1Q?E序员的知识Q如设计模式你一定要不是单的看要懂,你还要应用设计模式对相应的模块进行相关的详细设计?/p>

2Q?nbsp; 要学好相兌l设计的工具做的有的攄Q这样可以更好提高对自已的设计的表达

3Q?nbsp; Z提高pȝ的运行效率会(x)q用?/p>

a.         数据库的表结构如何徏才能使应用的要查询sql 更快。这时可要认真认真的学习(fn)一h据库原理Q千万不要以为采用数据库的范式越高系l的q行效率?x)越好,有时候适当的表冗余可以大幅度的提高pȝ的查询效?  同时适当的徏索引,视图Q存储过E也是提高系l对数据库的查询的效率之一?/p>

b.         学习(fn)多线E的~程Q不q千万不要以为线E数多q行的速度?x)越快,一般线E的数量过一定的数量后,pȝ的运行速度反而会(x)变慢。ؓ(f)了应用好多线E,操作pȝq本书也要关于同步及(qing)相关q程和线E的知识必不可少?/p>

c.         设计好的一E序的好的算法,可要比v解一道同一复杂的数学题Q要隄多,所以要在学好的相关数学的知识上Q如U性代敎ͼL数学Q概率论Q数理统计)(j)。更要深入计方法,?qing)数据结构,让数学问题用计算机来解决?/p>

         4Qؓ(f)了让pȝ设计的更加的可扩展性,E_性,设计模式和Y件工E可是不能少的东ѝ所以必L设计模式用于模式U的设计.

         5. 如果公司采用的是Rose (UML)q行设计的话Q你对于UML 的理解一定要非常的准,同时你要跟小l中的程序之间进行充分的UML概念上及(qing)对应用例图,cd图,对象图,协作囄意思多写一些注释加深大家对你的设计上的理解?/p>

Q三Q?nbsp;        目标Q系l分析员

职责Q做好与客户之间的关p,同时对客L(fng)需求要正确的理解,要选择合适的开发技术,同时做好与客户间沟通交,学会(x)说服Ҏ(gu)?/p>

1Q?nbsp; 学会(x)对客L(fng)沟通:(x)要正理解客L(fng)需求同时要保证怺之间的沟通顺畅?/p>

2Q?nbsp; 对了解来的需求要能用W正的描述下来Qƈ能很好的传叙l其他h。这时要学会(x)用如ROSE {的软g建模的工兗和powerdesign{的数据库徏模工兗和相关的UML,数据程囑֏(qing)相关的内容的知识?/p>

3Q?nbsp; 不但要全面的了解客户的需求而且q要寚w求进行未来的可能的改变要有相当多的了解?/p>

4Q?nbsp; 全面的了解客L(fng)需求后Q要选择合适的相关技术用于开发,Q?/p>

q时要学?fn)各U知?/p>

a.  先择数据库:(x)db2,infomix ,oracle ,sql server,mysql 的优~点,可以从中选择最适合的数据库?qing)理由?/p>

b. 设计数据库:(x)要扎实在数据库的理论Q数据库原理Q数据库pȝ设计Q及(qing)相关数据库设计经验,要尽量多的分析过L据库设计Q分析这么设计数据库的好处。这时可能要用到 powerdesign{工兗?

c. 写需求说明文和概要设计文档Q同时要学会(x)要分析相关需求说明文的需要的内容的相关知识,如h员工时的计算Ҏ(gu)Q?一般会(x)?project 来分析相关的目的内宏V?/p>

d. 选择合适的E序语言?qing)相关的架构Q一般主的架构?J2EE?net的相应的优点?qing)它们之间的l合Q如采用soap xmlq行相关的结合,或用java-com ?q行相关的功能的调用。和它们之间的相兌a优缺?/p>

e.  q要Ҏ(gu)b/s,c/s l构对开发的|络影响的相兛_定w取选择?/p>

 5. 学会(x)说服Ҏ(gu)Q毕竟客户都不是个个是Y件专Ӟ他们的选择有时未必是正的所以学?x)说服对方,是系l分析员必备的能力条?                           

 三.    训练的方法:(x)

1.       计划行事Q?/p>

(1 讑֮你的未来的学?fn)目?/p>

a.         未来要成Z么样的hQ主要是工作角色Q如E序员,高E序员,pȝ分析员)(j)

b.         你近期要成ؓ(f)什么样的hQ当前的工作职责是什么,如果只写代码是程序员{)(j)

c.         要完成近期的工作所必须要知识(如java E序员,要学?fn)java 基础知识Q等Q,关键的知识(如java中关键要用到的知识有Q面向对象等Q?易错的知识(比较原来的已有知识进行合对)(j)

(2      讑֮你的学习(fn)目标后,q要有针Ҏ(gu)的对应目标讑֮学习(fn)旉的按排及(qing)学习(fn)路线。ƈ直观的记录在案,以便以后随时核对Q?/p>

(3      常常抽出一定的旉认真核对计划的完成情况,如果没有按时完成计划的内宏V分析原因,量x赶上计划内容如果存认是计划有误,要认真ȝ计划p|出错的原因,对你的未来有很大的帮助?/p>

注意Q不要对计划的按排过于乐?要尽量的考虑实现中的各种情况Q同旉当按排一些缓冲时_(d)以便真正能按照计划行事,以提高按计划行事信心Q同时这能有效避免出现计划中途成没有意义的东ѝ?/p>

2Q?nbsp; 针对工作角色对自已的能力q行培养和知识进行学?fn)?/p>

关键的能?

 (1. 记忆能力Q要学会(x)把自已的写的代码和改的代码记的清清楚楚。要能提高效率?/p>

 Q?Q?逻辑思维能力Q要多多的看别h的复杂逻辑的代码,分析复杂逻辑的运?/p>

 Q?Q全局能力Q?不要再范改了东,却西出错。(构造Y件这个很重要Q?/p>

 Q?Q学?fn)能力?x) q不是每个项目都你是所熟?zhn)的项目的Qƈ不是每个目中的知识你都知道Q要掌握最新的技术和最有用的知识,是最关键的。要学会(x)Q提高能力,q个东西是永q对自己有好处的?/p>

 Q?Q?沟通能力; 学会(x)q默Q学?x)讲故事Q学?x)交朋友Q学?x)礼节?/p>

 Q?Q自制能力:(x)如果一个h不能自制那这个h以后Q不?x)有很大成果Q即使很大机?x)发展v了,可是因ؓ(f)没有自制能力很容易被人利用,或自己明明知道怎么做,可是是不能控制自己的欲?而常做下无法挽回在错?

 四.    例:(x)java E序员的知识l构?qing)学习(fn)流E:(x)

  (一) 学习(fn)相关工作必须的知?/p>

   1QJava 语言的基Q推荐书Q?java ~程思想》)(j)

关键Q?/p>

Q?.     java 面向对象?qing)对应的E序现实

Q?.     java  多线E?/p>

Q?.     java  |络 socket

Q?.     应用界面

   2Q学?x)用集成开发工具jbuilderQeclipse{一U?Ҏ(gu)资料里的内容Q自已写与例E类似的代码Q但注意不要直接抄它Q一定要自已写。同时最好写C个工E中以便Ҏ(gu)?/p>

   3Q如果用b/sl构要学?fn)jsp的知识(推荐书:(x)?JSP 2.0技术手?》)(j)

关键Q?/p>

Q?Q?界面处理Q?

a . HTML——超文本标志语言:用于昄面如:(x)文本链? 表格,各种标志{?/p>

b. CSS———层叠样式表:控制正文外观的一l格?用于化HTML面?

c. javaScript—嵌入HTML面览器来执行的脚本语a:让页面可以根据用L(fng)操作或事先设|等在客L(fng)q行动态变?而且不需传回服务器。比? 对表单输入的正确性做客户端验?

Q?Qjsp元素:如java代码写法Q对应标?--jsp:include,jsp:useBean,jsp:setProperty,

jsp:getProperty{?jsp的几大对

 (3.  javaBean?qing)其在jsp 中的调用和相兛_?

 (4. 其他技术:(x)

  a. 如何操作数据库—用jdbcQ可能要补充一些数据库的知识,如oracle ,sql server,

包括如何写高效率的查询sql,存储q程{)(j) ,

b. 如何发送email—用javaMailQ?/p>

c. 如何学习(fn)如何用实现文件的上传下蝲Q如果操作文Ӟ

d. 如何操作xml  --用jdom ?jaxpQ这时有必要学习(fn)一下xml 的语法如 dtd{)(j)

e. 如何q程Ҏ(gu)调用—用 rmi

f. 如何q行消息服务 ---?jms

 5.再有些公怼(x)用到 J2EE 的架构如 EJB 作ؓ(f)业务逻辑.

(1.EJB中要分清

(2. struts  MVC

(3. Hibernate 操作数据?/p>

 6Q最好学?fn)一下UML

学用Rose建模

 ?忠告Q?/p>

   1. 不要以ؓ(f)自已很差Q要明白每个人都是这样一步一个脚印的走过来的?我们要有信心)

告诉自已:比尔盖次Q也是同我们一P出生时也是巴掌大.

我们只有多学Q多l才可能有出?

   2. 不要以ؓ(f)自已学的多就很强Q世界上的高手多的是Q问问自己,你每时可以写几行代码,代码一ơ写下来有多错误,如果你一ơ写下没有错误,一时可以?000代码Q那才是真正的高?

   3 . 不要以ؓ(f)自已没有目做就?x)落后于他hQh家是参加了很多项目,可是人家只是目中的一个小角色Q如果我们在I时能都写一些开源的目Q或自己开发和设计一些有用的开源的目Q水q_(qing)能力很快׃来了.

   4.   不要以ؓ(f)自己做过很多的项目就很了不v了。你能说你做的项目中Q你能体?x)整个项目?f)什么要q样设计Qؓ(f)什么要q样开发吗Q相信绝大多数是否定的回{。那q不如多学习(fn)一些已做的目Q了解他们ؓ(f)什么要q么做,Z么这么开发,多看一下它们的目的文档,我们能明白很多,q样把他们的l验放于你未来可能要接手的项目,q样不是更好吗?

   5Q?不要以ؓ(f)自己的学?fn)能力很牛,你能快速阅M本书又能快速掌握它的内容吗



南山隐士 2008-12-11 19:12 发表评论
]]>
Acegi + Spring + Hibernate + Struts 2搭徏Z角色的权限控制系l?/title><link>http://www.aygfsteel.com/flexjava/archive/2008/12/11/245762.html</link><dc:creator>南山隐士</dc:creator><author>南山隐士</author><pubDate>Thu, 11 Dec 2008 10:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/flexjava/archive/2008/12/11/245762.html</guid><wfw:comment>http://www.aygfsteel.com/flexjava/comments/245762.html</wfw:comment><comments>http://www.aygfsteel.com/flexjava/archive/2008/12/11/245762.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/flexjava/comments/commentRss/245762.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/flexjava/services/trackbacks/245762.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="lh3" id="veryContent" style="overflow: hidden; width: 100%"> <table class="contentTable" id="blogContentTable" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="word-wrap: break-word" valign="top"> <div class="wmqeeuq" id="blogContainer" style="font-size: 16px"><img id="paperPicArea0" style="display: none" src="http://imgcache.qq.com/ac/b.gif" alt="" /> <div class="wmqeeuq" id="paperTitleArea" style="display: none" align="center"><span id="paperTitle" style="display: block; font-weight: bolder; word-break: break-all"><font face="" color="#000e04">Acegi + Spring + Hibernate + Struts 2搭徏Z角色的权限控制系l?img class="icon_pic" alt="附带囄" src="http://imgcache.qq.com/ac/b.gif" /></font></span></div> <img id="paperPicArea" style="display: none" src="http://imgcache.qq.com/ac/b.gif" alt="" />安全永远是WEB应用pȝ必须面对的头{大? 也是最头疼的事, 其实安全pȝ只包括两个问题: <font style="line-height: 1.3em" color="#ff0000">认证和授?/font><wbr style="line-height: 1.3em">.    以前做些|站pȝ, 安全(g)逻辑都在攑֜要安全控制的代码前? q样做有很多不好的地? 重复多次的编码就不用说了, 代码UL? 重用性都得不C? 安全(g)逻辑要永q和业务逻辑攑֜一?<br />     那么, 能不能够在进入方法前p用一些安全检? 其实Spring AOP是q个思想, 那么又如何实现安全检呢? Spring Acegi Security 框架是做这个事?<br />      本文主要是讨Z在已有的SSHpȝ? 如何使用Acegi作ؓ(f)安全框架实现<font style="line-height: 1.3em" color="#ff0000">Z角色的权限控?Role Based Access Control RBAC)</font><wbr style="line-height: 1.3em"> , 本文主要是以<font style="line-height: 1.3em" color="#ff0000">Java 5注解</font><wbr style="line-height: 1.3em">的Ş式来配置安全框架, 大大减化配置和操?<br />     本文的主要参考资? <Spring 2.0 核心技术与最?jng)_?gt; W?0?(Spring Acegi 安全框架)<br />                 <_NSpring 2.X -- 企业应用开发详?gt; W?7?(使用Acegi 实施应用pȝ安全)<br />                 acegi-security-1.0.6 官方文<br />     说明: 本文介绍的是RBAC, 在官Ҏ(gu)的基础上有所扩展或改? 以更适合WEB应用pȝ. 其实我觉得大多数的网站基于角色已l够了, 一般都没必要基于权?<br />      文章开?<br /> 一. 下蝲所要的软g或JAR?<br />     我的相关配置? Java 5, Tomcat 5.5.26, Struts 2.0.11, Spring 2.5.1, Hibernate 3.2, Acegi 1.0.6<br /> ? 建立相关的数据库:<br />      数据? 用户信息表User: id, enable, user_name, user_pass, email_box<br />                  角色信息表RoleInfo: id, role_name, role_title, descp<br />                  用户与角色关联表(用户与角色是多对多关p?UserRole: user_id, user_name, role_id, role_name<br />                 q在q三个表中插入相关的数据, 我是定义了两U角?role_name): ROLE_USER, ROLE_ADMIN<br />                 和三个用? 一个用戯色ؓ(f): ROLE_USER, ROLE_ADMIN<br />                  另一个用戯色ؓ(f): ROLE_USER<br />                 W三个没有角?<br /> ? 修改配置文g:<br />     其实对Acegi框架的应用难点就在配|文? 所以要特别注意?<br />     ?src 建立Acegi的配|文? <font style="line-height: 1.3em" color="#ff0000">acegi-security.xml </font><wbr style="line-height: 1.3em"><font style="line-height: 1.3em">当然q个文g的名U是可以L?</font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em">    <font style="line-height: 1.3em" color="#ff0000">acegi-security.xml </font><wbr style="line-height: 1.3em"><font style="line-height: 1.3em">说白了就是配|? 安全拦截? 认证理? 决策理?</font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em">    其内容如?</font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em"><?xml version="1.0" encoding="UTF-8"?><br /> <beans xmlns="<a onclick="showLinkBubble(this);return false" target="_blank" link="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a><wbr>" xmlns:xsi="<a onclick="showLinkBubble(this);return false" target="_blank" link="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a><wbr>"<br />        xsi:schemaLocation="<a onclick="showLinkBubble(this);return false" target="_blank" link="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a><wbr> <a onclick="showLinkBubble(this);return false" target="_blank" link="http://www.springframework.org/schema/beans/spring-beans.xsd">http://www.springframework.org/schema/beans/spring-beans.xsd</a><wbr>"><br /> <!-- =================<wbr>======== 认证理?=================<wbr>======== --><br /> <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"><br /> <property name="providers"><br />    <list><br />     <ref bean="daoAuthenticationProvider" /><br />     <ref bean="rememberMeAuthenticationProvider" /><br />    </list><br /> </property><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em"><!-- ZDAO验证的AuthenticationProvider --><br /> <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"><br /> <property name="userDetailsService" ref="userDetailsService" /><br /> </bean><br /> <font style="line-height: 1.3em" color="#ff0000"><bean id="userDetailsService" class="org.ymcn.security.AcegiUserDeitailsService"><br /> <property name="userDao" ref="userDao" /><br /> <property name="userRoleDao" ref="userRoleDao" /><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em"><bean id="rememberMeAuthenticationProvider" class="org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider"><br /> <property name="key" value="<a href="mailto:obullxl@163.com" target="_blank">obullxl@163.com</a><wbr>" /><br /> </bean><br /> <bean id="rememberMeServices" class="org.acegisecurity.ui.rememberme.TokenBasedRememberMeServices"><br /> <property name="userDetailsService" ref="userDetailsService" /><br /> <property name="parameter" value="<font style="line-height: 1.3em" color="#ff0000">j_remember_me</font><wbr style="line-height: 1.3em">" /><br /> <property name="key" value="<a href="mailto:obullxl@163.com" target="_blank"><font style="font-size: small; line-height: 1.3em">obullxl@163.com</font><wbr style="line-height: 1.3em"></a><wbr>" /><br /> <property name="tokenValiditySeconds" value="31536000" /><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em"><!-- =================<wbr>======== 决策理?=================<wbr>======== --><br /> <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased"><br /> <property name="decisionVoters"><br />    <list><br />     <ref bean="roleVoter" /><br />    </list><br /> </property><br /> <!-- 是否全部弃权?yu)通过 --><br /> <property name="allowIfAllAbstainDecisions" value="false" /><br /> </bean><br /> <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter"><br /> <property name="rolePrefix" value="ROLE_" /><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em"><!-- =================<wbr>======== qo(h)器链 =================<wbr>======== --><br /> <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"><br /> <property name="filterInvocationDefinitionSource"><br />    <value><br />     CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON<br />     PATTERN_TYPE_APACHE_ANT<br />     /**=httpSessionContextIntegrationFilter,logoutFilter,authenticationProcessingFilter,rememberMeFilter,exceptionFilter,securityInterceptor<br />    </value><br /> </property><br /> </bean><br /> <bean id="httpSessionContextIntegrationFilter" class="org.acegisecurity.context.HttpSessionContextIntegrationFilter" /><br /> <bean id="logoutFilter" class="org.acegisecurity.ui.logout.LogoutFilter"><br /> <!-- d退出后的URL --><br /> <font style="line-height: 1.3em" color="#ff0000"><constructor-arg value="/" /><br /> </font><wbr style="line-height: 1.3em"><constructor-arg><br />    <list><br />     <ref bean="rememberMeServices" /><br />     <bean class="org.acegisecurity.ui.logout.SecurityContextLogoutHandler" /><br />    </list><br /> </constructor-arg><br /> <!-- d退出的URL --><br /> <font style="line-height: 1.3em" color="#ff0000"><property name="filterProcessesUrl" value="/j_logout.j" /><br /> </font><wbr style="line-height: 1.3em"></bean><br /> <bean id="authenticationProcessingFilter" class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilter"><br /> <property name="authenticationManager" ref="authenticationManager" /><br /> <!-- dp|后的URL --><br /> <font style="line-height: 1.3em" color="#ff0000"><property name="authenticationFailureUrl" value="/login.jsp?msg=%E6%97%A0%E6%95%88%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E6%88%96%E5%8F%A3%E4%BB%A4" /></font><wbr style="line-height: 1.3em"><br /> <!-- d成功后的URL --><br /> <font style="line-height: 1.3em" color="#ff0000"><property name="defaultTargetUrl" value="/user/cmd.jsp" /></font><wbr style="line-height: 1.3em"><br /> <!-- d的URL --><br /> <font style="line-height: 1.3em" color="#ff0000"><property name="filterProcessesUrl" value="/j_login.j" /></font><wbr style="line-height: 1.3em"><br /> <property name="rememberMeServices" ref="rememberMeServices" /><br /> </bean><br /> <bean id="rememberMeFilter" class="org.acegisecurity.ui.rememberme.RememberMeProcessingFilter"><br /> <property name="authenticationManager" ref="authenticationManager" /><br /> <property name="rememberMeServices" ref="rememberMeServices" /><br /> </bean><br /> <bean id="exceptionFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"><br /> <!-- 出现AuthenticationException时的d入口 --><br /> <property name="authenticationEntryPoint"><br />    <bean class="org.acegisecurity.ui.webapp.AuthenticationProcessingFilterEntryPoint"><br />    <font style="line-height: 1.3em" color="#ff0000"><property name="loginFormUrl" value="/login.jsp" /></font><wbr style="line-height: 1.3em"><br />     <property name="forceHttps" value="false" /><br />    </bean><br /> </property><br /> <!-- 出现AccessDeniedException时的Handler --><br /> <property name="accessDeniedHandler"><br />    <bean class="org.acegisecurity.ui.AccessDeniedHandlerImpl"><br />   <font style="line-height: 1.3em" color="#ff0000"> <property name="errorPage" value="/denied.jsp" /></font><wbr style="line-height: 1.3em"><br />    </bean><br /> </property><br /> </bean><br /> <bean id="securityInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor"><br /> <property name="authenticationManager" ref="authenticationManager" /><br /> <property name="accessDecisionManager" ref="accessDecisionManager" /><br /> <property name="objectDefinitionSource"><br />    <value><br />     CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON<br />     PATTERN_TYPE_APACHE_ANT<br />     /admin/**=ROLE_ADMIN<br />     /user/**=ROLE_USER<br />     /cart/previeworder*=ROLE_USER<br />    </value><br /> </property><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em"></beans></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em">    在上面的配置文g? <font style="line-height: 1.3em" color="#ff0000">U色</font><wbr style="line-height: 1.3em">部分要特别注? 其余的内定w差不多了.</font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="font-size: small; line-height: 1.3em"><bean id="userDetailsService" class="<font style="line-height: 1.3em" color="#ff0000">org.ymcn.security.AcegiUserDeitailsService</font><wbr style="line-height: 1.3em">"><br /> <property name="userDao" ref="userDao" /><br /> <property name="userRoleDao" ref="userRoleDao" /><br /> </bean></font><wbr style="line-height: 1.3em"><br /> <font style="font-size: small; line-height: 1.3em">    在整个应用的安全控制? 我们唯一要编写代码的cd? <font style="line-height: 1.3em" color="#ff0000">org.ymcn.security.AcegiUserDeitailsService</font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="font-size: small; line-height: 1.3em">    pd和登出的代码也不要了.<wbr><a target="_blank"><img style="vertical-align: baseline! important" height="25" src="http://img.baidu.com/hi/face/i_f43.gif" width="25" border="0" alt="" /></a><wbr></font><wbr style="line-height: 1.3em"><br /> <font style="font-size: small; line-height: 1.3em">? 修改 <font style="line-height: 1.3em" color="#ff0000">web.xml</font><wbr style="line-height: 1.3em">, 增加安全控制qo(h)?</font><wbr style="line-height: 1.3em"><br /> <font style="font-size: small; line-height: 1.3em" color="#ff0000"><filter><br />         <filter-name>acegiFilterChain</filter-name><br />         <filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class><br />         <init-param><br />             <param-name>targetClass</param-name><br />             <param-value>org.acegisecurity.util.FilterChainProxy</param-value><br />         </init-param><br />     </filter><br /> <br /> <filter-mapping><br />         <filter-name>acegiFilterChain</filter-name><br />         <url-pattern>*.j</url-pattern><br /> </filter-mapping></font><wbr style="line-height: 1.3em"><br /> <font style="font-size: small; line-height: 1.3em" color="#ff0000">    注意: </font><wbr style="line-height: 1.3em"><font style="line-height: 1.3em">q个qo(h)器一定要在MVC转发qo(h)器的前面!!!!</font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em">? ?<font style="line-height: 1.3em" color="#ff0000">applicationContext.xml</font><wbr style="line-height: 1.3em"> 中增?<font style="line-height: 1.3em" color="#ff0000">Acegi安全控制拦截?/font><wbr style="line-height: 1.3em"> ?<font style="line-height: 1.3em" color="#ff0000">Spring的自动代理功能实现AOP代理</font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em" color="#ff0000"><!-- Acegi安全控制拦截?--><br /> <bean id="serviceSecurityInterceptor" class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor"><br /> <property name="validateConfigAttributes" value="true" /><br /> <property name="authenticationManager" ref="authenticationManager" /><br /> <property name="accessDecisionManager" ref="accessDecisionManager" /><br /> <property name="objectDefinitionSource"><br />    <bean class="org.acegisecurity.intercept.method.MethodDefinitionAttributes"><br />     <property name="attributes"><br />      <bean class="org.acegisecurity.annotation.SecurityAnnotationAttributes" /><br />     </property><br />    </bean><br /> </property><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em"><font style="line-height: 1.3em" color="#ff0000"><!-- 利用Spring的自动代理功能实现AOP代理 --><br /> <bean id="autoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"><br /> <property name="interceptorNames"><br />    <list><br />     <value>transactionInterceptor</value><br />     <value>serviceSecurityInterceptor</value><br />    </list><br /> </property><br /> <property name="beanNames"><br />    <list><br />     <value>userService</value><br />     <value>mailService</value><br />    </list><br /> </property><br /> </bean></font><wbr style="line-height: 1.3em"></font><wbr style="line-height: 1.3em"><br /> ? ~写在利用Acegi框架唯一要我们编写的c?<font style="line-height: 1.3em" color="#ff0000">AcegiUserDeitailsService.java</font><wbr style="line-height: 1.3em"><br /> package org.ymcn.security;<br /> import java.util.List;<br /> import org.acegisecurity.GrantedAuthority;<br /> import org.acegisecurity.GrantedAuthorityImpl;<br /> import org.acegisecurity.userdetails.UserDetails;<br /> import org.acegisecurity.userdetails.UserDetailsService;<br /> import org.acegisecurity.userdetails.UsernameNotFoundException;<br /> import org.apache.commons.logging.Log;<br /> import org.apache.commons.logging.LogFactory;<br /> import org.springframework.dao.DataAccessException;<br /> import org.ymcn.dao.UserDao;<br /> import org.ymcn.dao.UserRoleDao;<br /> import org.ymcn.model.User;<br /> import org.ymcn.model.UserRole;<br /> public class AcegiUserDeitailsService implements UserDetailsService {<br /> private final Log LOG = LogFactory.getLog(AcegiUserDeitailsService.class);<br /> /* 依赖注入 */<br /> private UserDao userDao;<br /> private UserRoleDao userRoleDao;<br /> <br /> public void setUserDao(UserDao userDao) {<br />    this.userDao = userDao;<br /> }<br /> public void setUserRoleDao(UserRoleDao userRoleDao) {<br />    this.userRoleDao = userRoleDao;<br /> }<br /> <br /> /* 用户所有的权限 */<br /> //private final List<GrantedAuthority> grantedAuthList = new ArrayList<GrantedAuthority>(6);<br /> private GrantedAuthority[] grantedAuthArray;<br /> <br /> public UserDetails loadUserByUsername(String userName)<br />     throws UsernameNotFoundException, DataAccessException {<br />    if(LOG.isDebugEnabled()) {<br />     LOG.debug("Loading UserDetails of userName: " + userName);<br />    }<br />    /* 取得用户 */<br />    User user = userDao.getUserByName(userName);<br />    if(user == null) {<br />     LOG.warn("UserDetails load failed: No such UserRole with userName: " + userName);<br />             throw new UsernameNotFoundException("User name is not found.");<br />    }<br />    /* 取得所有用h?*/<br />    List<UserRole> userRoleList = userRoleDao.getUserRoleByUserName(userName);<br />    if(userRoleList == null || userRoleList.size() == 0) {<br />     LOG.warn("UserRole load failed: No such UserRole with userName: " + userName);<br />             throw new UsernameNotFoundException("UserRole is not found.");<br />    }<br />    /* 取得用户的所有角?*/<br />    int size = userRoleList.size();<br />    grantedAuthArray = new GrantedAuthority[size];<br />    int j = 0;<br />    for(int i = 0; i < size; i++) {<br />     UserRole userRole = userRoleList.get(i);<br />     if(userRole != null) {<br />      this.grantedAuthArray[j++] = new GrantedAuthorityImpl(userRole.getRoleName().toUpperCase());<br />     }<br />    }<br />    LOG.info("UserName: " + userName + " loaded successfully.");<br />         return new org.acegisecurity.userdetails.User(userName, user.getUserPass(),<br />            true, true, true, true, this.grantedAuthArray);<br /> }<br /> }<br /> ? 在业务逻辑代码中利?font style="line-height: 1.3em" color="#ff0000">Java 5注释</font><wbr style="line-height: 1.3em">实现安全控制<br /> <font style="line-height: 1.3em" color="#ff0000">@Secured({"ROLE_USER"})<br /> void sendSimpleMail(Long userId);</font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em" color="#ff0000">@Secured({"ROLE_ADMIN"})<br /> void sendAttachmentMail() throws Exception;</font><wbr style="line-height: 1.3em"><br />     其实是在需要安全控制的Ҏ(gu)前加? <font style="line-height: 1.3em" color="#ff0000">@Secured({"角色?})</font><wbr style="line-height: 1.3em">, 非常的简?br /> ? 整个工作完成<br />     Acegi框架完全是一U可插拔式的, 完全可以在原有的pȝ中加?font style="line-height: 1.3em" color="#ff0000">一个配|文?/font><wbr style="line-height: 1.3em">, 和在每个Ҏ(gu)前加? <font style="line-height: 1.3em" color="#ff0000">@Secured({"角色?}) </font><wbr style="line-height: 1.3em"><font style="line-height: 1.3em">可完成.</font><wbr style="line-height: 1.3em"><br /> <font style="line-height: 1.3em">     上面?<font style="line-height: 1.3em" color="#ff0000">AcegiUserDeitailsService.java</font><wbr style="line-height: 1.3em"> 中的?<font style="line-height: 1.3em" color="#ff0000">UserDao, UserRoleDao</font><wbr style="line-height: 1.3em">, 我想一看就知道它们是干什么的? q完全取决于个h的实? 与Acegi无关, 它仅仅只要返回一?return new org.acegisecurity.userdetails.User(userName, user.getUserPass(),<br />           <font style="line-height: 1.3em" color="#ff0000">true</font><wbr style="line-height: 1.3em">, <font style="line-height: 1.3em" color="#ff0000">true</font><wbr style="line-height: 1.3em">, <font style="line-height: 1.3em" color="#ff0000">true</font><wbr style="line-height: 1.3em">, <font style="line-height: 1.3em" color="#ff0000">true</font><wbr style="line-height: 1.3em">, this.<font style="line-height: 1.3em" color="#ff0000">grantedAuthArray</font><wbr style="line-height: 1.3em">) 可以了.</font><wbr style="line-height: 1.3em"></div> <img id="paperPicArea1" style="display: none; position: relative" src="http://imgcache.qq.com/ac/b.gif" alt="" /></td> </tr> </tbody> </table> </div> <img src ="http://www.aygfsteel.com/flexjava/aggbug/245762.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/flexjava/" target="_blank">南山隐士</a> 2008-12-11 18:51 <a href="http://www.aygfsteel.com/flexjava/archive/2008/12/11/245762.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>~Z理思想的管理Y件是没有灵魂??http://www.aygfsteel.com/flexjava/archive/2008/08/27/225018.html南山隐士南山隐士Wed, 27 Aug 2008 05:38:00 GMThttp://www.aygfsteel.com/flexjava/archive/2008/08/27/225018.htmlhttp://www.aygfsteel.com/flexjava/comments/225018.htmlhttp://www.aygfsteel.com/flexjava/archive/2008/08/27/225018.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/225018.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/225018.html上个世纪90q代中期Qؓ(f)了推q我国企业管理信息化Q寻求更大的企业发展I间Q一批具有一定规模的财务软g公司UL(fng)转向企业理软gQ大量冠名ؓ(f)某某理的Y件品迅速涌玎ͼ同时国际理软g巨头UL(fng)抢W国内市场Q在q些软g企业的大力推动下Q我国企业界开始广泛了解管理Y先q性,2004q?2005q_(d)理软g开始成为市速增长的需求,国内众多公司开始用管理Y件成ZU趋ѝ?

 
但是Q现在回q头看来Q真正成功、成熟的理应用案例在中国市Z然凤毛麟角?/div>
 
目前市面上,?#8220;理软g”的成千上万,很多的管理YӞ他们的界面、输入、操作是那么的千一律,q类软gQ开发就是搭U木Q装配的痕迹太重Q没有个性。有专家指出Q管理思想很难“落地”的核心原因就在于对信息层ơ管理的认识的缺失或不Q往往被意识层ơ中的一U习(fn)惯性思维--试图用思想让思想“落地”所束缚(x)Q而现实中Q阻管理思想“落地”的核心问题,恰恰更多的都集中C息层ơ的理问题上了。所以,要想真正让管理思想“落地”Q我们管理者必蟩出意识层ơ来看问题,q用信息层ơ的理手段来进一步解决问题?/div>
 
从这里我们不隑֏玎ͼ问题的根源就在于没有把管理思想真正通过信息化落实下厅R很多管理Y件应用企业,仅仅只是把管理Y件当做一个统计或者发发信息的工具?/div>
 
而用L(fng)正需要的是解决企业在l营理中遇到的问题Q而这些问题的解决需要一个从单项产品到整合应用的发展q程。我国企业最初的需求是财务理、进销存管理,q已l在前些q的财务软g发展潮中得到普?qing)。我国企业现在的需求,是面对着工业化改革与信息化颠覆的双重革命Q需要利用最的成本代h(hun)Q将旧的pȝq移到新的^CQ从而适应|络l济和电(sh)子商务带来的供应铄理、客户关pȝ理等领域的时代变化。我国企业未来的需求,是将企业内外资源的管理纳入到l一的符合我国特色国情的理q_之上Q彻底改造企业管理体制和机制?/div>
 
我们国家的管理YӞq么多年来最~的是管理思想和管理方法,没有U学的管理模型作为支撑,理软g是不能称之ؓ(f)“理软g”的。因为管理Y件的核心不在于Y件技术本w,而是在于理思想的问题?/div>
 
一位业内资׃h士就说了Q?#8220;我们国家十几q来理软g产业的发展,最致命的问题就出在q个地方Q我们很多的软g公司、很多编Eh员不懂管理,不知道企业的理问题是什么,更不知道解决q些问题的管理思想和管理模型是什么,他们开发出来的“理软g”Q当然也׃能真正帮助企业解决管理问题?#8221;q种“理软g”充斥着市场Q客L(fng)普遍不满意也是情理之中的事情了?/div>
 
理软g是用来解决管理问题,其关键在于管理的思想和方法。可以说Q管理思想和方法是理软g的灵。今天,我们很多Z然以为管理Y仉槛很低,大学毕业出来p做,只要?x)编E的人员p做。开发管理Y件品,必须先把要解决的理问题研究清楚Q把解决q些问题的管理方法和理模型的研I清楚,然后再开发Y件品?/div>
 
前沿的Y件技术、独特的行业业务模型加上U学的管理思想和方法,三者的创造性融合,才有可能产生一个真正能创造客户h(hun)值的理软g产品。著名的金和软g产品一直被业界UCؓ(f)“有思想的Y?#8221;Q关键在于金和Y件对协同理软g的准定位,以及(qing)为客户带来真正的价倹{众所周知Q无论前端OApȝq是后端ERP{业务系l,都是遵@固定程的,产品之间q无明显的差异,但是在这两者之间的协同领域Q却存在很高的准入壁垒。金和Y件创造性地发挥独创的精管理思想和协同理念优势,以品、工具和行业解决Ҏ(gu)为基Q构Z适合各个行业的协同管理^台?/div>
 
协同企业是现代企业运营的高状态,企业作ؓ(f)一个整体,一定是一个协同的pȝQ有效的协同军_了企业的l营效率、达成目标的能力、资源的有效利用以及(qing)企业核心能力。金和C6的设计完全符合这U柔性的企业协同理念。协同企业的主要基础是企业流E和知识pȝQ它们本w是刚性的和持l积累的Q但是以此ؓ(f)基础的协同管理^台却是整合的、柔性的Q通过长期的应用和优化Q最l企业的协同能力不断提高,真正成ؓ(f)协同企业?/div>
 
作ؓ(f)国软g企业的责M一Q不能仅仅是销售YӞ更重要的是交l企业一?#8220;利剑”。这p把先q的技术和先进的管理思想一起交l企业。仅?#8220;把Y件用h”?#8220;提高工作效率”q不是最l目的,只有通过理思想的落实,真正提高了企业的理水^Q才是实施管理Y件系l的真实目标。在当前的管理Y件市ZQ过分强调技术含金量以突Z品的先进性也是一U不良的們֐?/div>
 
理软g的开发设计上Q必d体两个条Ӟ(x)一是对业务程的深ȝ?二是设计者所具备的能力。只有好的理解,在Y件设计上没有可供操作的控Ӟ׃能随心所Ʋ的d现设计的初衷Q表现在使用上,则是让用h变它们过ȝ工作?fn)惯和方式。对于管理Y仉域而言Q如果不能将先进的技术通过先进的管理思想把企业用L(fng)应用实际l一hQ再高的技术含金量也只能是事倍功半。技术与应用的融合,其目的是贯彻一U核心管理思想Q其目的是帮助企业实C制机制创新。徏设信息交完备的l织pȝQ确立供应链理的核心地位,全面拓展客户关系理Q最l实C业的资源整合?/div>
 
 
l历了十q风雨,我们有理q信,跨入CU的我国企业理软g市场能更ؓ(f)准确地把握各cȝ理Y件的_NQ解开中国理软g发展症结Q最l推动企业管理进步,促进整个市场朝着健康、有序和独立的方向蓬勃发展?/div>

南山隐士 2008-08-27 13:38 发表评论
]]>使用JspSmartUpload上传下蝲全攻略[转] http://www.aygfsteel.com/flexjava/archive/2008/08/26/224505.html南山隐士南山隐士Tue, 26 Aug 2008 08:12:00 GMThttp://www.aygfsteel.com/flexjava/archive/2008/08/26/224505.htmlhttp://www.aygfsteel.com/flexjava/comments/224505.htmlhttp://www.aygfsteel.com/flexjava/archive/2008/08/26/224505.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/224505.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/224505.html一、安装篇
jspSmartUpload是由www.jspsmart.com|站开发的一个可免费使用的全功能的文件上传下载组Ӟ适于嵌入执行上传下蝲操作的JSP文g中。该lg有以下几个特点:(x)
1、用简单。在JSP文g中仅仅书写三五行JAVA代码可以搞定文件的上传或下载,方便?
2、能全程控制上传。利用jspSmartUploadlg提供的对象及(qing)其操作方法,可以获得全部上传文g的信息(包括文g名,大小Q类型,扩展名,文g数据{)(j)Q方便存取?
3、能对上传的文g在大、类型等斚w做出限制。如此可以o(h)掉不W合要求的文件?
4、下载灵zR仅写两行代码,p把Web服务器变成文件服务器。不文件在Web服务器的目录下或在其它Q何目录下Q都可以利用jspSmartUploadq行下蝲?
5、能文件上传到数据库中Q也能将数据库中的数据下载下来。这U功能针对的是MYSQL数据库,因ؓ(f)不具有通用性,所以本文不准备举例介绍q种用法?
jspSmartUploadlg可以从www.jspsmart.com|站上自׃载,压羃包的名字是jspSmartUpload.zip。下载后Q用WinZip或WinRAR其解压到Tomcat的webapps目录下(本文以Tomcat服务器ؓ(f)例进行介l)(j)。解压后Q将webapps/jspsmartupload目录下的子目录Web-inf名字改ؓ(f)全大写的WEB-INFQ这样一改jspSmartUploadcL能用。因为TomcatҎ(gu)件名大小写敏感,它要求Web应用E序相关的类所在目录ؓ(f)WEB-INFQ且必须是大写。接着重新启动TomcatQ这样就可以在JSP文g中用jspSmartUploadlg了?
注意Q按上述Ҏ(gu)安装后,只有webapps/jspsmartupload目录下的E序可以使用jspSmartUploadlgQ如果想让Tomcat服务器的所有Web应用E序都能用它Q必d如下工作Q?
1Q进入命令行状态,目录切换到Tomcat的webapps/jspsmartupload/WEB-INF目录下?
2Q运行JAR打包命o(h)Qjar cvf jspSmartUpload.jar com
Q也可以打开资源理器,切换到当前目录,用WinZipcom目录下的所有文件压~成jspSmartUpload.zipQ然后将jspSmartUpload.zip换名为jspSmartUpload.jar文g卛_。)(j)
3Q将jspSmartUpload.jar拯到Tomcat的shared/lib目录下?
二、相关类说明?
?Filec?
q个cd装了一个上传文件的所有信息。通过它,可以得到上传文g的文件名、文件大、扩展名、文件数据等信息?
FilecM要提供以下方法:(x)
1、saveAs作用Q将文g换名另存?
原型Q?
public void saveAs(java.lang.String destFilePathName)
?
public void saveAs(java.lang.String destFilePathName, int optionSaveAs)
其中QdestFilePathName是另存的文g名,optionSaveAs是另存的选项Q该选项有三个|分别是SAVEAS_PHYSICAL,SAVEAS_VIRTUALQSAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系l的根目录ؓ(f)文g根目录另存文ӞSAVEAS_VIRTUAL表明以Web应用E序的根目录为文件根目录另存文gQSAVEAS_AUTO则表Clg军_Q当Web应用E序的根目录存在另存文g的目录时Q它?x)选择SAVEAS_VIRTUALQ否则会(x)选择SAVEAS_PHYSICAL?
例如QsaveAs("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘,则另存的文g名实际是c:\upload\sample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用E序的根目录是webapps/jspsmartuploadQ则另存的文件名实际是webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)执行时若Web应用E序根目录下存在upload目录Q则其效果同saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)Q否则同saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)?
Q对于WebE序的开发来_(d)最好用SAVEAS_VIRTUALQ以便移植?
2、isMissing
作用Q这个方法用于判断用h否选择了文Ӟ也即对应的表单项是否有倹{选择了文件时Q它q回false。未选文件时Q它q回true?
原型Qpublic boolean isMissing()
3、getFieldName
作用Q取HTML表单中对应于此上传文件的表单的名字?
原型Qpublic String getFieldName()
4、getFileName
作用Q取文g名(不含目录信息Q?
原型Qpublic String getFileName()
5、getFilePathName
作用Q取文g全名Q带目录Q?
原型Qpublic String getFilePathName
6、getFileExt
作用Q取文g扩展名(后缀Q?
原型Qpublic String getFileExt()
7、getSize
作用Q取文g长度Q以字节计)(j)
原型Qpublic int getSize()
8、getBinaryData
作用Q取文g数据中指定位Ud的一个字节,用于(g)文件等处理?
原型Qpublic byte getBinaryData(int index)。其中,index表示位移Q其值在0到getSize()-1之间?
?Filesc?
q个c表C所有上传文件的集合Q通过它可以得C传文件的数目、大等信息。有以下Ҏ(gu)Q?
1、getCount
作用Q取得上传文件的数目?
原型Qpublic int getCount()
2、getFile
作用Q取得指定位Ud的文件对象FileQ这是com.jspsmart.upload.FileQ不是java.io.FileQ注意区分)(j)?
原型Qpublic File getFile(int index)。其中,index为指定位U,其值在0到getCount()-1之间?
3、getSize
作用Q取得上传文件的总长度,可用于限制一ơ性上传的数据量大?
原型Qpublic long getSize()
4、getCollection
作用Q将所有上传文件对象以Collection的Ş式返回,以便其它应用E序引用Q浏览上传文件信息?
原型Qpublic Collection getCollection()
5、getEnumeration
作用Q将所有上传文件对象以EnumerationQ枚举)(j)的Ş式返回,以便其它应用E序览上传文g信息?
原型Qpublic Enumeration getEnumeration()
?Requestc?
q个cȝ功能{同于JSP内置的对象request。只所以提供这个类Q是因ؓ(f)对于文g上传表单Q通过request对象无法获得表单的|必须通过jspSmartUploadlg提供的Request对象来获取。该cL供如下方法:(x)
1、getParameter
作用Q获取指定参C倹{当参数不存在时Q返回gؓ(f)null?
原型Qpublic String getParameter(String name)。其中,name为参数的名字?
2、getParameterValues
作用Q当一个参数可以有多个值时Q用此方法来取其倹{它q回的是一个字W串数组。当参数不存在时Q返回gؓ(f)null?
原型Qpublic String[] getParameterValues(String name)。其中,name为参数的名字?
3、getParameterNames
作用Q取得Request对象中所有参数的名字Q用于遍历所有参数。它q回的是一个枚丑֞的对象?
原型Qpublic Enumeration getParameterNames()
?SmartUploadc这个类完成上传下蝲工作?
AQ上传与下蝲q的方法:(x)
只有一个:(x)initialize?
作用Q执行上传下载的初始化工作,必须W一个执行?
原型Q有多个Q主要用下面这个:(x)
public final void initialize(javax.servlet.jsp.PageContext pageContext)
其中QpageContext为JSP面内置对象Q页面上下文Q?
BQ上传文件用的Ҏ(gu)Q?
1、upload
作用Q上传文件数据。对于上传操作,W一步执行initializeҎ(gu)Q第二步p执行q个Ҏ(gu)?
原型Qpublic void upload()
2、save
作用Q将全部上传文g保存到指定目录下Qƈq回保存的文件个数?
原型Qpublic int save(String destPathName)
和public int save(String destPathName,int option)
其中QdestPathName为文件保存目录,optionZ存选项Q它有三个|分别是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。(同FilecȝsaveAsҎ(gu)的选项之值类|(j)SAVE_PHYSICAL指示lg文件保存到以操作系l根目录为文件根目录的目录下QSAVE_VIRTUAL指示lg文件保存到以Web应用E序根目录ؓ(f)文g根目录的目录下,而SAVE_AUTO则表C由lg自动选择?
注:(x)save(destPathName)作用{同于save(destPathName,SAVE_AUTO)?
3、getSize
作用Q取上传文g数据的总长?
原型Qpublic int getSize()
4、getFiles
作用Q取全部上传文gQ以Files对象形式q回Q可以利用Filescȝ操作Ҏ(gu)来获得上传文件的数目{信息?
原型Qpublic Files getFiles()
5、getRequest
作用Q取得Request对象Q以便由此对象获得上传表单参C倹{?
原型Qpublic Request getRequest()
6、setAllowedFilesList
作用Q设定允怸传带有指定扩展名的文Ӟ当上传过E中有文件名不允许时Q组件将抛出异常?
原型Qpublic void setAllowedFilesList(String allowedFilesList)
其中QallowedFilesList为允怸传的文g扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文gQ可以用两个逗号表示。例如:(x)setAllowedFilesList("doc,txt,,")允怸传带doc和txt扩展名的文g以及(qing)没有扩展名的文g?
7、setDeniedFilesList
作用Q用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限Ӟ则上传时lg抛出异常?
原型Qpublic void setDeniedFilesList(String deniedFilesList)
其中QdeniedFilesList为禁止上传的文g扩展名列表,各个扩展名之间以逗号分隔。如果想止上传那些没有扩展名的文gQ可以用两个逗号来表C。例如:(x)setDeniedFilesList("exe,bat,,")禁止上传带exe和bat扩展名的文g以及(qing)没有扩展名的文g?
8、setMaxFileSize
作用Q设定每个文件允怸传的最大长度?
原型Qpublic void setMaxFileSize(long maxFileSize)
其中QmaxFileSizeZؓ(f)每个文g允许上传的最大长度,当文件超出此长度Ӟ不被上传?
9、setTotalMaxFileSize
作用Q设定允怸传的文g的总长度,用于限制一ơ性上传的数据量大?
原型Qpublic void setTotalMaxFileSize(long totalMaxFileSize)
其中QtotalMaxFileSize为允怸传的文g的总长度?
CQ下载文件常用的Ҏ(gu)
1、setContentDisposition
作用Q将数据q加到MIME文g头的CONTENT-DISPOSITION域。jspSmartUploadlg?x)在q回下蝲的信息时自动填写MIME文g头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,L(fng)此方法?
原型Qpublic void setContentDisposition(String contentDisposition)
其中QcontentDispositiond的数据。如果contentDisposition为nullQ则lg自动添?attachment;"Q以表明下载的文g作ؓ(f)附gQ结果是IE览器将?x)提C另存文Ӟ而不是自动打开q个文gQIE览器一般根据下载的文g扩展名决定执行什么操作,扩展名ؓ(f)doc的将用wordE序打开Q扩展名为pdf的将用acrobatE序打开Q等{)(j)?
2、downloadFile
作用Q下载文件?
原型Q共有以下三个原型可用,W一个最常用Q后两个用于Ҏ(gu)情况下的文g下蝲Q如更改内容cdQ更改另存的文g名)(j)?
?public void downloadFile(String sourceFilePathName)
其中QsourceFilePathName下蝲的文件名Q带目录的文件全名)(j)
?public void downloadFile(String sourceFilePathName,String contentType)
其中QsourceFilePathName下蝲的文件名Q带目录的文件全名)(j),contentType为内容类型(MIME格式的文件类型信息,可被览器识别)(j)?
?public void downloadFile(String sourceFilePathName,String contentType,String destFileName)
其中QsourceFilePathName下蝲的文件名Q带目录的文件全名)(j),contentType为内容类型(MIME格式的文件类型信息,可被览器识别)(j),destFileNameZ载后默认的另存文件名?/font>



南山隐士 2008-08-26 16:12 发表评论
]]>
Spring中配|定时器详解http://www.aygfsteel.com/flexjava/archive/2008/06/25/210601.html南山隐士南山隐士Wed, 25 Jun 2008 09:14:00 GMThttp://www.aygfsteel.com/flexjava/archive/2008/06/25/210601.htmlhttp://www.aygfsteel.com/flexjava/comments/210601.htmlhttp://www.aygfsteel.com/flexjava/archive/2008/06/25/210601.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/210601.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/210601.html 有两U做?br /> 在applicationContext.xml中写入如下Bean
<bean id="repeatingTrigger"
   class="org.springframework.scheduling.timer.ScheduledTimerTask">
   <!--启动一U后执行 -->
   <property name="delay">
    <value>1000</value>
   </property>
   <!--每隔一时执行一?-->
   <property name="period">
    <value>3600000</value>
   </property>
   <!--注入要监控的javaBean -->
   <property name="timerTask">
    <ref bean="task" />
   </property>
   <!--cd是否为fixedRate型,默认为fixedDelay-->
   <property name="fixedRate">
    <value>true</value>
   </property>


</bean>
<bean id="scheduler"
   class="org.springframework.scheduling.timer.TimerFactoryBean">
   <property name="scheduledTimerTasks">
    <list>
     <ref bean="repeatingTrigger" />
    </list>
   </property>
</bean>

<bean id="task" class="com.css.wam.portlet.SampleTask">
   <property name="workService">
    <ref bean="workService" />
   </property>
   <property name="work">
    <ref bean="work" />
   </property>
</bean>

然后写SampleTaskc,如下Q?

 

package com.css.wam.portlet;

 

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.TimerTask;

 

 

import javax.servlet.ServletContext; 字串2

import org.apache.jetspeed.security.SecurityException; 字串9

import com.css.wam.service.WorkService; 字串1

@SuppressWarnings("unused")
class SampleTask extends TimerTask{    字串2

    private static final int C_SCHEDULE_HOUR = 23;//讄指定旉
    private WorkService workService;
    private List users;
    private List teams;
    private WorkPortlet work;
   
    public void setWorkService(WorkService workService) {
   this.workService = workService;
} 字串7

public void setWork(WorkPortlet work) {
   this.work = work;
} 字串4

    public SampleTask(){
    }
   
    @SuppressWarnings("unchecked")
public void run() {
   
        Calendar cal = Calendar.getInstance();
        try {
          users = work.getUsers();
          teams = new ArrayList();
       for(Iterator it = users.iterator(); it.hasNext();)
       {
        String teamname = work.getGroupsByUser((String)it.next());
        teams.add(teamname);
       }
            //查看当前旉与指定是否一_(d)一致则执行d
             if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY) ) 字串6
                 workService.autoWorkOff(users, teams);    字串8

        } catch (SecurityException e) {
     e.printStackTrace();
    }
      }
}



南山隐士 2008-06-25 17:14 发表评论
]]>
如何对象{换成字节?http://www.aygfsteel.com/flexjava/archive/2008/06/25/210583.html南山隐士南山隐士Wed, 25 Jun 2008 08:12:00 GMThttp://www.aygfsteel.com/flexjava/archive/2008/06/25/210583.htmlhttp://www.aygfsteel.com/flexjava/comments/210583.htmlhttp://www.aygfsteel.com/flexjava/archive/2008/06/25/210583.html#Feedback0http://www.aygfsteel.com/flexjava/comments/commentRss/210583.htmlhttp://www.aygfsteel.com/flexjava/services/trackbacks/210583.html * @(#)BeanXML.java 1.00 2005-10-7
*
* Copyright 2005 BeanSoft Studio. All rights reserved.
* PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package beansoft.xml;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;

/**
* BeanXML
*
* Chinese documents:
*
* @author BeanSoft
* @version 1.00 2005-10-7
*/
public class BeanXML {
/**
* 使用 java.beans.XMLEncoder ?对象~码?XML.
* @param bean 对象
* @return String - ~码后的 XML
*/
public static String encodeBean(Object bean) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(out);
encoder.writeObject(bean);
encoder.close();

return out.toString();
}

/**
* 使用 java.beans.XMLDecoder ?XML 解码?对象.
* @param xml - ~码后的 XML
* @return Object 反编码后的对?
*/
public static Object decodeBean(String xml) {
try {
// FIXME 必须使用 GBK 解码才对, 否则出来的文字是q?
XMLDecoder decoder = new XMLDecoder(new ByteArrayInputStream(xml.getBytes("GBK")));
return decoder.readObject();
} catch (UnsupportedEncodingException e) {
}

return null;
}
}


南山隐士 2008-06-25 16:12 发表评论
]]>
վ֩ģ壺 | | | | ʼ| ޻| | | | | | | ˶| ˰| ƽ| | | ԭ| | Դ| | | | | ʱ| | | | ƽ| | ̨| Ѱ| ƽ| | ɽ| | | | ¤| | ͼʲ|