??xml version="1.0" encoding="utf-8" standalone="yes"?>国产人成亚洲第一网站在线播放,亚洲乱妇老熟女爽到高潮的片,无码欧精品亚洲日韩一区http://www.tkk7.com/os586/category/8045.html态度军_一切,思想军_\zh-cnFri, 23 Nov 2007 07:46:31 GMTFri, 23 Nov 2007 07:46:31 GMT60[转]FindBugs:Eclipse插ghttp://www.tkk7.com/os586/archive/2007/11/22/162461.html水煮三国水煮三国Thu, 22 Nov 2007 12:47:00 GMThttp://www.tkk7.com/os586/archive/2007/11/22/162461.htmlhttp://www.tkk7.com/os586/comments/162461.htmlhttp://www.tkk7.com/os586/archive/2007/11/22/162461.html#Feedback0http://www.tkk7.com/os586/comments/commentRss/162461.htmlhttp://www.tkk7.com/os586/services/trackbacks/162461.html官方|站Q?a >http://findbugs.sourceforge.net/
Eclipse插gQ?a >http://findbugs.sourceforge.net/downloads.html

  插g理技?/strong>

  提示Q新下蝲的插件PlugIn一定不要都攑֜原始的Eclipse目录下去?br />

  1. 前提是你已经安装好了Eclipse工具了,比如安装在E:\OpenSource\Eclipse\目录下,以下q个目录?ECLIPSE_HOME%来进行表C;
  2. 此时默认的插件是?ECLIPSE_HOME%\plugins目录中的Q?
  3. ?ECLIPSE_HOME%下徏立一个PlugInsNew的目录;
    比如QE:\OpenSource\Eclipse\PlugInsNew\
  4. 你下载了个新的插Ӟ比如叫做QXYZ
     那么在%ECLIPSE_HOME%\PlugInsNew\目录下徏立XYZ目录Q目录里面是eclipse目录Qeclipse目录包含有features与plugins两个子目录;l构如下图所C:

      
  5. 把下载的新插件的文g攑֜以下相应目录?
    %ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features
    %ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins
  6. 建立相关?link的文?
    然后?ECLIPSE_HOME%\links目录里徏立一个XYZ.link的文?
    内容如是Qpath=E:/OpenSource/Eclipse/PlugInsNew/XYZ׃行这L路径指示而已?
    当然Q采用相对\径来表示可能更直观一些,方便q行文g整体Ud和小l全部成员的׃n命名用,省得Ud后要改动Link文g里的l对路径而费心费力。直接拷贝过d可以使用?
    即XYZ.link文g的内容如是:path=../PlugInsNew/XYZ
    q样Q如果你下蝲了多个插件就可以如法炮制建立多个Link文gQ想加蝲哪个插g把哪个插g的Link文g攑ֈ%ECLIPSE_HOME%\links的目录中卛_Q用与理都很方便Q徏议千万不要放在默认的安装目录中;
    如果你的%ECLIPSE_HOME%与此不同Q请修改XYZ.link文g里的路径
  7. 删除Q关闭Eclipse
    删除%ECLIPSE_HOME%\links\XYZ.link文g卛_
    删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文?br />
  8. 重新启动Eclipse卛_

  使用

  重新启动Eclipse后,在Help => About Eclipse SDK => Plug-in Details你可以看到由“FindBugs Project”提供的“FindBugs Plug-in”版?.0.17插gQ如下图所C:

  

  FindBugs的用方?/strong>

  FindBugs是一个可以在JavaE序中发现Bugs的程序?

  它是专门用来L处于“Bug Patterns”列表中的代码的?

  Bug Patterns指很有可能是错误的代码的实例?br />
  目前FindBugs最高版?.9.4Q不q更新速度很快的,你应当经怸ȝ看是否有新版本发布。Eclipse plugin for FindBugs最高版?.0.17?br />
  pȝ要求

  使用FindBugs臛_需要JDK1.4.0以上版本QFindBugs是^台独立的Q可以运行于GNU/Linux、Windows、MacOS X {^C?br />
  q行FindBugs臛_需要有256 MB内存Q如果你要分析一个很大的目Q那需要更加多的内存了?br />
  FindBugs独立q行和与Antl合的详l操作就不介l了Q可以看官方的文?a target="_blank">http://findbugs.sourceforge.net/manual/

  独立q行的效果图如下Q?br />
  

  本文主要介绍在Eclipse中用的情况

  打开Bug Details视图

  Windows => Show View => Other?=> FindBugs => BugDetails

  

  在Package Explorer或Navigator视图中,选中你的Java目Q右键,可以看到“Find Bugs”菜单项Q子菜单w有“Find Bugs”和“Clear Bug Markers”两内容,如下图所C:

  

  我们建立一个简单的试文gTest.java 内容如下Q?

public class Test { private String[] name; public String[] getName() { return name; } public void setName(String[] name) { this.name = name; } } 


  我们点中“Find Bugs”,q行时会出现如下q度框:

  q行l束后可以在Problems中看到增加了如下的警告信息内?br />
  FindBugsq行后的警告信息内容不仅在Problems视图中显C,而且标记在源代码标记框中,在源代码~辑器中我们可以看到警告标识Q如下图Q?

  当光标指向你的警告信息的代码上面Ӟ׃有相应的错误提示信息Q与Eclipse本n的错误或警告信息提示cM?

  选中Problems视图里出现的相应问题Q就会在代码~辑器里切换到相应的代码上去Q方便根据相应的提示信息q行代码的修攏V?

  

  在Problems视图里,选中相应的问题条目,右键Q在弹出的菜单中Q可以看到“Show Bug Details”,如下图所C:

  

  点中它,会切换到Bug Details视图上去Q显C更加详l的提示信息?br />
  当然Q在代码~辑H口中,点击带有警告提示信息的图标时Q也会自动切换到Bud DetailsH口去,查看详细的警告信息,如下图所C?br />
  

  Ҏq里详细的信息,你可以得到FindBugsZ么会对你的代码报警告信息Q及相应的处理办法,Ҏ它的提示Q你可以快速方便地q行代码修改?br />
  

  Ҏ提示Q我们将代码修改成如下,再运行就不会报有警告信息了?br />

public class Test { private String[] name; public String[] getName() {     String[] temp = name; return temp; } public void setName(String[] name) {     String[] temp = name; this.name = temp; } } 

  配置FindBugs

  选择你的目Q右?=> Properties => FindBugs =>

  

  可以配置的信息包括如上图所C的四个选项的相兌|:

  1. Run FindBugs Automatically开?

    当此w中后,FindBugs会在你修改JavacL自动q行Q如你设|了Eclipse自动~译开兛_Q当你修改完Java文g保存QFindBugs׃q行Qƈ相应的信息昄出来?

    当此Ҏ有选中Q你只能每次在需要的时候自己去q行FindBugs来检查你的代码?

  2. Minimum priority to report选择?

    q个选择Ҏ让你选择哪个U别的信息进行显C,有Low、Medium、High三个选择可以选择Q很cM于Log4J的别设|啦?比如Q?

    你选择了High选择,那么只有是HighU别的提CZ息才会被昄?

    你选择了Medium选择,那么只有是Medium和HighU别的提CZ息才会被昄?

    你选择了Low选择,那么所有别的提示信息都会被显C?br />
  3. Enable bug categories选择?

    在这里是一些显CBug分类的选择Q?

    Correctness关于代码正确性相x面的

    Performance关于代码性能相关斚w?

    Internationalization关于代码国际化相x面的

    Multithreaded correctness关于代码多线E正性相x面的

    Style关于代码样式相关斚w?br />
    Malicious code vulnerability关于恶意破坏代码相关斚w?

    比如Q如果你把Style的检查框L不选择中它Q那么与Style分类相关的警告信息就不会昄了。其它的cM?br />
  4. Select bug patterns to check for选择?

    在这里你可以选择所要进行检查的相关的Bug Pattern条目

    可以从Bug codes、Detector name、Detector description中看到相应的是要查哪些方面的内容Q你可以Ҏ需要选择或去掉相应的 查条件?

  ȝ

  此插件的功能很不错,可以帮助我们提升Java代码的编写能力,写出更加安全可靠的代码。徏议用或加在Ant里进行持l构建?

  现在Q你可以马上拿出你已l开发的一个项目,查一下你的代码有没有问题?/p>

水煮三国 2007-11-22 20:47 发表评论
]]>
ForwardAction解决我们的页面{向问?/title><link>http://www.tkk7.com/os586/archive/2007/02/03/97708.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Sat, 03 Feb 2007 02:24:00 GMT</pubDate><guid>http://www.tkk7.com/os586/archive/2007/02/03/97708.html</guid><wfw:comment>http://www.tkk7.com/os586/comments/97708.html</wfw:comment><comments>http://www.tkk7.com/os586/archive/2007/02/03/97708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/os586/comments/commentRss/97708.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/os586/services/trackbacks/97708.html</trackback:ping><description><![CDATA[在应用程序中Q可能会l常出现只要Action对象转发到某个JSP的情c在上一点中曾提到L由Action调用JSP是个好习惯。如果我们不必在Action中执行Q何业务逻辑Q却又想遵@从Action讉K面的话Q就可以使用ForwardActionQ它可以使你免去创徏许多I的ActioncR运用ForwardAction的好处是不必创徏自己的Actionc,你需要做的仅仅是在Struts配置文g中配|一个Action mapping?br /><br />  举个例子Q假定你有一个JSP文gindex.jsp Q而且不能直接调用该页面,必须让程序通过一个Actionc调用,那么Q你可以建立以下的Action mapping来实现这一点:<br /><br /><br /><action path="/abc" type="com.apache.struts.actions.ForwardAction" parameter="index.jsp"/><br /><br />q样可以了Q无需再写一个ActioncL完成Q减了文g个数?br /><br />只需要在Struts-config.xml当中配置一个actionMapping卛_?img src ="http://www.tkk7.com/os586/aggbug/97708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/os586/" target="_blank">水煮三国</a> 2007-02-03 10:24 <a href="http://www.tkk7.com/os586/archive/2007/02/03/97708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>smartUpload上传多个文g时要注意的问?/title><link>http://www.tkk7.com/os586/archive/2007/01/05/92117.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Fri, 05 Jan 2007 13:22:00 GMT</pubDate><guid>http://www.tkk7.com/os586/archive/2007/01/05/92117.html</guid><wfw:comment>http://www.tkk7.com/os586/comments/92117.html</wfw:comment><comments>http://www.tkk7.com/os586/archive/2007/01/05/92117.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/os586/comments/commentRss/92117.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/os586/services/trackbacks/92117.html</trackback:ping><description><![CDATA[我的目当中需要同时上传多个文Ӟq且要得C传文?的名字,以及上传到服务器上的文g的名字都要写到相应的数据表当中?br /><br />其实q对于smartUpload来说q不难,但是我还是遇C文g名重复的问题Q?br /><br />我同时上传了五个囄文g(注意文g的字节数q不?Q第一个文件上传成功,而从W二至第五个后就只有一个成功,因ؓ后面的都生成了一个名字?br /><br />服务器上的名字是通过System.currentTimeMillis()得到当前的毫U数Q然后通过SimpleDateFormate格式化的?br /><br />通过getFiles().getCount(),与File.isMissing()Ҏ来判断的Q但是以机的处理速度比较快,所以后面的几个在毫U数上也没有区分开来,看来处理的速度太快了?br /><br />接下来我试了几个大文Ӟ然后׃生成自己惌的文件名了?br /><br />不过q样q是不行啊,不是解决问题的出路?br /><br />我们可以通过循环来我们得到的文件名被改变?br /><br />得到当前的毫U数后加一个@环因子就可以实现了?br /><br />q种问题竟然花了我很长旉才查出来Q惭?!<img src ="http://www.tkk7.com/os586/aggbug/92117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/os586/" target="_blank">水煮三国</a> 2007-01-05 21:22 <a href="http://www.tkk7.com/os586/archive/2007/01/05/92117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再论Domaion Object [From JavaEye]http://www.tkk7.com/os586/archive/2006/10/19/76082.html水煮三国水煮三国Thu, 19 Oct 2006 02:01:00 GMThttp://www.tkk7.com/os586/archive/2006/10/19/76082.htmlhttp://www.tkk7.com/os586/comments/76082.htmlhttp://www.tkk7.com/os586/archive/2006/10/19/76082.html#Feedback0http://www.tkk7.com/os586/comments/commentRss/76082.htmlhttp://www.tkk7.com/os586/services/trackbacks/76082.html既然大家都统一了观点,那么有了一个很好的讨论问题的基了。Martin Fowler的Domain ModelQ或者说我们的第二种模型N是完无~的吗?当然不是Q接下来我就要分析一下它的不I以及可能的解军_法,而这些都来源于我个h的实跉|索?/p>

在第二种模型中,我们可以清楚的把q?个类分ؓ三层Q?/p>

1、实体类层,即ItemQ带有domain logic的domain object
2、DAO层,即ItemDao和ItemDaoHibernateImplQ抽象持久化操作的接口和实现c?
3、业务逻辑层,即ItemManagerQ接受容器事务控Ӟ向Web层提供统一的服务调?/p>

在这三层中我们大家可以看刎ͼdomain object和DAO都是非常E_的层Q其实原因也很简单,因ؓdomain object是映数据库字段的,数据库字D不会频J变动,所以domain object也相对稳定,而面向数据库持久化编E的DAO层也不过是CRUD而已Q不会有更多的花P所以也很稳定?/p>

问题在于这个充当business workflow facade的业务逻辑对象Q它的变动是相当频繁的?span style="COLOR: red">业务逻辑对象通常都是无状态的、受事务控制的、Singletonc?/span>Q我们可以考察一下业务逻辑对象都有哪几cM务逻辑ҎQ?/p>

W一c:DAO接口Ҏ的代?/span>Q就是上面例子中的loadItemByIdҎ和findAllҎ?/p>

ItemManager之所以要代理q种c,目的有两个:向Web层提供统一的服务调用入口点和给持久化方法增加事务控制功?/span>。这两点都很Ҏ理解Q你不能既给Web层程序员提供xxxManagerQ也l他提供xxxDaoQ所以你需要用xxxManager装xxxDaoQ在q里Q充当了一个简单代理功能;而事务控制也是持久化Ҏ必须的,事务可能需要跨多个DAOҎ调用Q所以必L在业务逻辑层,而不能放在DAO层?/p>

但是必须看到Q对于一个典型的web应用来说Q绝大多数的业务逻辑都是单的CRUD逻辑Q所以这U情况下Q针Ҏ个DAOҎQxxxManager都需要提供一个对应的装ҎQ这不但是非常枯燥的Q也是o人感觉非怸好的?/p>

W二c:domain logic的方法代?/span>。就是上面例子中placeBidҎ。虽然Item已经有了placeBidҎQ但是ItemManager仍然需要封装一下Item的placeBidQ然后再提供一个简单封装之后的代理Ҏ?/p>

q和W一U情늱|其原因也一P也是ZlWeb层提供一个统一的服务调用入口点和给隐式的持久化动作提供事务控制?/p>

同样Q和W一U情况一P针对每个domain logicҎQxxxManager都需要提供一个对应的装ҎQ同h枯燥的,令h不爽的?/p>

W三c:需要多个domain object和DAO参与协作的business workflow。这U情冉|业务逻辑对象真正应该完成的职责?/p>

在这个简单的例子中,没有涉及到这U情况,不过大家都可以想像的出来q种应用场景Q因此不必D例说明了?/p>

通过上面的分析可以看出,只有W三cM务逻辑Ҏ才是业务逻辑对象真正应该承担的职责,而前两类业务逻辑Ҏ都是“无奈之䏀,不得不ؓ之的事情Q不但枯燥,而且令h沮?/p>

分析完了业务逻辑对象Q我们再回头看一下domain objectQ我们要仔细考察一下domain logic的话Q会发现domain logic也分Zc:

W一c:需要持久层框架隐式的实现透明持久化的domain logicQ例如Item的placeBidҎ中的q一句:

代码
						this
						.
						getBids
						().
						add
						(
						newBid
						);
				

上面已经着重提刎ͼ虽然q仅仅只是一个Java集合的添加新元素的操作,但是实际上通过事务的控Ӟ会潜在的触发两条SQLQ一条是insert一条记录到bid表,一条是更新item表相应的记录。如果我们让ItemqHibernateq行单元试Q它是一个单U的Java集合操作Q如果我们把他加入到Hibernate框架中,他就会潜在的触发两条SQLQ?span style="COLOR: red">q就是隐式的依赖于持久化的domain logic?
特别h意的一ҎQ在没有Hibernate/JDOq类可以实现“透明的持久化”工具出C前,q类domain logic是无法实现的?

对于q一cdomain logicQ业务逻辑对象必须提供相应的封装方法,以实C务控制?/p>

W二c:完全不依赖持久化的domain logicQ例如readonly例子中的TopicQ如下:

java代码
class Topic{
booleanisAllowReply(){
CalendardueDate=Calendar.getInstance();
dueDate.setTime(lastUpdatedTime);
dueDate.add(Calendar.DATE,forum.timeToLive);

Datenow=newDate();
returnnow.after(dueDate.getTime());
}
}

注意q个isAllowReplyҎQ他和持久化完全不发生一丁点关系。在实际的开发中Q我们同样会遇到很多q种不需要持久化的业务逻辑(主要发生在日期运、数D和枚Dq算斚w)Q这Udomain logic不管q不脱L在的框架Q它的行为都是一致的。对于这Udomain logicQ业务逻辑层ƈ不需要提供封装方法,它可以适用于Q何场合?/p>

水煮三国 2006-10-19 10:01 发表评论
]]>
ȝ一下最q关于domain object以及相关的讨?[From:JAVAEYE]http://www.tkk7.com/os586/archive/2006/10/19/76070.html水煮三国水煮三国Thu, 19 Oct 2006 01:19:00 GMThttp://www.tkk7.com/os586/archive/2006/10/19/76070.htmlhttp://www.tkk7.com/os586/comments/76070.htmlhttp://www.tkk7.com/os586/archive/2006/10/19/76070.html#Feedback2http://www.tkk7.com/os586/comments/commentRss/76070.htmlhttp://www.tkk7.com/os586/services/trackbacks/76070.html在最q的围绕domain object的讨Z现出来了三U模型,(q有一些其他的旁枝Q不一一分析?Q经q一番讨论,各种问题逐渐清晰hQ在q里我试囑ց一个ȝQ便于大家了解和掌握?/p>

