﻿<?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-wiflish-随笔分类-framework</title><link>http://www.blogjava.net/wiflish/category/11016.html</link><description>Loving Life! Loving Coding!</description><language>zh-cn</language><lastBuildDate>Thu, 19 Apr 2007 05:00:30 GMT</lastBuildDate><pubDate>Thu, 19 Apr 2007 05:00:30 GMT</pubDate><ttl>60</ttl><item><title>OpenSessionInView的作用。</title><link>http://www.blogjava.net/wiflish/archive/2007/04/18/111759.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Wed, 18 Apr 2007 13:44:00 GMT</pubDate><guid>http://www.blogjava.net/wiflish/archive/2007/04/18/111759.html</guid><wfw:comment>http://www.blogjava.net/wiflish/comments/111759.html</wfw:comment><comments>http://www.blogjava.net/wiflish/archive/2007/04/18/111759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wiflish/comments/commentRss/111759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wiflish/services/trackbacks/111759.html</trackback:ping><description><![CDATA[OpenSessionInView的作用是允许在每一次request请求使用同一个Hibernate session，这样，在这个request期间可以任意lazy loading数据。<br /><br />如果设置singleSession=false的话，就不会在request请求过程中使用同一个Hibernate Session，等于没有使用OpenSessionInView的功能。<br /><img src ="http://www.blogjava.net/wiflish/aggbug/111759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wiflish/" target="_blank">想飞的鱼</a> 2007-04-18 21:44 <a href="http://www.blogjava.net/wiflish/archive/2007/04/18/111759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于Struts的防止页面重复提交的代码片段</title><link>http://www.blogjava.net/wiflish/archive/2007/04/12/110293.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Thu, 12 Apr 2007 15:00:00 GMT</pubDate><guid>http://www.blogjava.net/wiflish/archive/2007/04/12/110293.html</guid><wfw:comment>http://www.blogjava.net/wiflish/comments/110293.html</wfw:comment><comments>http://www.blogjava.net/wiflish/archive/2007/04/12/110293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wiflish/comments/commentRss/110293.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wiflish/services/trackbacks/110293.html</trackback:ping><description><![CDATA[1、在进入增加和编辑页面的action方法（如action的add方法）中，增加如下代码：<br />    //防止重复提交.<br />    <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">saveToken(request);</span></div><br />2、在进行数据保存操作的action的方法中（如save方法），增加如下代码：<br />    <div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">isTokenValid(request)) {<br />        ActionMessages messages </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> ActionMessages();<br /></span><span style="color: rgb(0, 128, 0);"></span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        messages.add(ActionMessages.GLOBAL_MESSAGE,<br />            </span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);"> ActionMessage(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">error.submit.double</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br />        saveMessages(request.getSession(), messages);<br />        <br />        </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">如果是重复提交，重新生成token</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">        saveToken(request);<br />        <br />        </span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);"> mapping.findForward(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">edit</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br />    }<br />    <br />    </span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">不是重复提交就保存数据，并删除该次提交的token</span><span style="color: rgb(0, 128, 0);"><br /></span><span style="color: rgb(0, 0, 0);">    resetToken(request);<br /></span></div><br />3、在编辑记录的jsp页面，使用&lt;html:errors /&gt;标签，显示错误提示。<br /><img src ="http://www.blogjava.net/wiflish/aggbug/110293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wiflish/" target="_blank">想飞的鱼</a> 2007-04-12 23:00 <a href="http://www.blogjava.net/wiflish/archive/2007/04/12/110293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于OpenSessionInViewFilter的配置</title><link>http://www.blogjava.net/wiflish/archive/2007/04/11/109990.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Wed, 11 Apr 2007 12:33:00 GMT</pubDate><guid>http://www.blogjava.net/wiflish/archive/2007/04/11/109990.html</guid><wfw:comment>http://www.blogjava.net/wiflish/comments/109990.html</wfw:comment><comments>http://www.blogjava.net/wiflish/archive/2007/04/11/109990.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wiflish/comments/commentRss/109990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wiflish/services/trackbacks/109990.html</trackback:ping><description><![CDATA[在web.xml文件中配置OpenSessionInViewFilter<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">hibernateFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;<br /></span><span style="color: rgb(0, 0, 255);"></span><span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span></div>在spring的事务配置中：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">aop:config</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">aop:advisor </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="managerTx"</span><span style="color: rgb(255, 0, 0);"> advice-ref</span><span style="color: rgb(0, 0, 255);">="txAdvice"</span><span style="color: rgb(255, 0, 0);"><br />        pointcut</span><span style="color: rgb(0, 0, 255);">="execution(* *..service.*Manager.*(..))"</span><span style="color: rgb(255, 0, 0);"> order</span><span style="color: rgb(0, 0, 255);">="2"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">aop:config</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /><br /></span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:advice </span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="txAdvice"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:attributes</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:method </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="get*"</span><span style="color: rgb(255, 0, 0);"> read-only</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:method </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="find*"</span><span style="color: rgb(255, 0, 0);"> read-only</span><span style="color: rgb(0, 0, 255);">="true"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">tx:method </span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="*"</span><span style="color: rgb(255, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">tx:attributes</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">tx:advice</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><br />这样的配置，当在容器中通过action调用service代码保存对象时，不能成功保存对象，<br />同时出现如下类似错误：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">Write operations are not allowed in read</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">only mode (FlushMode.NEVER</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">MANUAL): Turn your Session into <br />FlushMode.COMMIT</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">AUTO or remove </span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);">readOnly</span><span style="color: rgb(0, 0, 0);">'</span><span style="color: rgb(0, 0, 0);"> marker from transaction definition.</span></div><br />这时修改filter的配置，增加如下代码：<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">    </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">hibernateFilter</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter<br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter-class</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">singleSession</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-name</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />            </span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">false</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">param-value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />        </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">init-param</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />    </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">filter</span><span style="color: rgb(0, 0, 255);">&gt;</span></div><br />这样就能成功保存对象了。<br /><br /><img src ="http://www.blogjava.net/wiflish/aggbug/109990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wiflish/" target="_blank">想飞的鱼</a> 2007-04-11 20:33 <a href="http://www.blogjava.net/wiflish/archive/2007/04/11/109990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring自动装配(autowire)协作者</title><link>http://www.blogjava.net/wiflish/archive/2006/10/18/75941.html</link><dc:creator>想飞的鱼</dc:creator><author>想飞的鱼</author><pubDate>Wed, 18 Oct 2006 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/wiflish/archive/2006/10/18/75941.html</guid><wfw:comment>http://www.blogjava.net/wiflish/comments/75941.html</wfw:comment><comments>http://www.blogjava.net/wiflish/archive/2006/10/18/75941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wiflish/comments/commentRss/75941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wiflish/services/trackbacks/75941.html</trackback:ping><description><![CDATA[
		<p>在xml配置文件中，autowire有5种类型，可以在&lt;bean/&gt;元素中使用autowire属性指定：</p>

