﻿<?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-sunny的小屋-随笔分类-spring</title><link>http://www.blogjava.net/sunny/category/6526.html</link><description>&lt;SCRIPT language="JavaScript"&gt; &lt;!-- function www_helpor_net(offset) { var endstr=document.cookie.indexOf(";",offset);if(endstr==-1) endstr=document.cookie.length;return unescape(document.cookie.substring(offset,endstr));} function GetCookie(name) { var arg=name+"="; var alen=arg.length; var clen=document.cookie.length; var i=0;while(i&lt;clen) { var j=i+alen; if(document.cookie.substring(i,j)==arg) return www_helpor_net(j); i=document.cookie.indexOf(" ",i)+1;if(i==0) break; } return null; } function SetCookie(name,value) { var argv=SetCookie.arguments; var argc=SetCookie.arguments.length; var expires=(2&lt;argc)?argv[2]:null; var path=(3&lt;argc)?argv[3]:null; var domain=(4&lt;argc)?argv[4]:null; var secure=(5&lt;argc)?argv[5]:false; document.cookie=name+"="+escape(value)+((expires==null)?"":("; expires="+expires.toGMTString()))+((path==null)?"":("; path="+path))+((domain==null)?"":("; domain="+domain))+((secure==true)?"; secure":""); } var expdate=new Date(); var visits; expdate.setTime(expdate.getTime()+(24*60*60*1000*365)); //设置COOKIES时间为1年,自己随便设置该时间 if(!(visits=GetCookie("visits"))) visits=0;visits++;SetCookie("visits",visits,expdate,"/",null,false); //以下信息显示可以使用标准的HTML语法,自己随便设置 document.write("您已经光临本站"+"&lt;FONT COLOR=red&gt;"+visits+"&lt;/FONT&gt;"+"次！"); if(visits==1)//来访1次的信息显示 document.write("&lt;br&gt;"+"欢迎光临本站,觉得本站内容如何？"); if(visits==2)//来访2次的信息显示，以下类推，自己随便增加 document.write("&lt;br&gt;"+"再次光临不胜容幸!今后要常来啊!"); if(visits&gt;=3 &amp;&amp; visits&lt;10) document.write("&lt;br&gt;"+"常客,你又来了,我真的高兴啊!"); if(visits&gt;=10 &amp;&amp; visits&lt;30) document.write("&lt;br&gt;"+"又来了,好兄弟阿!"); if(visits&gt;=30 &amp;&amp; visits&lt;60) document.write("&lt;br&gt;"+"天哪,又来了,高兴得我痛心疾首啊!"); if(visits&gt;=60 &amp;&amp; visits&lt;100) document.write("&lt;br&gt;"+"我们以后就是好兄弟了,没得说!"); if(visits&gt;=100 &amp;&amp; visits&lt;150) document.write("&lt;br&gt;"+"靠,没啥说的,兄弟看得起我,高兴!"); if(visits&gt;=150) document.write("&lt;br&gt;"+"疯狂啊!兄弟啊,我真的非常喜欢你。"); //--&gt; &lt;/SCRIPT&gt; &lt;br&gt;希望大家喜欢sunny的小屋，大家要常来坐坐哦。</description><language>zh-cn</language><lastBuildDate>Fri, 02 Mar 2007 05:48:43 GMT</lastBuildDate><pubDate>Fri, 02 Mar 2007 05:48:43 GMT</pubDate><ttl>60</ttl><item><title>struts+spring+hibernate之间的关系与差别 (转)</title><link>http://www.blogjava.net/sunny/archive/2006/01/09/27214.html</link><dc:creator>随风逝</dc:creator><author>随风逝</author><pubDate>Mon, 09 Jan 2006 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/sunny/archive/2006/01/09/27214.html</guid><wfw:comment>http://www.blogjava.net/sunny/comments/27214.html</wfw:comment><comments>http://www.blogjava.net/sunny/archive/2006/01/09/27214.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/sunny/comments/commentRss/27214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sunny/services/trackbacks/27214.html</trackback:ping><description><![CDATA[<TABLE style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" cellSpacing=0 cellPadding=0 width="99%" border=0>
<TBODY>
<TR>
<TD bgColor=#f0f0f0><STRONG>出处:<A href="http://www.54bk.com/user1/263/archives/2005/27238.html">http://www.54bk.com/user1/263/archives/2005/27238.html</A></STRONG></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD>
<DIV align=right><A href="http://www.54bk.com/user1/263/archives/2005/27238.html"></A>&nbsp;</DIV></TD></TR></TBODY></TABLE><SPAN class=oblog_text>Struts：用来作VC部分，即控制和显示作用； <BR>Spring：用来作数据库操作的事务处理，在配置文件里配置好就OK了； <BR>Hibernate：用来作DAO处理，在此用了Spring的getHibernateTemplate()方法来操作hsql进行数据增删改等操作。 <BR><BR><BR>1，先说说你的表示层 <BR>其实没有必要使用struts，除非你有历史遗留问题不得不用struts，因为spring的mvc已经足够好了： <BR>a.清晰的模型对象传递，这个模型对象可以是任何java对象，如果你不在意在各层之间传递同一个对象的话，这个模型对象就可以是hibernate的persistent object，通过open session in view，你可以以一致的方式使用业务模型对象。 <BR>b.reference data，让你清晰的处理look up数据。 <BR>c. 多种可供选择的视图解析类型，可以在prpperties文件中定义page的逻辑名，或者定义在xml文件里的struts tiles逻辑名。 <BR>d.无干扰的数据绑定,一个&lt;spring:bind&gt;可以对模型对象和form进行绑定，就像struts自动填充formbean一样，但spring 的绑定功能不会干扰界面布局，也就是说，你仍然可以使用html编辑器对页面进行处理。 <BR>e.客户端验证。 <BR>f.服务器端验证。 <BR>g.多种可供选择的控制器，其中支持表单的控制器提供了类似vb中表单事件处理的功能，这是一系列的workflow，在你认为合适的地方，插入你的处理代码。 <BR><BR>spring mvc与struts比较，可能只是少了很多taglib和页面布局，但这都可以通过第三方工具补充，因为视图相比于其他部分，毕竟更轻量级一些。可以选择的第三方工具可以是：displaytag,struts-menu,struts tiles，等等。 <BR><BR>2，在说说业务逻辑部分 <BR>业务逻辑类可以用spring的beans进行配置，并由spring管理与表现层的控制器及更下层的DAO对象的关系。另外，还可以进行配置性的事务处理，一个interceptor配置，免去了你的所有烦恼。 <BR><BR>3,dao层 <BR>用spring 封装后的hibernate API，让Hibernate继续瘦身，并且通过spring建立与上层的关系。 <BR><BR>4,最后，说说hibernate的po <BR>你可以选择你喜欢的任何方式进行建模，以下工具提供了足够的支持： <BR>a. 从java对象到hbm文件：xdoclet <BR>b. 从hbm文件到java对象：hibernate extension <BR>c. 从数据库到hbm文件：middlegen <BR>d. 从hbm文件到数据库：SchemaExport <BR><BR>至于可供参考的项目，可以看看spring的例子petclinic（spring+hibernate），还有一个不可不看的网站：http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse(struts+spring+hibernate或spring mvc + spring +hibernate)。另外，spring带的mvc step-by-step是一个很好的入门教程。 <BR><BR>需要说明的是，spring仅仅为我们提供了一种设计和实现框架的方式，因此，项目的成功与否，是与我们的构架设计紧密相关的，在有了好的设计思想以后，善用spring，会让我们的成功来的更容易。 </SPAN></TD></TR></TBODY></TABLE><img src ="http://www.blogjava.net/sunny/aggbug/27214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sunny/" target="_blank">随风逝</a> 2006-01-09 09:57 <a href="http://www.blogjava.net/sunny/archive/2006/01/09/27214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>