W一U模型:只有getter/setterҎ的纯数据c,所有的业务逻辑完全由business object来完?又称TransactionScript)Q这U模型下的domain object被Martin FowlerUC为“血的domain object”。下面用举一个具体的代码来说明,代码来自Hibernate的caveatemptorQ但l过我的改写Q?/p>

一个实体类叫做ItemQ指的是一个拍卖项?
一个DAO接口cd做ItemDao
一个DAO接口实现cd做ItemDaoHibernateImpl
一个业务逻辑cd做ItemManager(或者叫做ItemService)

java代码
						public
						class 
						Item
						implements
						Serializable
						{
						
private Long id = null ;
private int version ;
private String name ;
private User seller ;
private String description ;
private MonetaryAmount initialPrice ;
private MonetaryAmount reservePrice ;
private Date startDate ;
private Date endDate ;
private Set categorizedItems = new HashSet ();
private Collection bids = new ArrayList ();
private Bid successfulBid ;
private ItemState state ;
private User approvedBy ;
private Date approvalDatetime ;
private Date created = new Date ();
/ / getter / setterҎ省略不写Q避免篇q太?/span>
}

java代码
						public
						interface
						ItemDao
						{
						
public Item getItemById ( Long id );
public Collection findAll ();
public void updateItem ( Item item );
}