AutoWire Modes<br /><br /><table border="1" height="390" width="656"><tbody><tr><td><font size="3">模式<br /></font></td><td><font size="3">                说          明</font></td></tr><tr><td><pre><font size="3"><span class="ident">no</span></font></pre></td><td><pre><font size="3">不使用自动装配，必须通过<span class="ident">ref元素指定依赖，默认设置。</span></font></pre></td></tr><tr><td><pre><font size="3"><span class="ident">byName</span></font></pre></td><td><pre><font size="3">根据属性名自动装配。此选项将检查容器并根据名字查找<br />与属性完全一致的<span class="ident">bean，并将其与属性自动装配。</span></font></pre></td></tr><tr><td><pre><font size="3"><span class="ident">byType</span></font></pre></td><td><pre><font size="3">如果容器中存在一个与指定属性类型相同的<span class="ident">bean，那么将与</span><br />该属性自动装配；如果存在多个该类型<span class="ident">bean，那么抛出异</span>常，<br />并指出不能使用<span class="ident">byType方式进行自动装配；如果没有找</span><br />到相匹配的<span class="ident">bean，则什么事都不发生，也可以通过设置</span><span class="ident"><br />dependency</span><span class="punct">-</span><span class="ident">check</span><span class="punct">="</span><span class="string">objects</span><span class="punct">"让</span><span class="constant">Spring抛出异常。</span></font></pre></td></tr><tr><td><pre><font size="3"><span class="ident">constructor</span></font></pre></td><td><pre><font size="3">与<span class="ident">byType方式类似，不同之处在于它应用于构造器参数。<br />如</span>果容器中没有找到与构造器参数类型一致的<span class="ident">bean，<br />那么抛出</span>异常。</font></pre></td></tr><tr><td><pre><font size="3"><span class="ident">autodetect</span></font></pre></td><td><pre><font size="3">通过<span class="ident">bean类的自省机制（introspection）来决定是<br />使用</span><span class="ident">constructor还是byType方式进行自动装配。<br />如果发现默认的</span>构造器，那么将使用<span class="ident">byType方式。</span></font></pre></td></tr></tbody></table><br />可以设置bean使自动装配失效：<br />采用xml格式配置bean时，将&lt;bean/&gt;元素的autowire-candidate属性设置为false，这样容器在查找自动装配对象时，将不考虑该bean，即它不会被考虑作为其它bean自动装配的候选者，但是该bean本身还是可以使用自动装配来注入其它bean的。<br /><br /><img src ="http://www.blogjava.net/wiflish/aggbug/75941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wiflish/" target="_blank">想飞的鱼</a> 2006-10-18 15:15 <a href="http://www.blogjava.net/wiflish/archive/2006/10/18/75941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>