ItemDao定义持久化操作的接口Q用于隔L久化代码?/p>

java代码
						public
						class 
						ItemDaoHibernateImpl
						implements
						ItemDao
						extends
						HibernateDaoSupport
						{
						
public Item getItemById ( Long id ) {
return ( Item ) getHibernateTemplate (). load ( Item . class , id );
}
public Collection findAll () {
return ( List ) getHibernateTemplate (). find (" from Item ");
}
public void updateItem ( Item item ) {
getHibernateTemplate (). update ( item );
}
}

ItemDaoHibernateImpl完成具体的持久化工作Q请注意Q数据库资源的获取和释放是在ItemDaoHibernateImpl里面处理的,每个DAOҎ调用之前打开SessionQDAOҎ调用之后Q关闭Session?Session攑֜ThreadLocal中,保证一ơ调用只打开关闭一?

java代码
publicclass ItemManager{
privateItemDaoitemDao;
publicvoidsetItemDao(ItemDaoitemDao){this.itemDao=itemDao;}
publicBidloadItemById(Longid){
itemDao.loadItemById(id);
}
publicCollectionlistAllItems(){
returnitemDao.findAll();
}
publicBidplaceBid(Itemitem,Userbidder,MonetaryAmountbidAmount,
BidcurrentMaxBid,BidcurrentMinBid)throwsBusinessException{
if(currentMaxBid!=null&&currentMaxBid.getAmount().compareTo(bidAmount)>0){
thrownewBusinessException("Bid too low.");
}

//Auctionisactive
if(!state.equals(ItemState.ACTIVE))
thrownewBusinessException("Auction is not active yet.");

//Auctionstillvalid
if(item.getEndDate().before(newDate()))
thrownewBusinessException("Can't place new bid, auction already ended.");

//CreatenewBid
BidnewBid=newBid(bidAmount,item,bidder);

//PlacebidforthisItem
item.getBids().add(newBid);
itemDao.update(item);// 调用DAO完成持久化操?/span>
returnnewBid;
}
}

事务的管理是在ItemMangerq一层完成的QItemManager实现具体的业务逻辑。除了常见的和CRUD有关的简单逻辑之外Q这里还有一个placeBid的逻辑Q即目的竞标?/p>

以上是一个完整的W一U模型的CZ代码。在q个CZ中,placeBidQloadItemByIdQfindAll{等业务逻辑l统攑֜ItemManager中实玎ͼ而Item只有getter/setterҎ?br />




W二U模型,也就是Martin Fowler指的rich domain object是下面这样子的:

一个带有业务逻辑的实体类Q即domain object是Item
一个DAO接口ItemDao
一个DAO实现ItemDaoHibernateImpl
一个业务逻辑对象ItemManager

java代码
publicclass ItemimplementsSerializable{
// 所有的属性和getter/setterҎ同上Q省?/span>
publicBidplaceBid(Userbidder,MonetaryAmountbidAmount,
BidcurrentMaxBid,BidcurrentMinBid)
throwsBusinessException{

//Checkhighestbid(canalsobeadifferentStrategy(pattern))
if(currentMaxBid!=null&&currentMaxBid.getAmount().compareTo(bidAmount)>0){
thrownewBusinessException("Bid too low.");
}

//Auctionisactive
if(!state.equals(ItemState.ACTIVE))
thrownewBusinessException("Auction is not active yet.");

//Auctionstillvalid
if(this.getEndDate().before(newDate()))
thrownewBusinessException("Can't place new bid, auction already ended.");

//CreatenewBid
BidnewBid=newBid(bidAmount,this,bidder);

//PlacebidforthisItem
this.getBids.add(newBid);// h意这一句,透明的进行了持久化,但是不能在这里调?span class="constant">ItemDaoQItem不能对ItemDao产生依赖Q?/span>

returnnewBid;
}
}

竞标q个业务逻辑被放入到Item中来。请注意this.getBids.add(newBid); 如果没有Hibernate或者JDOq种O/R Mapping的支持,我们是无法实现这U透明的持久化行ؓ的。但是请注意QItem里面不能去调用ItemDAOQ对ItemDAO产生依赖Q?/p>

ItemDao和ItemDaoHibernateImpl的代码同上,省略?/p>

java代码
publicclass ItemManager{
privateItemDaoitemDao;
publicvoidsetItemDao(ItemDaoitemDao){this.itemDao=itemDao;}
publicBidloadItemById(Longid){
itemDao.loadItemById(id);
}
publicCollectionlistAllItems(){
returnitemDao.findAll();
}
publicBidplaceBid(Itemitem,Userbidder,MonetaryAmountbidAmount,
BidcurrentMaxBid,BidcurrentMinBid)throwsBusinessException{
item.placeBid(bidder,bidAmount,currentMaxBid,currentMinBid);
itemDao.update(item);// 必须昑ּ的调?span class="constant">DAOQ保持持久化
}
}

在第二种模型中,placeBid业务逻辑是放在Item中实现的Q而loadItemById和findAll业务逻辑是放在ItemManager中实现的。不q值得注意的是Q即使placeBid业务逻辑攑֜Item中,你仍焉要在ItemManager中简单的装一层,以保证对placeBid业务逻辑q行事务的管理和持久化的触发?/p>

q种模型是Martin Fowler所指的真正的domain model。在q种模型中,有三个业务逻辑ҎQplaceBidQloadItemById和findAllQ现在的问题是哪个逻辑应该攑֜Item中,哪个逻辑应该攑֜ItemManager中。在我们q个例子中,placeBid攑֜Item?但是ItemManager也需要对它进行简单的装)QloadItemById和findAll是放在ItemManager中的?/p>

切分的原则是什么呢Q?Rod Johnson提出原则是“case by case”,可重用度高的Q和domain object状态密切关联的攑֜Item中,可重用度低的Q和domain object状态没有密切关联的攑֜ItemManager中?/p>

我提出的原则是:看业务方法是否显式的依赖持久化?/span>

Item的placeBidq个业务逻辑Ҏ没有昑ּ的对持久化ItemDao接口产生依赖Q所以要攑֜Item中?span style="COLOR: red">h意,如果q了Hibernateq个持久化框ӞItemq个domain object是可以进行单元测试的Q他不依赖于Hibernate的持久化机制。它是一个独立的Q可UL的,完整的,自包含的域对?/span>?/p>

而loadItemById和findAllq两个业务逻辑Ҏ是必L式的Ҏ久化ItemDao接口产生依赖Q否则这个业务逻辑无法完成。如果你要把q两个方法放在Item中,那么Item无法脱Hibernate框架Q无法在Hibernate框架之外独立存在?br />


W三U模型印象中好像是firebody或者是Archie提出?也有可能不是Q记不清楚了)Q简单的来说Q这U模型就是把W二U模型的domain object和business object合二Z了。所以ItemManager׃需要了Q在q种模型下面Q只有三个类Q他们分别是Q?/p>

ItemQ包含了实体cM息,也包含了所有的业务逻辑
ItemDaoQ持久化DAO接口c?
ItemDaoHibernateImplQDAO接口的实现类

׃ItemDao和ItemDaoHibernateImpl和上面完全相同,q略了?/p>

java代码
publicclass ItemimplementsSerializable{
// 所有的属性和getter/setterҎ都省?/span>
privatestaticItemDaoitemDao;
publicvoidsetItemDao(ItemDaoitemDao){this.itemDao=itemDao;}

publicstaticItemloadItemById(Longid){
return(Item)itemDao.loadItemById(id);
}
publicstaticCollectionfindAll(){
return(List)itemDao.findAll();
}

publicBidplaceBid(Userbidder,MonetaryAmountbidAmount,
BidcurrentMaxBid,BidcurrentMinBid)
throwsBusinessException{

//Checkhighestbid(canalsobeadifferentStrategy(pattern))
if(currentMaxBid!=null&&currentMaxBid.getAmount().compareTo(bidAmount)>0){
thrownewBusinessException("Bid too low.");
}

//Auctionisactive
if(!state.equals(ItemState.ACTIVE))
thrownewBusinessException("Auction is not active yet.");

//Auctionstillvalid
if(this.getEndDate().before(newDate()))
thrownewBusinessException("Can't place new bid, auction already ended.");

//CreatenewBid
BidnewBid=newBid(bidAmount,this,bidder);

//PlacebidforthisItem
this.addBid(newBid);
itemDao.update(this);// 调用DAOq行昑ּ持久?/span>
returnnewBid;
}
}

在这U模型中Q所有的业务逻辑全部都在Item中,事务理也在Item中实现?/p>

水煮三国 2006-10-19 09:19 发表评论
]]>
Java/JSP中文q问题解决心得http://www.tkk7.com/os586/archive/2006/09/25/71644.html水煮三国水煮三国Mon, 25 Sep 2006 01:13:00 GMThttp://www.tkk7.com/os586/archive/2006/09/25/71644.htmlhttp://www.tkk7.com/os586/comments/71644.htmlhttp://www.tkk7.com/os586/archive/2006/09/25/71644.html#Feedback0http://www.tkk7.com/os586/comments/commentRss/71644.htmlhttp://www.tkk7.com/os586/services/trackbacks/71644.html
一、Java中文问题的由来?br />
Java的内核和class文g是基于unicode的,qJavaE序h良好的跨q_性,但也带来了一些中文ؕ码问题的ȝ。原因主要有两方面,Java和JSP文g本n~译时生的q问题和JavaE序于其他媒介交互生的q问题?br />
首先JavaQ包括JSPQ源文g中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP~译成class文gq程中,使用的编码方式与源文件的~码不一_׃出现q。基于这Uؕ码,在Java文g中尽量不要写中文Q注释部分不参与~译Q写中文没关p)Q如果必d的话Q尽量手动带参数Qecoding GBK或-ecoding gb2312~译Q对于JSPQ在文g头加?lt;%@ page contentType="text/html;charset=GBK"%>?lt;%@ page contentType="text/html;charset=gb2312"%>基本上就能解册cMؕ码问题?br />
本文要重点讨论的是第二类qQ即JavaE序与其他存储媒介交互时产生的ؕ码。很多存储媒介,如数据库Q文Ӟ等的存储方式都是基于字节流的,JavaE序与这些媒介交互时׃发生字符(char)与字?byte)之间的{换,具体情况如下Q?br />
从页面form提交数据到javaE序 byteQ?gt;char
从javaE序到页面显C char?>byte

从数据库到javaE序 byte?>char
从javaE序到数据库 char?>byte

从文件到javaE序 byteQ?gt;char
从javaE序到文件 charQ?gt;byte

从流到javaE序 byteQ?gt;char
从javaE序到流 charQ?gt;byte

如果在以上{换过E中使用的编码方式与字节原有的编码不一_很可能就会出Cؕ码?br />
二、解x法?br />
前面已经提到了JavaE序与其他媒介交互时字符和字节的转换q程Q如果这些{换过E中Ҏ产生q。解册些ؕ码问题的关键在于保转换时用的~码方式与字节原有的~码方式保持一_下面分别QJava或JSP自n产生的ؕ码请参看W一部分Q?br />
1、JSP与页面参C间的q 
JSP获取面参数时一般采用系l默认的~码方式Q如果页面参数的~码cd和系l默认的~码cd不一_很可能就会出Cؕ码。解册cMؕ码问题的基本Ҏ是在面获取参数之前Q强制指定request获取参数的编码方式:request.setCharacterEncoding("GBK")或request.setCharacterEncoding("gb2312")?br />如果在JSP变量输出到面时出CqQ可以通过讄response.setContentType("text/html;charset=GBK")或response.setContentType("text/html;charset=gb2312")解决?br />如果不想在每个文仉都写q样两句话,更简z的办法是用Servlet规范中的q虑器指定编码,qo器的在web.xml中的典型配置和主要代码如下:
web.xml:

<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>net.vschool.web.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

CharacterEncodingFilter.java:

public class CharacterEncodingFilter implements Filter 
{

protected String encoding = null; 

public void init(FilterConfig filterConfig) throws ServletException 
{
this.encoding = filterConfig.getInitParameter("encoding");
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
{
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset="+encoding);
chain.doFilter(request, response);
}

}


2、Java与数据库之间的ؕ码?br />大部分数据库都支持以unicode~码方式Q所以解决Java与数据库之间的ؕ码问题比较明智的方式是直接用unicode~码与数据库交互。很多数据库驱动自动支持unicodeQ如Microsoft的SQLServer驱动。其他大部分数据库驱动,可以在驱动的url参数中指定,如如mm的mysql驱动Qjdbc:mysql://localhost/WEBCLDB?useUnicode=true&characterEncoding=GBK?br />
3、Java与文?之间的q 
Javad文g最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream和FileOutputStream是基于字节流的,常用于读写二q制文g。读写字W文件徏议用基于字W的FileReader和FileWriterQ省M字节与字W之间的转换。但q两个类的构造函数默认用系l的~码方式Q如果文件内容与pȝ~码方式不一_可能会出Cؕ码。在q种情况下,使用FileReader和FileWriter的父c:InputStreamReader/OutputStreamWriterQ它们也是基于字W的Q但在构造函C可以指定~码cdQInputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。?br />
4、其他?br />上面提到的方法应该能解决大部分ؕ码问题,如果在其他地方还出现qQ可能需要手动修改代码。解决Javaq问题的关键在于在字节与字W的转换q程中,你必ȝ道原来字节或转换后的字节的编码方式,转换旉用的~码必须与这个编码方式保持一致。我们以前用Resin服务器,使用smartUploadlg上传文gQ上传文件同时传递的中文参数获取没有q问题。当在Linux中把Resin讄成服务后Q上传文件同时的中文参数获取出现了ؕ码。这个问题困C我们很久Q后来我们分析smartUploadlg的源文gQ因为文件上传采用的是字节流的方式,里面包含的参数名U和g是字节流的方式传递的。smartUploadlgd字节后再将参数名称和g字节中解析出来Q问题就出现在smartUpload字节流转换成字W串旉用了pȝ默认的编码,而将Resin讄成服务后Q系l默认的~码可能发生了改变,因此出现了ؕ码。后来,我们更改了smartUpload的源文gQ增加了一个属性charset和setCharset(String)ҎQ将upload()Ҏ中提取参数语句:
String value = new String(m_binArray, m_startData, (m_endData - m_startData) + 1 );
Ҏ?br />String value = new String(m_binArray, m_startData, (m_endData - m_startData) + 1, charset );
l于解决了这个ؕ码问题?br />
三、后變W?br />接触Java和JSP已经有一q多了,q一q来最大的收获是越来越喜欢上了JavaQ开始把问题当作乐事ȝIӞ没有了以前的恐惧心理Q我怿我会l箋坚持下去。这一q来Q从|上学习了很多同行的宝贵l验Q在此表C感谢。这是我W一自己ȝ的Java学习心得Q由于水qx限,本文中偏颇和错误之处Q欢q指正。如果对你有些h|在保留作者信息和文章原始出处的前提下可以随处转蝲?br />撰写该文之前已参考了很多关于Java中文问题的文章,其中影响比较大的有owen1944在“Java研究l织”中发表的《这是我们公司ȝ的一些关于中文ؕ码问题的一些解x案和l验和大家分享!》等。本文谈到的解决Ҏ已应用到“基于网l的协作学习pȝQWebCL”等目中,q过资源l定的方式实C该^C文文两个版本的即时切换。GoogleҎ览器自动选择语言Q一个页面同时显C多U语a的国际化应用和R东的《Java中文处理学习W记??Hello Unicode》一文引起了我极大的兴趣Q日后想l探讨Java的国际化问题Q欢q大家一赯论?br />

水煮三国 2006-09-25 09:13 发表评论
]]>
在线~辑?转摘) http://www.tkk7.com/os586/archive/2006/09/22/71319.html水煮三国水煮三国Fri, 22 Sep 2006 06:44:00 GMThttp://www.tkk7.com/os586/archive/2006/09/22/71319.htmlhttp://www.tkk7.com/os586/comments/71319.htmlhttp://www.tkk7.com/os586/archive/2006/09/22/71319.html#Feedback0http://www.tkk7.com/os586/comments/commentRss/71319.htmlhttp://www.tkk7.com/os586/services/trackbacks/71319.htmlFCKeditor在线~辑器的使用

(转蝲Q?/p>

html在线~辑器对于我们作新闻产品之类的程序是很重要的Q在|上扑ֽ了好了好一D|_发现FCKeditor,跨^台的Q正在进行的jsp目正需要这ƾhtml在线~辑器。试用了一下FCKeditor,Ҏ|上的文章小l一下:

1.下蝲
FCKeditor.java 2.3 (FCKeditot for java)
FCKeditor 2.2 (FCKeditor基本文g)
以下是下载地址Q?br />http://www.fckeditor.net/download/default.html

2.建立目:
建立目tomcat/webapps/TestFCKeditor.

3.FCKeditor2.2解压~?/b>
FCKeditor2.2解压~?整个目录FCKeditor复制到项目的根目录下Q?br />目录l构为:tomcat/webapps/TestFCKeditor/FCKeditor
然后FCKeditor-2.3.zipQjavaQ压~包中\web\WEB-INF\lib\目录下的两个jar文g拷到目的\WEB-INF\lib\目录下。把其中的src目录下的FCKeditor.tld文gcopy到TestFCKedit/FCKeitor/WEB-INF/?br />
4.合ƈweb.xml:
FCKeditor-2.3.zip压羃包中\web\WEB-INF\目录下的web.xml文g合ƈ到项目的\WEB-INF\目录下的web.xml文g中?br />

5. 修改合ƈ后的web.xml文g
修改合ƈ后的web.xml文gQ将名ؓSimpleUploader的Servlet的enabled参数值改为trueQ?br />以允怸传功能,Connector Servlet的baseDir参数值用于设|上传文件存攄位置?br />d标签定义:
<taglib>
<taglib-uri>/TestFCKeditor</taglib-uri>
<taglib-location>/WEB-INF/FCKeditor.tld</taglib-location>
</taglib>

q行图:



6. 映射:
上面文g中两个servlet的映分别ؓQ?editor/filemanager/browser/default/connectors/jsp/connector
?editor/filemanager/upload/simpleuploaderQ需要在两个映射前面加上/FCKeditorQ?br />x?FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?br />/FCKeditor/editor/filemanager/upload/simpleuploader?br />
7.修改skin文g?/b>
q入skin文g夹,如果你想使用fckeditor默认的这U奶黄色Q?br />那就把除了default文g夹外的另两个文g夹直接删?

8.删除无用文g
删除/FCKeditor/目录下除fckconfig.js, fckeditor.js, fckstyles.xml, fcktemplates.xml四个文g以外的所有文?
删除目录/editor/_source,
删除/editor/filemanager/browser/default/connectors/下的所有文?br />删除/editor/filemanager/upload/下的所有文?br />删除/editor/lang/下的除了fcklanguagemanager.js, en.js, zh.js, zh-cn.js四个文g的所有文?br />
9.修改配置Q?/b>
打开/FCKeditor/fckconfig.js
修改 FCKConfig.DefaultLanguage = 'zh-cn' ;
把FCKConfig.LinkBrowserURL{的值替换成以下内容Q?br />FCKConfig.LinkBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Connector=connectors/jsp/connector" ;

FCKConfig.ImageBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Image&Connector=connectors/jsp/connector" ;

FCKConfig.FlashBrowserURL
= FCKConfig.BasePath + "filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector" ;

FCKConfig.LinkUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=File' ;
FCKConfig.FlashUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Flash' ;
FCKConfig.ImageUploadURL = FCKConfig.BasePath + 'filemanager/upload/simpleuploader?Type=Image' ;

10.其它
fckconfig.js总配|文Ӟ可用记录本打开Q修改后文件存为utf-8 ~码格式。找刎ͼ

FCKConfig.TabSpaces = 0 ; 改ؓFCKConfig.TabSpaces = 1 ; 卛_~辑器域内可以用Tab键?br />
如果你的~辑器还用在|站前台的话Q比如说用于留言本或是日记回复时Q那׃得不考虑安全了,
在前台千万不要用Default的toolbarQ要么自定义一下功能,要么qpȝ已经定义好的BasicQ?br />也就是基本的toolbarQ找刎ͼ
FCKConfig.ToolbarSets["Basic"] = [
['Bold','Italic','-','OrderedList','UnorderedList','-',/*'Link',*/'Unlink','-','Style','FontSize','TextColor','BGColor','-',
'Smiley','SpecialChar','Replace','Preview'] ] ;
q是改过的BasicQ把囑փ功能LQ把d链接功能LQ因为图像和链接和flash和图像按钮添加功能都能让前台
늛接访问和上传文gQ?fckeditorq支持编辑域内的鼠标右键功能?br />
FCKConfig.ContextMenu = ['Generic',/*'Link',*/'Anchor',/*'Image',*/'Flash','Select','Textarea','Checkbox','Radio','TextField','HiddenField',
/*'ImageButton',*/'Button','BulletedList','NumberedList','TableCell','Table','Form'] ;

q也是改q的把鼠标右键的“链接、图像,FLASHQ图像按钮”功能都L?br />
   扑ֈQ?FCKConfig.FontNames = 'Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;
加上几种我们常用的字?
FCKConfig.FontNames
= '宋体;黑体;隶书;楷体_GB2312;Arial;Comic Sans MS;Courier New;Tahoma;Times New Roman;Verdana' ;

11.d文g
d文g /TestFCKeditor/test.jsp:
<%@ page language="java" import="com.fredck.FCKeditor.*" %>
<%@ taglib uri="/TestFCKeditor" prefix="FCK" %>
<script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script>

<%--
三种Ҏ调用FCKeditor
1.FCKeditor自定义标{?(必须加头文g <%@ taglib uri="/TestFCKeditor" prefix="FCK" %> )
2.script脚本语言调用 (必须引用 脚本文g <script type="text/javascript" src="/TestFCKeditor/FCKeditor/fckeditor.js"></script> )
3.FCKeditor API 调用 (必须加头文g <%@ page language="java" import="com.fredck.FCKeditor.*" %> )
--%>

<%--
<form action="show.jsp" method="post" target="_blank">
<FCK:editor id="content" basePath="/TestFCKeditor/FCKeditor/"
width="700"
height="500"
skinPath="/TestFCKeditor/FCKeditor/editor/skins/silver/"
toolbarSet = "Default"
>
input
</FCK:editor>
<input type="submit" value="Submit">
</form>
--%>

<form action="show.jsp" method="post" target="_blank">
<table border="0" width="700"><tr><td>
<textarea id="content" name="content" style="WIDTH: 100%; HEIGHT: 400px">input</textarea>
<script type="text/javascript">
var oFCKeditor = new FCKeditor('content') ;
oFCKeditor.BasePath = "/TestFCKeditor/FCKeditor/" ;
oFCKeditor.Height = 400;
oFCKeditor.ToolbarSet = "Default" ;
oFCKeditor.ReplaceTextarea();
</script>
<input type="submit" value="Submit">
</td></tr></table>
</form>

<%--
<form action="show.jsp" method="post" target="_blank">
<%
FCKeditor oFCKeditor ;
oFCKeditor = new FCKeditor( request, "content" ) ;
oFCKeditor.setBasePath( "/TestFCKeditor/FCKeditor/" ) ;
oFCKeditor.setValue( "input" );
out.println( oFCKeditor.create() ) ;
%>
<br>
<input type="submit" value="Submit">
</form>
--%>

d文g/TestFCKeditor/show.jsp:
<%
String content = request.getParameter("content");
out.print(content);
%>

12.试
http://localhost:8080/TestFCKeditor/test.jsp


水煮三国 2006-09-22 14:44 发表评论
]]>
JSP 制作文g下蝲到的问?/title><link>http://www.tkk7.com/os586/archive/2006/09/08/68521.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Fri, 08 Sep 2006 07:22:00 GMT</pubDate><guid>http://www.tkk7.com/os586/archive/2006/09/08/68521.html</guid><wfw:comment>http://www.tkk7.com/os586/comments/68521.html</wfw:comment><comments>http://www.tkk7.com/os586/archive/2006/09/08/68521.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/os586/comments/commentRss/68521.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/os586/services/trackbacks/68521.html</trackback:ping><description><![CDATA[Web开发h员都有过q样的疑问,如何让一个文Ӟ其是一个已知类型的文gQ发送到客户端,直接提示让浏览者下载,而不是用与它相关联的E序打开。以前我们最常用的办法就是把q样的文件加到链接上Q这样可以让览者通过点击鼠标右键的目标另存ؓ来下载所链接的文件。但是,q样有两个不的地方Q?br />一是:如果览器能够识别已下蝲文g的扩展名Q则览器就会激z该扩展名所兌的程序来打开所下蝲的文件。比如:在Windowsq_上,如果用户点击的链接链接的是一个?doc”文件的话,那么Q浏览器׃启动Microsoft Word应用E序来打开它?br />二是Q如果采用链接的办法的话QQ何能看到该链接的人都可以下蝲该文Ӟ你虽然也可以Ҏ下蝲的文件进行权限设|,但那样做也不是很方便的。有时候我们需要更为灵zd富有Ҏ的方式Q下面的E序能够很方便地克服以上两方面的不?br />q种办法是可靠的Q但你必记住:没有授权的用户不能够通过在浏览器地址栏里输入文g的URL来取得该文g的下载权。所以,要下载的文g应该攑ֈ虚拟目录之外的一个目录里Q比如:如果你的虚拟目录是C:\Mengxianhui\Tomcat4\Website\MyApp的话Q那么,存放在该目录和该目录下的M子目录下所有文件对因特|上的Q何用户都是可见的。要直接下蝲一个文Ӟ我们需要做两g事,W一件事是:讑֮响应的内容类为“application/octet-stream”,大小写无兟뀂第二g事是Q设|HTTP的响应头名字为:Content-DispositionQ设定gؓQattachment; filename = theFileName。这里的theFileName是出现在文件下载对话框里的默认文g名,通常和所下蝲的文件名字相同,但也可以不同。下面,我们^常最常用的JSP和ASP面来D一个实际应用的例子?br /><br />TestFileDownload.JSP面的例子:<br /><br /><%<br />// 得到文g名字和\?br />String filename = "MengxianhuiDocTest.doc";<br />String filepath = "D:\\";<br /><br />// 讄响应头和下蝲保存的文件名<br />response.setContentType("APPLICATION/OCTET-STREAM");<br />response.setHeader("Content-Disposition",<br />"attachment; filename=\"" + filename + "\"");<br /><br />// 打开指定文g的流信息<br />java.io.FileInputStream fileInputStream =<br />new java.io.FileInputStream(filepath + filename);<br /><br />// 写出信?br />int i;<br />while ((i=fileInputStream.read()) != -1) {<br />out.write(i);<br />}<br />fileInputStream.close();<br />out.close();<br />%><br /><br />值得注意的是Q在你要下蝲的文件内定wQ除了文件的内容之外Q不应该再附加有其它M的字W,包括I格和回车换行符。我们有时在~写代码的时候,Z使代码清晰可读,往往会添加一些空根{制表符或者回车换行符Q这栯然看h比较清晰Q但有时可能会得不到正确的结果。比如:<br /><%@ page import="java.io.*"<br />%> <jsp:useBean id="MyBeanFromMengxianhui" scope="page"<br />class="com.Mengxianhui.DownloadBean" /><br />应该写成q样Q?br /><%@ page import="java.io.*"%><br /><br /><jsp:useBean id="MyBeanFromMengxianhui" scope="page" class="com.Mengxianhui.DownloadBean" /> <br /><img src ="http://www.tkk7.com/os586/aggbug/68521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/os586/" target="_blank">水煮三国</a> 2006-09-08 15:22 <a href="http://www.tkk7.com/os586/archive/2006/09/08/68521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>与大家一起分享JAVA源代码查询网?/title><link>http://www.tkk7.com/os586/archive/2006/07/21/59365.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Fri, 21 Jul 2006 02:09:00 GMT</pubDate><guid>http://www.tkk7.com/os586/archive/2006/07/21/59365.html</guid><wfw:comment>http://www.tkk7.com/os586/comments/59365.html</wfw:comment><comments>http://www.tkk7.com/os586/archive/2006/07/21/59365.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/os586/comments/commentRss/59365.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/os586/services/trackbacks/59365.html</trackback:ping><description><![CDATA[ <font face="Tahoma" size="2"> 1. java2s  </font> <a > <font face="Tahoma" color="#3f68a6" size="2">http://www.java2s.com/</font> </a> <div> <font face="Tahoma" size="2">   q个|站非常好,分成三大c,分别?font color="#3f68a6"><a >Example</a></font>?/font> <a > <font face="Tahoma" color="#003399" size="2">Products</font> </a> <font size="2"> <font face="Tahoma"> <font color="#003399">?/font> <u> <font color="#800080">Articles</font> </u>Q每个大cM又分别设许多类Q还有搜索功能,q样查找h非常方便。。比如,如果要学习SWT/JFaceQ只要把Example下的</font> </font> <a > <strong> <font face="Tahoma" color="#3f68a6" size="2">SWT JFace Eclipse</font> </strong> </a> <font size="2"> <font face="Tahoma"> <strong> </strong>研究一下也可以了。另外,q个|站q有</font> </font> <a > <font face="Tahoma" color="#003399" size="2">JavaScript DHTML</font> </a> <font face="Tahoma" size="2">?</font> <a > <font face="Tahoma" color="#003399" size="2">C# / C Sharp</font> </a> <font face="Tahoma" size="2">?</font> <a > <font face="Tahoma" color="#003399" size="2">C / ANSI-C</font> </a> <font face="Tahoma" size="2">?</font> <a > <font face="Tahoma" color="#003399" size="2">SQL / MySQL</font> </a> <font face="Tahoma" size="2">{类。MQ非常好?br /></font> </div> <div> <font face="Tahoma" size="2">  2. codeZoo </font> <a > <font face="Tahoma" color="#3f68a6" size="2">http://www.codezoo.com/</font> </a> </div> <div> <font face="Tahoma" size="2">   q是O'Reily旗下的,除了Java之外Q还有Ruby、Python?/font> </div> <div> <font face="Tahoma" size="2"> </font> </div> <div> <font face="Tahoma" size="2">  3. Java学习源代码检索系l?</font> <a > <font face="Tahoma" color="#3f68a6" size="2">http://www.chinaitlab.com/www/school/codesearch/index.html</font> </a> </div> <div> <font face="Tahoma" size="2">   隑־看见国的,好歹也要支持一下,分类也算清楚?/font> </div> <div> <font face="Tahoma" size="2"> </font> </div> <div> <font face="Tahoma" size="2">  4. Koders  </font> <a > <font face="Tahoma" color="#3f68a6" size="2">http://www.koders.com/</font> </a> </div> <div> <font face="Tahoma" size="2">   是个l合查询的网站,不过它好像是从代码中查找关键词,包含的语a挺多的?/font> </div> <div> <font face="Tahoma" size="2"> </font> </div> <div> <font face="Tahoma" size="2">  5. Resources for Java server-side developers  </font> <a > <font face="Tahoma" color="#3f68a6" size="2">http://www.java201.com/</font> </a> </div> <div> <font face="Tahoma" size="2">   切的说Q它是一个资源收集的|站Q代码查询ƈ不多。不q它分类相当l,如Articles、Books、Examples、Extensions、Frameworks{类Q你可以输入Spring或Hibernate作ؓ关键词搜索一下看看?/font> </div> <img src ="http://www.tkk7.com/os586/aggbug/59365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/os586/" target="_blank">水煮三国</a> 2006-07-21 10:09 <a href="http://www.tkk7.com/os586/archive/2006/07/21/59365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat+Eclipse配置数据库连接池http://www.tkk7.com/os586/archive/2006/06/16/53352.html水煮三国水煮三国Fri, 16 Jun 2006 09:15:00 GMThttp://www.tkk7.com/os586/archive/2006/06/16/53352.htmlhttp://www.tkk7.com/os586/comments/53352.htmlhttp://www.tkk7.com/os586/archive/2006/06/16/53352.html#Feedback0http://www.tkk7.com/os586/comments/commentRss/53352.htmlhttp://www.tkk7.com/os586/services/trackbacks/53352.html
那么你需?

在Eclipse目当中webroot下的Meta-inf下面新徏一个Context.xml,然后在里面配|数据选项:

  该内容可以通过tomcat的admin囑Ş界面来完?然后复制到context.xml当中.

 

   当然除了配置q些内容之外q要在webroot下的web-inf下的web.xml下加入数据源的引?

具体内容:

 
   <resource-ref>
  <description>Loan Sybase</description>
  <res-ref-name>jdbc/loan</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>


水煮三国 2006-06-16 17:15 发表评论
]]>
刚搜到的MyEclipse4.1.1?.0的注册码http://www.tkk7.com/os586/archive/2006/05/16/46333.html水煮三国水煮三国Tue, 16 May 2006 01:53:00 GMThttp://www.tkk7.com/os586/archive/2006/05/16/46333.htmlhttp://www.tkk7.com/os586/comments/46333.htmlhttp://www.tkk7.com/os586/archive/2006/05/16/46333.html#Feedback0http://www.tkk7.com/os586/comments/commentRss/46333.htmlhttp://www.tkk7.com/os586/services/trackbacks/46333.html原来的时候是用注册机,现在搜到了可用的注册?

========4.0====

license name: csdn license key: pLR8ZC-956-55-5467865159452715

hello  uLR8ZC-955-56-6067865798739181

License Name : shangxingxian
License Key : fLR8ZC-955-56-6067865930680921

=============4.1
basten
oLR8ZC|957444|535353|6546801608

pass:uLR8ZC-956-55-5467865991428004

user:hehe

希望能够帮助那些正在L注册码的朋友!



水煮三国 2006-05-16 09:53 发表评论
]]>
JSP及Servlet当中的重定向技?/title><link>http://www.tkk7.com/os586/archive/2006/03/31/38522.html</link><dc:creator>水煮三国</dc:creator><author>水煮三国</author><pubDate>Fri, 31 Mar 2006 10:12:00 GMT</pubDate><guid>http://www.tkk7.com/os586/archive/2006/03/31/38522.html</guid><wfw:comment>http://www.tkk7.com/os586/comments/38522.html</wfw:comment><comments>http://www.tkk7.com/os586/archive/2006/03/31/38522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/os586/comments/commentRss/38522.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/os586/services/trackbacks/38522.html</trackback:ping><description><![CDATA[ <font style="FONT-SIZE: 12px" face="Courier New">2006q??1?7:55:31<br /><br />对于重定向技术以前感觉是比较单的东西Q后来在做东西的q程中发现其实里面还是有很多技巧的!<br /><br />首先我们先比较一下:response.sendRedirect()和RequestDispatcher.forward()Ҏ的用情?br /><br />   response.sendRedirect()ҎQ因为response是JSP的内含对象,因此它可以直接用,而在Servlet当中它则是HttpServletResponse或是ServletResponse.<br /><br />   sendRedirect()Ҏ是可以实现浏览器的http地址的蟩转,它同样可以实现带有frame框架的地址的蟩转。而forward()Ҏ则不能完成这U带frame框架的地址的蟩转。sendRedirect()Ҏ的重定向可以昄在浏览器的地址栏当中,而forward()则不能?br /><br />   sendRecirect()不仅可以实现frame的蟩转,也可以实现跨|站跨应用程序的跌{。它能够传递带查询参数的变量及|但是却不能够记录h前页存的Request.setAttribute()当中的倹{因此如果用sendRedirect()Ҏq行了蟩转后的页面,没有记忆功能Q但是session中的值可以得到。而forward()具有记录属性值的功能Q蟩转后的页面可以取得前一中保存的倹{?br /><br />   forward()Ҏ也可以传递查询参数及倹{但?lt;jsp:forward>则不能传递查询参敎ͼ如果要实现查询参数则必须嵌套<jsp:param name="name" value="value">来完?br /><br />   通过?lt;jsp:param>来传递查询参敎ͼ它不会显C在览器的地址栏当中,因此比response.sendRedirect()要安全一?br /><br /></font> <img src ="http://www.tkk7.com/os586/aggbug/38522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/os586/" target="_blank">水煮三国</a> 2006-03-31 18:12 <a href="http://www.tkk7.com/os586/archive/2006/03/31/38522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://gyjinzheng.com" target="_blank">99ƷƵ</a>| <a href="http://519vip.com" target="_blank">ۺϺݺݰ</a>| <a href="http://biarn.com" target="_blank">òֻƵ</a>| <a href="http://zhongxueping888.com" target="_blank">avһ </a>| <a href="http://xhm33.com" target="_blank">޹Ʒ18þþþþ </a>| <a href="http://goldwellib.com" target="_blank">ؼƷëƬѹۿ</a>| <a href="http://0330196.com" target="_blank">ؼëƬAëƬѲ</a>| <a href="http://www-64000.com" target="_blank">޹Ƶ</a>| <a href="http://qestest.com" target="_blank">91޹߲ҹ</a>| <a href="http://www-8812.com" target="_blank">޹һƷ</a>| <a href="http://ztxfkj.com" target="_blank">߹ۿ</a>| <a href="http://txa6.com" target="_blank">tsƵ</a>| <a href="http://359777b.com" target="_blank">ۺ</a>| <a href="http://vastraje.com" target="_blank">2019ĻѵӰ߲</a>| <a href="http://www-9970.com" target="_blank">Ƶ</a>| <a href="http://dghxm168.com" target="_blank">һaƬþëƬ </a>| <a href="http://dt677.com" target="_blank">Ƶվwww</a>| <a href="http://quxx10.com" target="_blank">þѹۿƷ88av</a>| <a href="http://j3223.com" target="_blank">ձѾƷһ</a>| <a href="http://gsonlinet.com" target="_blank">aëƬѹۿ</a>| <a href="http://jipiao020.com" target="_blank">ŮվɫƵ</a>| <a href="http://chinaedubrand.com" target="_blank">ҹ޹Ƭ̨</a>| <a href="http://xiaoduanfa.com" target="_blank">޳վ߹ۿ</a>| <a href="http://3atv66.com" target="_blank">AVר</a>| <a href="http://ttvv55.com" target="_blank">һƷƵ</a>| <a href="http://wogool.com" target="_blank">ëƬѹۿ</a>| <a href="http://lybb16.com" target="_blank">þþƷAV鶹վ </a>| <a href="http://xyjxnhcl.com" target="_blank">ëƬѹۿ</a>| <a href="http://tianwu520.com" target="_blank">67paoǿ</a>| <a href="http://snbbearing.com" target="_blank">ܳƵѹۿ</a>| <a href="http://bjfljg.com" target="_blank">ձѲ</a>| <a href="http://520baoyu.com" target="_blank">Ļ</a>| <a href="http://7x966.com" target="_blank">1000Ƶ</a>| <a href="http://yisousou.com" target="_blank">www.߹ۿ</a>| <a href="http://hgbookvip.com" target="_blank">һ2342021ѹۿ</a>| <a href="http://chaoxung.com" target="_blank">ר˿ŵƵ</a>| <a href="http://www8x5188x.com" target="_blank">Ʒ1024Ƶ</a>| <a href="http://www454yu.com" target="_blank">ɫ߳Ƶ </a>| <a href="http://xsdjiagu.com" target="_blank">޹˾Ʒ </a>| <a href="http://18jko.com" target="_blank">ѹۿɫƵվbd</a>| <a href="http://0101av.com" target="_blank">߿վ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>