﻿<?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-&lt;font color="red"&gt;Talk less,do more&lt;/font&gt;</title><link>http://www.blogjava.net/DyEnigma/</link><description>&lt;font color="black"&gt;用心去感受&lt;/font&gt;</description><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 11:31:49 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 11:31:49 GMT</pubDate><ttl>60</ttl><item><title>[小贴士]jquery跳出函数的方法</title><link>http://www.blogjava.net/DyEnigma/articles/353876.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 07 Jul 2011 08:24:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/353876.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/353876.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/353876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/353876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/353876.html</trackback:ping><description><![CDATA[jQuery如何退出each循环?如何退出function函数?<br />1.在函数内部使用return false是跳出function;在each的回调函数中使用return false,是跳出each循环;相当于break.<br />2.使用return true,相当于continue.<br /><br />有什么作用呢,举个例子来说吧<br />在用jquery的ajax方法读取xml的时候,使用each遍历,但是我只想要前几条,或者中间几条,或者后几条,或者是满足某某条件的几条,就这些?不会还问我怎么写判断条件吧?那就太拿来主义了! ~.~<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><img src ="http://www.blogjava.net/DyEnigma/aggbug/353876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-07-07 16:24 <a href="http://www.blogjava.net/DyEnigma/articles/353876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[应用]S2SH分页(Hibernate分页查询)</title><link>http://www.blogjava.net/DyEnigma/articles/352773.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Tue, 21 Jun 2011 10:20:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/352773.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/352773.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/352773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/352773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/352773.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 直接正题一、INewsDao.java(DAO接口)：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;1&nbsp;package&nbsp;cn.dy.dao;&nbsp;2&nbsp;&nbsp;3&nbsp;import&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/DyEnigma/articles/352773.html'>阅读全文</a><img src ="http://www.blogjava.net/DyEnigma/aggbug/352773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-06-21 18:20 <a href="http://www.blogjava.net/DyEnigma/articles/352773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[收集]有关struts2的杂七杂八</title><link>http://www.blogjava.net/DyEnigma/articles/352663.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Mon, 20 Jun 2011 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/352663.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/352663.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/352663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/352663.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/352663.html</trackback:ping><description><![CDATA[<div><span style="font-size: 10pt;">这里放些简单的东西，但是比较常用，感觉有帮助的拿去用吧。<br /><br />一、一个form多个提交的解决办法<br /></span>&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;s:form action="submit.action"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;s:textfield name="msg" label="输入内容" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;s:submit name="save" value="保存" method="save" /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;s:submit name="print" value="打印" method="print" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/s:form&gt;<br /><br />二、自定义类型转换器<br /><br />&nbsp;&nbsp;&nbsp; 如果是局部类型转换器，建立cn.dy.type.conversion，在这个包里面新建一个类。<br />&nbsp;&nbsp;&nbsp; 比如是日期类型的DateTypeConverter，继承com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter，然后在action所在的包里面建立ActionClassName-conversion.properties，文件里面的内容为：属性名称＝类型转换器的全类名。<br />&nbsp;&nbsp;&nbsp; 如果是全局类型转换器，新建转换器代码和局部是一样的，不同之处在于是在WEB-INF/classes下放置Xwork-conversion.properties，而且文件的内容为：需要转换的数据类型＝类型转换器的全类名。<br />&nbsp;&nbsp;&nbsp; 全局转换器和局部转换器的不同在于全局转换器要求要转换的格式必须统一，比如说日期，有些是2011-6-20，有些是20110620，最好用局部转换器。<br /><br />三、struts2访问和添加几个属性<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 如果仅仅访问和添加则使用下面的方式：<br />&nbsp;&nbsp;&nbsp; ActionContext ctx＝ActionContext.getContext();<br />&nbsp;&nbsp;&nbsp; ctx.getApplication().put("app","应用范围属性");<br />&nbsp;&nbsp;&nbsp; ctx.getSession().put("ses","会话范围属性");<br />&nbsp;&nbsp;&nbsp; ctx.put("req","请求范围属性");<br />&nbsp;&nbsp;&nbsp; ctx.put("names",Arrays.asList("first","second","third"));<br /><br /><br />&nbsp;&nbsp;&nbsp; 如果要获得站点某个目录的绝对路径，使用下面的方式可以获取：<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; HttpServletRequest&nbsp; request=ServletActionContext.getRequest();<br />&nbsp;&nbsp;&nbsp; ServletContext&nbsp; servletContext=ServletActionContext.getServletContext();<br />&nbsp;&nbsp;&nbsp; request.setAttribute("req","请求范围");<br />&nbsp;&nbsp;&nbsp; request.getSession().setAttribute("ses","会话范围属性");<br />&nbsp;&nbsp;&nbsp; servletContext.setAttribute("app","应用范围属性");<br />&nbsp;&nbsp;&nbsp; servletContext.getRealPath(arg0);<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; ActionContext.getContext().put("greeting","欢迎来到这里");<br />&nbsp;&nbsp;&nbsp; 然后在结果页面里，从请求对象中取出greeting属性，如下：<br />&nbsp;&nbsp;&nbsp; ${requestScope.greeting}或者&lt;%=request.getAttribute("greeting")%&gt;<br />&nbsp;&nbsp;&nbsp; ${sessionScope.user.username}，${requestScope.greeting}，${applicationScope.counter}<br /><br />四、拦截器<br /><br /><div>&nbsp;&nbsp;&nbsp; &lt;package name="manage" namespace="/manage" extends="struts-default"&gt;</div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- 拦截器配置 --&gt;<br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;interceptors&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- 当有自定义拦截器的时候,struts2提供的默认拦截器就失去作用了 --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;interceptor name="login" class="cn.dy.interceptor.LoginItcpt" /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- 为了使用默认拦截器,这里定义拦截器栈,把默认拦截器给载入进去 --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;interceptor-stack name="loginStack"&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="defaultStack" /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="login" /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/interceptor-stack&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/interceptors&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- 为package中所有的action使用拦截器 ,当某个action中有显式拦截器时,这个默认拦截器就不会再运用到那个action中--&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- &lt;default-interceptor-ref name="loginStack" /&gt;&nbsp; --&gt;<br /><br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;!-- 拦截器结果页面，最好设成全局 --&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;global-results&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;result name="result"&gt;/WEB-INF/manage/result.jsp&lt;/result&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/global-results&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;action name="go_*" class="manageAction" method="{1}"&gt;<br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;result name="input"&gt;/index.jsp&lt;/result&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;interceptor-ref name="loginStack" /&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/action&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/package&gt;<br />&nbsp;&nbsp;&nbsp; 当有多个配置文件时，每个都要单独加拦截器，因为拦截器标签是在&lt;package&gt;里面的。</div></div></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/352663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-06-20 14:49 <a href="http://www.blogjava.net/DyEnigma/articles/352663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[总结]Jquery api 快速参考</title><link>http://www.blogjava.net/DyEnigma/articles/351999.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 09 Jun 2011 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351999.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351999.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351999.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 选择符匹配*所有元素#id带有给定ID的元素element给定类型的所有元素，比如说html标签.class带有给定类的所有元素a,b匹配a或者匹配b的元素a&nbsp;b作为a后代的匹配b的元素（包括孙子辈的）a&nbsp;&gt;&nbsp;b作为a子元素的匹配b的元素（只包括儿子辈）:first结果集中的第一个元素:last结果集中的最后一个元素:not(a)结果集中与a不匹配的所有元素:e...&nbsp;&nbsp;<a href='http://www.blogjava.net/DyEnigma/articles/351999.html'>阅读全文</a><img src ="http://www.blogjava.net/DyEnigma/aggbug/351999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-06-09 17:14 <a href="http://www.blogjava.net/DyEnigma/articles/351999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[摘要]jQuery容易犯的错误</title><link>http://www.blogjava.net/DyEnigma/articles/351959.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 09 Jun 2011 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351959.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351959.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351959.html</trackback:ping><description><![CDATA[<div><span style="font-size: 10pt;">1、引用jQuery库文件的&lt;script&gt;标签，必须放在引用自定义脚本文件的&lt;script&gt;标签之前，否则，就会发生找不到对象；最好在&lt;head&gt;元素中，把引入样式表的&lt;link /&gt;放在&lt;script&gt;标签前面；有时候其他的javascript库也会用$符号，为了不冲突，可以使用.noConflict()方法把控制权交给别的库.<br /></span>&nbsp;&nbsp;&nbsp; &lt;script src="prototype.js" type="text/javascript" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script src="jquery.js" type="text/javascript" /&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script type="text/javascript"&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; jQuery.noConflict();<br />&nbsp;&nbsp;&nbsp; &lt;/script&gt;<br />&nbsp;&nbsp;&nbsp; &lt;script src="myjs.js" type="text/javascript"/&gt;<br />&nbsp;&nbsp;&nbsp; 在使用jquery方法时，必须使用jquery代替$来调用。<br /><br /><span style="font-size: 10pt;">2、基本选择符：标签名，${"p"}；ID选择符，${"#idname"}；类选择符，${".classname"}。<br /><br />3、css选择符，举个例子来说<br /></span>&nbsp;&nbsp;&nbsp; $(document).ready(function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#aSelect &gt; li").addClass("aClass");<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#aSelect li:not(.aClass)").addClass("otherClass");<br />&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt;">上面第二行中的&gt;就是元素组合符，查找ID为aSelect的元素的子元素（&gt;）中所有的列表项。这个子元素，不包含孙元素。<br /></span>&nbsp;&nbsp;&nbsp; <span style="font-size: 10pt;">上面第三行中的aSelect li，表示查找ID为aSelect的元素的所有下级列表项，包含孙元素。<br /><br />4、属性选择符：$("img[alt]")就是选择所有带有alt属性的图像元素；另外，属性选择符允许以类似正则表达式的语法来标识字符串的开始(^)和结尾($)，而且，也可以使用(*)表示位于字符串中任意位置的值，适用(!)来表示相反的值。<br /></span>&nbsp;&nbsp;&nbsp; e.g.:<br />&nbsp;&nbsp;&nbsp; $(document).ready(function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("a[href^=mailto:]").addClass("mailto");<br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("a[href$=.pdf]").addClass("pdflink");</div> <div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("a[href^=http][href*=henry]").addClass("henrylink");</div>&nbsp;&nbsp;&nbsp; });<br /><br /><span style="font-size: 10pt;">5、自定义选择符，语法与css中的伪类选择符语法相同，以一个冒号开头，比如，我们要从某个集合里面选择第一项，可以使用下面的代码：<br /></span>&nbsp;&nbsp;&nbsp; $("a[href^=http]:eq(0)")...&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; $("div:first-child")...<br />&nbsp;&nbsp;&nbsp; 另外两个比较常用的自定义选择符是：odd和：even，分别对应选择奇数行和偶数行。<br />&nbsp;&nbsp;&nbsp; $("table tr:odd").addClass("odd");<br />&nbsp;&nbsp;&nbsp; $("table tr:even").addClass("even");<br />&nbsp;&nbsp;&nbsp; 猜猜看：$("td:contains(a)").css("color","red");这会有什么效果？<br /><br />6、基于表单的选择符，简单列举一下吧，有心人通过练习会明白的。<br />&nbsp;&nbsp;&nbsp; :text&nbsp;&nbsp;&nbsp; ：checkbox&nbsp;&nbsp;&nbsp; ：radio&nbsp;&nbsp;&nbsp; :image&nbsp;&nbsp;&nbsp; :submit&nbsp;&nbsp;&nbsp; :reset&nbsp;&nbsp;&nbsp; :password&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; :file&nbsp;&nbsp;&nbsp; :input&nbsp;&nbsp;&nbsp; :button&nbsp;&nbsp;&nbsp; :enabled&nbsp;&nbsp;&nbsp; :disabled&nbsp;&nbsp;&nbsp; :checked&nbsp;&nbsp;&nbsp; :selected<br />&nbsp;&nbsp;&nbsp; 这些选择符可以链式使用，比如$(':radio:checked')，$(':text:enabled')等等。<br /><br />7、.find()和.filter()的相同点和区别，他们都是遍历元素，区别就是find是对子集操作，filter是对自身集合元素操作。比如<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var $find=$("div").find(".name"); 是对class为name的div内的元素操作，<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; var filter=$("div").filter(".name");是对所有class为name的div进行操作。<br /><br />8、.next()下一个同辈元素；.nextAll()下面所有的同辈元素；<br />&nbsp;&nbsp;&nbsp; .prev()上一个同辈元素；.prevAll()上面所有的同辈元素；<br />&nbsp;&nbsp;&nbsp; .siblings()所有的同辈元素；.andself()包含自己；<br />&nbsp;&nbsp;&nbsp; .parent()父元素；.children()子元素；<br />&nbsp;&nbsp;&nbsp; .end()恢复最近依次破坏性对匹配元素集合的操作，返回到之前的匹配元素集合状态,返回匹配元素集合。<br /><br />9、jQuery为标准的DOM事件都提供了相应的简写事件方法：<br />&nbsp;&nbsp;&nbsp; .blur&nbsp;&nbsp;&nbsp; .change&nbsp;&nbsp;&nbsp; .click&nbsp;&nbsp;&nbsp; .dbclick&nbsp;&nbsp;&nbsp; .error&nbsp;&nbsp;&nbsp; .focus&nbsp;&nbsp;&nbsp; .keydown&nbsp;&nbsp;&nbsp; .keypress&nbsp;&nbsp;&nbsp; .keyup&nbsp;&nbsp;&nbsp; .load&nbsp;&nbsp;&nbsp; .select&nbsp;&nbsp;&nbsp; .scroll<br />&nbsp;&nbsp;&nbsp; .mousedown&nbsp;&nbsp;&nbsp; .mouseover&nbsp;&nbsp;&nbsp; .mouseout&nbsp;&nbsp;&nbsp; .mousemove&nbsp;&nbsp;&nbsp; .mouseup&nbsp;&nbsp;&nbsp; .resize&nbsp;&nbsp;&nbsp; .submit&nbsp;&nbsp;&nbsp; .unload<br /><br />10、复合事件<br />&nbsp;&nbsp;&nbsp; .toggle(fun1,fun2,fun3...)参数都是函数，第一次点击执行fun1，第二次点击执行fun2，依次类推，执行完以后，重新回到fun1开始。<br />&nbsp;&nbsp;&nbsp; .hover(fun1,fun2)，<span style="border-collapse: separate; color: #000000; font-family: arial,sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: small;"><span style="line-height: 20px;">当鼠标移动到一个匹配元素上面时(over)，会触发指定的第一个函数。当鼠标移出这个元素时(out)，会触发指定的第二个函数。</span></span><br /><span style="font-size: 10pt;"><br />11、尽管解释起来很难，但是想象起来却很容易，div里面的一个元素被点击了，但是我们只想执行div的点击事件：(感兴趣的去了解事件捕获和事件冒泡)<br /></span>&nbsp;&nbsp;&nbsp; $(document).ready(function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#divId").click(function(event){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(<span style="color: red;">event.target</span>==this){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 这里是事件执行代码...<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; 另外还有直接阻止事件冒泡的方法.stopPropagation()<br /><div>&nbsp;&nbsp; $(document).ready(function(){<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#divId .button").click(function(event){<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 这里是事件执行代码...<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">event.stopPropagation();</span><br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br /> &nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; 在这里我要说的是，上面两个例子，分别对应的是事件捕获和事件冒泡，不是一回事。</div><br />12、移除事件处理程序，直接看代码，很直观<br />&nbsp;&nbsp;&nbsp; $(function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv").click(function(event){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 事件处理代码<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv-firstChild").click(function(){<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv").unbind("click");<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; });<br />&nbsp;&nbsp;&nbsp; 但是如果click里面的代码，有一部分要执行，有一部分不执行怎么办呢，.unbind()只能全部移除，其实，是可以解决的，给事件起个别名就好了<br /><div>&nbsp;&nbsp;&nbsp; $(function(){<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv").bind('click.first',function(event){<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 第一个事件处理代码<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br /><div>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv").bind('click.second',function(event){<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; 第二个事件处理代码<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });</div> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv-firstChild").click(function(){<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $("#largeDiv").unbind("click.first");<br /> &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; });<br /> &nbsp;&nbsp;&nbsp; });</div><br />13、类似.bind(),.one()只执行一次，还有.trigger('click')是模仿用户点击的事件，.trigger()方法提供了一组与bind方法相同的简写，但是结果不一样，只是触发操作而不是绑定行为：$("#divname").click();<br /><br />14、.show()&nbsp;&nbsp;&nbsp; .hide()&nbsp;&nbsp;&nbsp; .fadeIn()&nbsp;&nbsp;&nbsp; .fadeOut()可以用不同的形式来实现展示和隐藏效果。具体自己研究吧，比较简单。<span style="font-size: 10pt;"><br /></span></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-06-09 10:01 <a href="http://www.blogjava.net/DyEnigma/articles/351959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[小知识]Hibernate映射关系小述</title><link>http://www.blogjava.net/DyEnigma/articles/351337.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Mon, 30 May 2011 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351337.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351337.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351337.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351337.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351337.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hibernate的映射关系很多，也比较复杂，基本上Hibernate的主要部分就是映射，这里把几个常用的映射介绍一下，以备自己查看。一、首先是一对多，多对一关联映射，表模型就用公司表和员工表，它们的结构是公司表两个字段：公司编号（自增长），公司名称；员工表三个字段：员工编号（自增长），员工姓名，所属公司编号。Company.java里面的代码，省略了get和set方法Code highlight...&nbsp;&nbsp;<a href='http://www.blogjava.net/DyEnigma/articles/351337.html'>阅读全文</a><img src ="http://www.blogjava.net/DyEnigma/aggbug/351337.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-30 14:42 <a href="http://www.blogjava.net/DyEnigma/articles/351337.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[小知识]Hibernate与数据库交互方式和Hibernate常用的几个方法</title><link>http://www.blogjava.net/DyEnigma/articles/351167.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Fri, 27 May 2011 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351167.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351167.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351167.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351167.html</trackback:ping><description><![CDATA[<div><span style="color: #303030; font-family: 微软雅黑; line-height: 18px; font-size: small; ">废话不多说，直接放代码，交互方式：<br /><br />第一种，适合sql语言水平比较高的人用<br /><br /><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">HQL(Hibernate Query Language)</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="white-space: pre; ">	</span>面向对象的查询语言，与SQL不同，HQL中的对象名是区分大小写的（除了JAVA类和属性其他部分不区分大小写）；HQL中查的是对象而不是和表，并且支持多态；HQL主要通过Query来操作，Query的创建方式：</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="white-space: pre; ">	</span>Query q = session.createQuery(hql);</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">eg： from Person</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from User user where user.name=:name</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from User user where user.name=:name and user.birthday &lt; :birthday</div></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">@SuppressWarnings(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">unchecked</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">@Override<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">@Transactional(propagation&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Propagation.NOT_SUPPORTED)<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">User</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;check(String&nbsp;username,&nbsp;String&nbsp;email,&nbsp;String&nbsp;peopleId)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;hql&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">from&nbsp;User&nbsp;where&nbsp;username=:uName&nbsp;or&nbsp;email=:email&nbsp;or&nbsp;peopleId=:PID</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;q&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;factory.getCurrentSession().createQuery(hql);<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;q.setString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">uName</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;username);<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;q.setString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">email</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;email);<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;q.setString(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">PID</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;peopleId);<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;q.list();<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;list;<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">}</span></div><br />第二种，矮油，偶sql语言水平有点欠缺，用这个吧，""内是表格的字段名，这里千万要注意，字段名要和hbm.xml文件中字段名大小写一致。<br /><br /><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Criteria</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="white-space: pre; ">	</span>Criteria是一种比HQL更面向对象的查询方式；Criteria的创建方式：</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="white-space: pre; ">	</span>Criteria crit = session.createCriteria(DomainClass.class);</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="white-space: pre; ">	</span>简单属性条件如：criteria.add(Restrictions.eq(propertyName, value)), 这个Restrictions.eq就是QBC运算符</div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="white-space: pre; ">	</span>criteria.add(Restrictions.eqProperty(propertyName,otherPropertyName))</div></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">@SuppressWarnings(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">unchecked</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">@Override<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">@Transactional(propagation&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Propagation.NOT_SUPPORTED)<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">User</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;check(String&nbsp;username,&nbsp;String&nbsp;email,&nbsp;String&nbsp;peopleId)&nbsp;{<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;Criteria&nbsp;c&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;factory.getCurrentSession().createCriteria(User.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;c.add(Restrictions.or(Restrictions.eq(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">userName</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;username),<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Restrictions.or(Restrictions.eq(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">email</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;email),&nbsp;Restrictions<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.eq(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">peopleId</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;peopleId))));<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;c.list();<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;list;<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">}</span></div><div><br />另外简单介绍一下QBC运算符<br /><br /><div><div>= Restrictions.eq() 等于&nbsp;</div><div>&lt;&gt; Restrictions.not(Exprission.eq()) 不等于&nbsp;</div><div>&gt; Restrictions.gt() 大于&nbsp;</div><div>&gt;= Restrictions.ge() 大于等于&nbsp;</div><div>&lt; Restrictions.lt() 小于&nbsp;</div><div>&lt;= Restrictions.le() 小于等于&nbsp;</div><div>is null Restrictions.isnull() 等于空值&nbsp;</div><div>is not null Restrictions.isNotNull() 非空值&nbsp;</div><div>like Restrictions.like() 字符串模式匹配&nbsp;</div><div>and Restrictions.and() 逻辑与&nbsp;</div><div>and Restrictions.conjunction() 逻辑与&nbsp;</div><div>or Restrictions.or() 逻辑或&nbsp;</div><div>or Restrictions.disjunction() 逻辑或&nbsp;</div><div>not Restrictions.not() 逻辑非&nbsp;</div><div>in(列表) Restrictions.in() 等于列表中的某一个值&nbsp;</div><div>ont in(列表) Restrictions.not(Restrictions.in())不等于列表中任意一个值&nbsp;</div><div>between x and y Restrictions.between() 闭区间xy中的任意值&nbsp;</div><div>not between x and y Restrictions.not(Restrictions..between()) 小于值X或者大于值y&nbsp;</div></div><br />常用的几个方法：</div>分页：setFirstResult(num)，从第num条记录开始，setMaxResults(num)，总共num条记录。<br />查询：list();<br /><br />另外还有排序<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #000000; ">List&nbsp;cats&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sess.createCriteria(Cat.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.add(&nbsp;Restrictions.like(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">F%</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.addOrder(&nbsp;Order.asc(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;)<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.addOrder(&nbsp;Order.desc(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">age</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;)<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.setMaxResults(</span><span style="color: #000000; ">50</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.list();<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">List&nbsp;cats&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sess.createCriteria(Cat.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.add(&nbsp;Property.forName(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).like(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">F%</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;)<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.addOrder(&nbsp;Property.forName(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">name</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).asc()&nbsp;)<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.addOrder(&nbsp;Property.forName(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">age</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).desc()&nbsp;)<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.setMaxResults(</span><span style="color: #000000; ">50</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;.list();</span></div><br />最后，还是建议用Hibernate官方推荐的HQL查询方式。<br /></span></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-27 13:32 <a href="http://www.blogjava.net/DyEnigma/articles/351167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[文摘]设计模式</title><link>http://www.blogjava.net/DyEnigma/articles/351118.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351118.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351118.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351118.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351118.html</trackback:ping><description><![CDATA[<div><div style="layout-grid:15.6000pt; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">1、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Factory模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">追MM少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西，虽然口味有所不同，但不管你带MM去麦当劳或肯德基，只管向服务员说&#8220;来四个鸡翅&#8221;就行了。麦当劳和肯德基就是生产鸡翅的Factory</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时，工厂类也要做相应的修改。如：如何创建及如何向客户端提供。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">2、Builder模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">MM最爱听的就是&#8220;我爱你&#8221;这句话了，见到不同地方的MM,要能够用她们的方言跟她说这句话哦，我有一个多种语言翻译机，上面每种语言都有一个按键，见到MM我只要按对应的键，它就能够用相应的语言说出&#8220;我爱你&#8221;这句话了，国外的MM也可以轻松搞掂，这就是我的&#8220;我爱你&nbsp;&#8221;builder。（这一定比美军在伊拉克用的翻译机好卖）</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化，客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">3、Factory&nbsp;method模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">请MM去麦当劳吃汉堡，不同的MM有不同的口味，要每个都记住是一件烦人的事情，我一般采用Factory&nbsp;Method模式，带着MM到服务员那儿，说&#8220;要一个汉堡&#8221;，具体要什么样的汉堡呢，让MM直接跟服务员说就行了。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去做，成为一个抽象工厂角色，仅负责给出具体工厂类必须实现的接口，而不接触哪一个产品类应当被实例化这种细节。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">4、Prototype模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">跟MM用QQ聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需要时只要copy出来放到QQ里面就行了，这就是我的情话prototype了。</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类，产品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺点是每一个类都必须配备一个克隆方法。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">5、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Singleton模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公Sigleton，她们只要说道&#8220;老公&#8221;，都是指的同一个人，那就是我(刚才做了个梦啦，哪有这么好的事)</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的&#8220;单一实例&#8221;的需求时才可使用。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">6、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Adapter模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">在朋友聚会上碰到了一个美女Sarah，从香港来的，可我不会说粤语，她不会说普通话，只好求助于我的朋友kent了，他作为我和Sarah之间的Adapter，让我和Sarah可以相互交谈了(也不知道他会不会耍我)</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　适配器（变压器）模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个合适的实例给客户端。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">7、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Bridge模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">早上碰到MM，要说早上好，晚上碰到MM，要说晚上好；碰到MM穿了件新衣服，要说你的衣服好漂亮哦，碰到MM新做的发型，要说你的头发好漂亮哦。不要问我&#8220;早上碰到MM新做了个发型怎么说&#8221;这种问题，自己用BRIDGE组合一下不就行了</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强关联变成弱关联，也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系，从而使两者可以独立的变化。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">8、Composite模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Mary今天过生日。&#8220;我过生日，你要送我一件礼物。&#8221;&#8220;嗯，好吧，去商店，你自己挑。&#8221;&#8220;这件T恤挺漂亮，买，这条裙子好看，买，这个包也不错，买。&#8221;&#8220;喂，买了三件了呀，我只答应送一件礼物的哦。&#8221;&#8220;什么呀，T恤加裙子加包包，正好配成一套呀，小姐，麻烦你包起来。&nbsp;&#8221;&#8220;&#8230;&#8230;&#8221;，MM都会用Composite模式了，你会了没有？</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">9、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Decorator模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Mary过完轮到Sarly过生日，还是不要叫她自己挑了，不然这个月伙食费肯定玩完，拿出我去年在华山顶上照的照片，在背面写上&#8220;最好的的礼物，就是爱你的Fita&#8221;，再到街上礼品店买了个像框（卖礼品的MM也很漂亮哦），再找隔壁搞美术设计的Mike设计了一个漂亮的盒子装起来&#8230;&#8230;，我们都是Decorator，最终都在修饰我这个人呀，怎么样，看懂了吗？</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案，提供比继承更多的灵活性。动态给一个对象增加功能，这些功能可以再动态的撤消。增加由一些基本功能的排列组合而产生的非常大量的功能。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">10、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Facade模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">我有一个专业的Nikon相机，我就喜欢自己手动调光圈、快门，这样照出来的照片才专业，但MM可不懂这些，教了半天也不会。幸好相机有Facade设计模式，把相机调整到自动档，只要对准目标按快门就行了，一切由相机自动调整，这样MM也可以用这个相机给我拍张照片了。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　门面模式：外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口，使得子系统更易于使用。每一个子系统只有一个门面类，而且此门面类只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">11、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Flyweight模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">每天跟MM发短信，手指都累死了，最近买了个新手机，可以把一些常用的句子存在手机里，要用的时候，直接拿出来，在前面加上MM的名字就可以发送了，再不用一个字一个字敲了。共享的句子就是Flyweight，MM的名字就是提取出来的外部特征，根据上下文情况使用。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　享元模式：FLYWEIGHT在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能影响内蕴状态，它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类中区分开来，将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象，而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的数量。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">12、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Proxy模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">跟MM在网上聊天，一开头总是&#8220;hi,你好&#8221;,&#8220;你从哪儿来呀？&#8221;&#8220;你多大了？&#8221;&#8220;身高多少呀？&#8221;这些话，真烦人，写个程序做为我的Proxy吧，凡是接收到这些话都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下，客户不想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作用。客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象，而仅仅持有一个被代理对象的接口，这时候代理对象不能够创建被代理对象，被代理对象必须有系统的其他角色代为创建并传入。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">13、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Chain&nbsp;of&nbsp;Responsibleity模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">晚上去上英语课，为了好开溜坐到了最后一排，哇，前面坐了好几个漂亮的MM哎，找张纸条，写上&#8220;Hi,可以做我的女朋友吗？如果不愿意请向前传&#8221;，纸条就一个接一个的传上去了，糟糕，传到第一排的MM把纸条传给老师了，听说是个老处女呀，快跑!</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。客户并不知道链上的哪一个对象最终处理这个请求，系统可以在不影响客户端的情况下动态的重新组织链和分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以最终不被任何接收端对象所接受。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">14、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Command模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">俺有一个MM家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间传送信息，她对我有什么指示，就写一张纸条让她弟弟带给我。这不，她弟弟又传送过来一个COMMAND，为了感谢他，我请他吃了碗杂酱面，哪知道他说：&#8220;我同时给我姐姐三个男朋友送COMMAND，就数你最小气，才请我吃面。&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任和执行命令的责任分割开，委派给不同的对象。命令模式允许请求的一方和发送的一方独立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接收，以及操作是否执行，何时被执行以及是怎么被执行的。系统支持命令的撤消。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">15、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Interpreter模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">俺有一个《泡MM真经》，上面有各种泡MM的攻略，比如说去吃西餐的步骤、去看电影的方法等等，跟MM约会时，只要做一个Interpreter，照着上面的脚本执行就可以了。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言是指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类的等级结构，也就是一系列的组合规则。每一个命令对象都有一个解释方法，代表对命令对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">16、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Iterator模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">我爱上了Mary，不顾一切的向她求婚。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　Mary：&#8220;想要我跟你结婚，得答应我的条件&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　我：&#8220;什么条件我都答应，你说吧&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　Mary：&#8220;我看上了那个一克拉的钻石&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　我：&#8220;我买，我买，还有吗？&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　Mary：&#8220;我看上了湖边的那栋别墅&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　我：&#8220;我买，我买，还有吗？&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　Mary：&#8220;我看上那辆法拉利跑车&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　我脑袋嗡的一声，坐在椅子上，一咬牙：&#8220;我买，我买，还有吗？&#8221;</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集，聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象，每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">17、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Mediator模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">四个MM打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁边，按照各自的筹码数算钱，赚了钱的从我这里拿，赔了钱的也付给我，一切就OK啦，俺得到了四个MM的电话。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时，不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化，把对象在小尺度的行为上与其他对象的相互作用分开处理。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">18、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Memento模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">同时跟几个MM聊天时，一定要记清楚刚才跟MM说了些什么话，不然MM发现了会不高兴的哦，幸亏我有个备忘录，刚才与哪个MM说了什么话我都拷贝一份放到备忘录里面保存，这样可以随时察看以前的记录啦。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下，将一个对象的状态捉住，并外部化，存储起来，从而可以在将来合适的时候把这个对象还原到存储起来的状态。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">19、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Observer模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">想知道咱们公司最新MM情报吗？加入公司的MM情报邮件组就行了，tom负责搜集情报，他发现的新情报不用一个一个通知我们，直接发布给邮件组，我们作为订阅者（观察者）就可以及时收到情报啦</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　观察者模式：观察者模式定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时，会通知所有观察者对象，使他们能够自动更新自己。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">20、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">State模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">跟MM交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同，比如你约她今天晚上去看电影，对你没兴趣的MM就会说&nbsp;&#8220;有事情啦&#8221;，对你不讨厌但还没喜欢上的MM就会说&#8220;好啊，不过可以带上我同事么？&#8221;，已经喜欢上你的MM就会说&#8220;几点钟？看完电影再去泡吧怎么样？&#8221;，当然你看电影过程中表现良好的话，也可以把MM的状态从不讨厌不喜欢变成喜欢哦。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里，每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态改变的时候，其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时，系统便改变所选的子类。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">21、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Strategy模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">跟不同类型的MM约会，要用不同的策略，有的请电影比较好，有的则去吃小吃效果不错，有的去海边浪漫最合适，单目的都是为了得到MM的芳心，我的追MM锦囊中有好多Strategy哦。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类中提供。由于算法和环境独立开来，算法的增减，修改都不会影响到环境和客户端。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">22、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Template&nbsp;method模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">看过《如何说服女生上床》这部经典文章吗？女生从认识到上床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步骤(Template&nbsp;method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随机应变啦(具体实现)；</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的形式实现，然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架，而将逻辑的细节留给具体的子类去实现。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">23、</span><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">Visitor模式</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">情人节到了，要给每个MM送一束鲜花和一张卡片，可是每个MM送的花都要针对她个人的特点，每张卡片也要根据个人的特点来挑，我一个人哪搞得清楚，还是找花店老板和礼品店老板做一下Visitor，让花店老板根据MM的特点选一束花，让礼品店老板也根据每个人特点选一张卡，这样就轻松多了；</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:10.5000pt; font-family:'微软雅黑'; ">　　访问者模式：访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话，接受这个操作的数据结构可以保持不变。访问者模式适用于数据结构相对未定的系统，它把数据结构和作用于结构上的操&nbsp;y作之间的耦合解脱开，使得操作集合可以相对自由的演化。访问者模式使得增加新的操作变的很容易，就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中，而不是分散到一个个的节点类中。当使用访问者模式时，要将尽可能多的对象浏览逻辑放在访问者类中，而不是放到它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类。</span></p></div></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 17:56 <a href="http://www.blogjava.net/DyEnigma/articles/351118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[文摘]struts2标签库</title><link>http://www.blogjava.net/DyEnigma/articles/351112.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 09:11:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351112.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351112.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351112.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351112.html</trackback:ping><description><![CDATA[<div><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">A：</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:a&nbsp;href=""&gt;&lt;/s:a&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">超链接，类似于html里的&lt;a&gt;&lt;/a&gt;&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:action&nbsp;name=""&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">执行一个view里面的一个action&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:action&nbsp;error/&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;如果action的errors有值那么显示出来&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:action&nbsp;message/&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">如果action的&nbsp;message有值那么显示出来&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:append&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">添加一个值到list，&nbsp;类似于list.add();&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:autocompleter&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;自动完成&lt;s:combobox&gt;标签的内容，这个是ajax&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">B：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:bean&nbsp;name=""&gt;&lt;/s:bean&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">类似于struts1.x中的，JavaBean的值&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">C：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:checkbox&gt;&nbsp;复选框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:checkboxlist&nbsp;list=""&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">多选框&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:combobox&nbsp;list=""&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">下拉框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:component&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;图像符号&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">D：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:date/&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">获取日期格式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:datetimepicker&gt;&nbsp;日期输入框&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:debug&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">显示错误信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:div&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;类似于html的&lt;div&gt;&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:doubleselect&nbsp;list=""&nbsp;doubleName=""&nbsp;doubleList=""&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">双下拉框&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">E：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:if&nbsp;test=""&gt;&lt;/s:if&gt;，&lt;s:elseif&nbsp;test=""&gt;&lt;/s:elseif&gt;，&nbsp;&lt;s:else&gt;&lt;/s:else&gt;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; ">&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">这3&nbsp;个标签一起使用，表示条件判断&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">F：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:fielderror&gt;&nbsp;显示文件错误信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:file&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">文件上传&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:form&nbsp;action=""&gt;&lt;/s:form&gt;&nbsp;&nbsp;获取相应form的值&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">G：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:generator&nbsp;separator=""&nbsp;val=""&gt;&nbsp;&nbsp;&nbsp;和&lt;s:iterator&gt;标签一起使用&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">H：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:head/&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;在&lt;head&gt;&lt;/head&gt;里使用，表示头文件结束&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:hidden&gt;&lt;/s:hidden&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;隐藏值&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">I：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:i18n&nbsp;name=""&gt;&lt;/s:i18n&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">加载资源包到值堆栈&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:include&nbsp;value=""&gt;&lt;/s:include&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;&nbsp;包含一个输出，servlet或jsp页面&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:inputtransferselect&nbsp;list=""&gt;&nbsp;&nbsp;&nbsp;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">获取form的一个输入&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:iterator&gt;&lt;/s:iterator&gt;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; ">&nbsp;&nbsp;</span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;用于遍历集合&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">L：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:label&gt;&lt;/s:label&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">只读的标签&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">M：</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:merge&gt;&lt;/s:merge&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">合并遍历集合出来的值&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">O：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:optgroup&gt;&lt;/s:optgroup&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;获取标签组&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:optiontransferselect&nbsp;doubleList=""&nbsp;list=""&nbsp;doubleName=""&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">左右选择<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">P：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:param&gt;&lt;/s:param&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;为其他标签提供参数&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:password&gt;&lt;/s:password&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">密码输入框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:property/&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;得到'value'的属性&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:push&nbsp;value=""&gt;&lt;/s:push&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">value的值push到栈中,从而使property标签的能够获取value的属性&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">R：</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:radio&nbsp;list=""&gt;&lt;/s:radio&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">单选按钮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:reset&gt;&lt;/s:reset&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;重置按钮&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">S：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:select&nbsp;list=""&gt;&lt;/s:select&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">单选框&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:set&nbsp;name=""&gt;&lt;/s:set&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">赋予变量一个特定范围内的值&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:sort&nbsp;comparator=""&gt;&lt;/s:sort&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">通过属性给list分类&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:submit&gt;&lt;/s:submit&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;提交按钮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:subset&gt;&lt;/s:subset&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">为遍历集合输出子集&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">T：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:tabbedPanel&nbsp;id=""&gt;&lt;/s:tabbedPanel&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">表格框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:table&gt;&lt;/s:table&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;表格&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:text&nbsp;name=""&gt;&lt;/s:text&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">I18n文本信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:textarea&gt;&lt;/s:textarea&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;文本域输入框&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:textfield&gt;&lt;/s:textfield&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">文本输入框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:token&gt;&lt;/s:token&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;拦截器&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:tree&gt;&lt;/s:tree&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">树&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:treenode&nbsp;label=""&gt;&lt;/s:treenode&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">树的结构&nbsp;<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; "><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">U：&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:updownselect&nbsp;list=""&gt;&lt;/s:updownselect&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">多选择框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="mso-spacerun:'yes'; font-size:12.0000pt; font-family:'Times New Roman'; "><br /></span><span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&lt;s:url&gt;&lt;/s:url&gt;</span>&nbsp;<span style="color: #000000; font-family: 微软雅黑; font-size: 12pt; ">&nbsp;创建url</span></p></div><div><p style="text-indent:24.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><font class="Apple-style-span" face="微软雅黑" size="3"></font></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; color:#000000; font-size:9.0000pt; font-family:'微软雅黑'; "></span></p></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 17:11 <a href="http://www.blogjava.net/DyEnigma/articles/351112.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[应用]myeclipse应用相关</title><link>http://www.blogjava.net/DyEnigma/articles/351111.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351111.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351111.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351111.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351111.html</trackback:ping><description><![CDATA[<div><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">1、建立用户自己的库<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:12.0000pt; font-family:'微软雅黑'; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">Window-&gt;Preferences-&gt;Java-&gt;Build&nbsp;Path-&gt;User&nbsp;Libraries<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">2、有的时候，myeclipse的光标跟踪提示弹出来的小框框很碍事，两种方式分别对应不同的情况可以解决这个问题：<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="mso-spacerun:'yes'; color:#000000; font-weight:normal; font-size:12.0000pt; font-family:'微软雅黑'; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">打开xml文件，&nbsp;右键&gt;&gt;prefernces&gt;&gt;&nbsp;Common&nbsp;editor&nbsp;prefernces，在右边的选项卡中选择Hovers&nbsp;</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">，</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">最后去掉&nbsp;Combined&nbsp;Hover</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">，</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">一切OK</span><span style="color: #000000; font-weight: normal; font-family: 微软雅黑; font-size: 10pt; ">；还有另外一种情况，</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">windows</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">&gt;</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">Preferences</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">&gt;</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">java</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">&gt;</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">Editor</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">&gt;</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">Hovers中将Combined&nbsp;Hover前的对勾去掉就可以了</span><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">。<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">3、Document&nbsp;root&nbsp;element&nbsp;"beans"，must&nbsp;match&nbsp;DOCTYPE&nbsp;root&nbsp;"null"<br /><br /></span></p><p style="text-indent:24.0000pt; margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">在你的工程目录下查找是否含有两个或者多个spring.jar包?如果解决不了，检查你的spring配置文件的DOCTYPE。<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">4、设置xml文件的dtd路径<br /><br /></span></p><p style="margin-bottom:0pt; margin-top:0pt; text-align:left; "><span style="color: #000000; font-weight: normal; font-style: normal; font-family: 微软雅黑; font-size: 10pt; ">&nbsp;&nbsp;&nbsp;&nbsp;Windows&gt;Myeclipse&gt;Files&nbsp;and&nbsp;Editors&gt;XML&gt;XML&nbsp;Catalog右边edit</span></p></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 17:03 <a href="http://www.blogjava.net/DyEnigma/articles/351111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[文摘]Struts2配置文件中result介绍</title><link>http://www.blogjava.net/DyEnigma/articles/351108.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351108.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351108.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351108.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351108.html</trackback:ping><description><![CDATA[<div><span style="line-height: 18px; font-family: Tahoma; color: #303030; font-size: 12pt">
<p style="text-align: left; line-height: 150%" align="left"><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">struts2</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">的配置文件中</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">里有个</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">result</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，下面就介绍一下有关它的信息</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br />1</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">、在</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">里面，提供了五个默认的返回值：</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br />String SUCCESS="success"</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">；</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br />String NONE="none"</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">；</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br />String ERROR="error"</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">；</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br />String INPUT="input"</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">；</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br />String LOGIN</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">＝</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">"login"</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">；</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br /></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">要想使用这些默认值，</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">类要继承</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">com.opensymphony.xwork2.ActionSupport</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">；</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br /></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">在</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">&lt;result&gt;/success.jsp&lt;/result&gt;</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">就是默认为</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">&lt;result name="success"&gt;/success.jsp&lt;/result&gt;</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br /><span style="color: #303030">2</span></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">、</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">result</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">的跳转类型，如果没有指定的话，默认就是</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">Dispatcher</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，下面介绍其他几个常用的类型</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br /><span style="color: #303030">redirect</span></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，这个类型，不能重定向到</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">WEB-INF</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">里面的页面，重定向的效果和用户直接访问这个页面的效果是一样的，地址栏也会改变到该页面，可以用来传递参数，比如说修改之类，有时候传递的中文参数会有乱码问题，可以这样解决：</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">：属性＝</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">URLEncoder.encode("</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">中文</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">","UTF-8");</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><span style="color: #303030">jsp</span></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">中：</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">&lt;%=URLDecoder.decode(new String(request.getParameter("</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">参数名</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">").getBytes("ISO8859-1"),"UTF-8"),"UTF-8")%&gt;</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br /><span style="color: #303030">redirectAction</span></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，这个类型用来进行两个</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">之间的跳转。但是不传递参数，适用于在不同包之间的</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">跳转。</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br /><span style="color: #303030">chain</span></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，这个类型是链式处理，可以用来跳转到</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，而且传递参数，适用于同一个包内的不同</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">跳转。</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br /><span style="color: #303030">plainText</span></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">，显示原始文件内容，比如原样显示</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">jsp</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">页面源代码，而直接访问这个</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">jsp</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">页面，是看不到源代码的。</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030"><br /><br /></span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">其他的跳转类型，请参考</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">struts-default.xml</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">文件中的</span><span style="line-height: 150%; font-family: 'Courier New'; color: #303030">&lt;result-type&gt;</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'; color: #303030">标签。</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br />3</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'">、</span><span style="line-height: 150%; font-family: 'Courier New'">result</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'">中还可以使用</span><span style="line-height: 150%; font-family: 'Courier New'">${</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'">属性名</span><span style="line-height: 150%; font-family: 'Courier New'">}</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'">表达式来访问</span><span style="line-height: 150%; font-family: 'Courier New'">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'">里面的属性，表达式中的属性名对应</span><span style="line-height: 150%; font-family: 'Courier New'">action</span><span style="line-height: 150%; font-family: '微软雅黑','sans-serif'">里面的属性名，比如：</span><span style="line-height: 150%; font-family: 'Courier New'"><br /><br />&lt;result type="redirect"&gt;/view.jsp?userId=${userId}&lt;/result&gt;</span></p></span></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 16:53 <a href="http://www.blogjava.net/DyEnigma/articles/351108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[经验]Dao和Service有必要区分开来吗？</title><link>http://www.blogjava.net/DyEnigma/articles/351100.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351100.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351100.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351100.html</trackback:ping><description><![CDATA[<div><span style="color: #303030; font-family: 微软雅黑; line-height: 18px; font-size: small; ">在S2SH项目中，有些会出现Dao包里面的接口声明和Service里面的接口声明完全一样，而且service层也是直接调用dao层，那么为什么不干脆用一个就好了呢？<br /><br />这里说明一下，dao层是专注与数据库的单个表进行操作（有的时候会有复杂的表关联，但是总体来说，是这样的），而service层是对dao对象进行操作，有可能用多个dao对象返回的结果进行再处理，这就是它们之间的不同，为了减少代码的耦合，分开还是有一定的必要的。<br /><br />其实，dao数据层和service业务层还有action控制层，并没有那种层次很分明的关系，有的时候，业务简单了，就可以都放在dao里面直接处理，有的时候，dao层中复杂了，也要移到service层中，不同的情况是需要灵活把握的。</span></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 16:14 <a href="http://www.blogjava.net/DyEnigma/articles/351100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[文摘]Struts2配置文件</title><link>http://www.blogjava.net/DyEnigma/articles/351095.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351095.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351095.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351095.html</trackback:ping><description><![CDATA[<font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">struts2的默认配置文件是struts.xml，放置的位置是WEB-INF/classes目录下，模板</font><br /><br /><div style="font-family: 微软雅黑; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;struts&nbsp;PUBLIC<br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #FF00FF; ">&nbsp;&nbsp;&nbsp;&nbsp;"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN"<br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #FF00FF; ">&nbsp;&nbsp;&nbsp;&nbsp;"http://struts.apache.org/dtds/struts-2.0.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">6</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span></div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">如果想要使用这个配置文件，就要在web.xml文件里面配置，以启动struts2框架。</font><br /><br /><div style="font-family: 微软雅黑; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">struts2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">struts2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/*</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span></div><br /><div style="font-size: small; "><span style="font-family: 微软雅黑; ">在很多应用中，会出现很多个Action，如果都写在一个struts.xml文件中，会让结构变的难以维护，这种情况下，可以将一个struts.xml文件按action种类分解成多个struts配置文件，比如说关于用户的：struts-user.xml，关于管理的：struts-manage.xml，然后在总struts配置文件中调用<br /><br /></span></div><div style="background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="struts-user.xml"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="struts-manage.xml"</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span></div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">下面谈谈配置文件的内容，关于struts-2.0.dtd文件里面的dtd结构就不罗列了，到处都可以找到，这里主要介绍几个常用的配置。<br /></font><br /><div style="font-size: small; "><span style="font-family: 微软雅黑; ">首先要说的是，常量可以在</span>struts-default.xml、struts-plugin.xml、struts.xml、struts.properties、web.xml<span class="Apple-style-span" style="font-family: 微软雅黑; ">5个文件中配置，按前面的顺序依次加载，配置有重复的话，后面文件会覆盖掉前面的配置，最好都在struts.xml文件里面统一配置。</span></div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">1、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #800000; ">constant&nbsp;</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #FF0000; ">name</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">="struts.ui.theme"</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #FF0000; ">&nbsp;value</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">="simple"</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #FF0000; ">&nbsp;</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">/&gt;<br /></span></span><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">在JSP页面中，会用到struts2的s标签，而这个标签会有一个默认的格式，有的时候会打乱页面的布局，可以使用上面这个配置来禁止s标签的默认格式生效。</font><br /><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">2、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.objectFactory"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="spring"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">当struts2和spring集成时，用这个配置指定由spring负责action对象的创建。这样就可以用到spring的反射技术，更方便的编程。</font><br /><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">3、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.action.extension"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="do"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">这个是关于action的后缀定义，在上面设置为.do，如果想要设置更多的类型，可以使用value="do,action,ss"，等把不同的后缀用逗号隔开。</font><br /><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">4、</font><span style="font-family: 微软雅黑; font-size: 13px; color: #0000ff; ">&lt;</span><span style="font-family: 微软雅黑; font-size: 13px; color: #800000; ">constant&nbsp;</span><span style="font-family: 微软雅黑; font-size: 13px; color: #ff0000; ">name</span><span style="font-family: 微软雅黑; font-size: 13px; color: #0000ff; ">="struts.i18n.encoding"</span><span style="font-family: 微软雅黑; font-size: 13px; color: #ff0000; ">&nbsp;value</span><span style="font-family: 微软雅黑; font-size: 13px; color: #0000ff; ">="true"</span><span style="font-family: 微软雅黑; font-size: 13px; color: #ff0000; ">&nbsp;</span><font class="Apple-style-span" color="#0000ff" face="微软雅黑" size="2">/&gt;</font><br /><font class="Apple-style-span" size="2"><br /></font><div style="font-size: small; font-family: 微软雅黑; "><div>指定默认编码集，作用于HttpServletRequest的setCharacterEncoding方法和Freemarker、velocity的输出，默认的编码集是UTF-8。</div></div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">5、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #800000; ">constant&nbsp;</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #FF0000; ">name</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">="struts.serve.static.browserCache"</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #FF0000; ">&nbsp;value</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">="false"</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #FF0000; ">&nbsp;</span></span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><div style="font-size: small; font-family: 微软雅黑; ">有时修改了部分内容，但是在浏览器上没有体现出来，这是因为缓存设置的问题，上面这个就是设置浏览器是否缓存静态内容，默认值为true，开发阶段最好关闭。</div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">6、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.configuration.xml.reload"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><div style="font-size: small; font-family: 微软雅黑; ">当struts配置文件被修改后，系统是否自动加载该文件，默认值为false,开发阶段打开就节省了好多时间。</div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">7、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.enable,DynamicMethodInvocation"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="false"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><div style="font-size: small; font-family: 微软雅黑; ">设置struts2是否支持动态方法调用，即通过!+方法名的方式，默认值为true，这个配置，各有所爱吧，不过统一方式访问还是比较好的，我选择关闭。</div><br /><font class="Apple-style-span" face="微软雅黑" style="font-size: small; ">8、</font><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: 13px; "><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.multipart.maxSize"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="2097152"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><div style="font-size: small; "><span style="font-family: 微软雅黑; ">这个配置是struts2上传文件的大小限制，单位为字节，上面的2097152字节就是2M，另外需要注意的是，这个文件大小，在多文件上传时是总大小。</span></div><br /><font class="Apple-style-span" size="2">9、</font><span class="Apple-style-span" style="font-size: 13px; "><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.devMode"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></span><br /><br /><div style="font-size: small; "><span class="Apple-style-span" style="font-family: 微软雅黑; ">在开发模式下使用，可以打印出更详细的错误信息。<br /><br />后面就是action的配置<br /></span></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">package&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="user"</span><span style="color: #FF0000; ">&nbsp;namespace</span><span style="color: #0000FF; ">="/user"</span><span style="color: #FF0000; ">&nbsp;extends</span><span style="color: #0000FF; ">="struts-default"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">action&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="op_*"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="userAction"</span><span style="color: #FF0000; ">&nbsp;method</span><span style="color: #0000FF; ">="{1}"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/success.jsp</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">action</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">action&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="ck_*"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="checkAction"</span><span style="color: #FF0000; ">&nbsp;method</span><span style="color: #0000FF; ">="{1}"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="input"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/index.jsp</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="show"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/show.jsp</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="check"</span><span style="color: #FF0000; ">&nbsp;type</span><span style="color: #0000FF; ">="stream"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="contentType"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">text/html</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="inputName"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">inputStream</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">action</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">package</span><span style="color: #0000FF; ">&gt;</span></div><br /><div><span style="font-family: 微软雅黑; font-size: small; ">在这个配置里面还可以注入值，在&lt;action&gt;&lt;/action&gt;里面加上&lt;param name="arg"&gt;value&lt;/param&gt;</span><span class="Apple-style-span" style="font-family: 微软雅黑; font-size: small; ">，然后在action类里面提供arg的getset方法，就可以直接在跳转页面${arg}直接访问到数据value。关于通配符参考前面的S2SH实例说明。</span></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/351095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 15:55 <a href="http://www.blogjava.net/DyEnigma/articles/351095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]S2SH之拜师考验－jQuery表单验证</title><link>http://www.blogjava.net/DyEnigma/articles/351047.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Thu, 26 May 2011 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351047.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351047.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351047.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351047.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在上一篇中已经实现了基本的数据库写入操作，但是实际项目中，是不允许如此不设防注册的，比如说用户名要唯一，身份证号码要合法，各种字段必须要填，两次密码要一致等等，那么有哪些方式可以进行这种验证呢，客户端验证和服务端验证相关答案有很多，这里就不一一列举了，这里只写我认为比较好用的方式，有的项目同时需要客户端验证和服务端验证，那就由项目具体的需求决定。还用上一篇的jsp进行检验，使用技术就是jQuery...&nbsp;&nbsp;<a href='http://www.blogjava.net/DyEnigma/articles/351047.html'>阅读全文</a><img src ="http://www.blogjava.net/DyEnigma/aggbug/351047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-26 10:10 <a href="http://www.blogjava.net/DyEnigma/articles/351047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]S2SH之小试身手－初探实例</title><link>http://www.blogjava.net/DyEnigma/articles/351011.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Wed, 25 May 2011 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/351011.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/351011.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/351011.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/351011.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/351011.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上一篇已经搭建好了开发环境，现在用一个简单的注册登录来体验一下S2SH。1、建立一个实体类：user.java，在cn.dy.bean包新建classCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;1&nbsp;package&nbsp;c...&nbsp;&nbsp;<a href='http://www.blogjava.net/DyEnigma/articles/351011.html'>阅读全文</a><img src ="http://www.blogjava.net/DyEnigma/aggbug/351011.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-25 17:04 <a href="http://www.blogjava.net/DyEnigma/articles/351011.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]S2SH之初出茅庐－环境搭建</title><link>http://www.blogjava.net/DyEnigma/articles/350992.html</link><dc:creator>DyEnigma</dc:creator><author>DyEnigma</author><pubDate>Wed, 25 May 2011 04:23:00 GMT</pubDate><guid>http://www.blogjava.net/DyEnigma/articles/350992.html</guid><wfw:comment>http://www.blogjava.net/DyEnigma/comments/350992.html</wfw:comment><comments>http://www.blogjava.net/DyEnigma/articles/350992.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/DyEnigma/comments/commentRss/350992.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/DyEnigma/services/trackbacks/350992.html</trackback:ping><description><![CDATA[<div>
<p style="margin-bottom: 0pt; margin-top: 0pt; text-align: left; "><span style="font-family: 微软雅黑; "></span></p><div><span class="Apple-style-span" style="font-family: verdana, 'courier new'; "><span style="color: #000000; font-weight: bold; font-family: 微软雅黑; font-size: 10pt; ">说明</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">：本实例通过</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">Struts2+Spring+Hibernate</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">三个框架的整合实现了对数据库信息最基本的</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">CRUD</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">操作，在前端页面用jQuery进行信息的展示实现基本功能。</span></span></div><span style="color: #000000; font-weight: bold; font-family: 微软雅黑; font-size: 10pt; ">开发环境</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">：</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">MyEclipse</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">8.5</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">+Tomcat6</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">.0</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">+</span><span style="color: #000000; "><font class="Apple-style-span" face="微软雅黑" size="2">Mysql5.1+jdk1.6<br />
</font></span><p>&nbsp;</p>
<div><font class="Apple-style-span" face="微软雅黑" size="2"><strong>其他工具版本</strong>：Struts2.1.8.1，Spring2.5，Hibernate3.3，Jquery1.5（<span class="Apple-style-span" style="font-size: 13px; ">jquery.validate.js等）；有些工具版本会稍微升级，不会对整体项目有大的影响。</span><span class="Apple-style-span" style="font-size: 13px; "><br /></span><span class="Apple-style-span" style="font-size: 13px; ">
</span><span class="Apple-style-span" style="font-size: 13px; "><strong>前端页面</strong></span><span class="Apple-style-span" style="font-size: 13px; ">：Xhtml+css</span><span class="Apple-style-span" style="font-size: 13px; "><br /></span><span class="Apple-style-span" style="font-size: 13px; ">
</span><span class="Apple-style-span" style="font-size: 13px; "><br /></span><span class="Apple-style-span" style="font-size: 13px; ">
</span><span class="Apple-style-span" style="font-size: 13px; color: red; ">另：页面，数据库和xml文件皆用UTF-8编码。<br />
<br />
</span></font></div>
<span style="color: #000000; font-weight: bold; font-family: 微软雅黑; font-size: 10pt; ">环境搭建</span><font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; ">：<br />
</font><br />
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; ">1、打开myeclipse，新建web project输入项目名称，项目名称为DyEnigma<br />
</font><br />
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; ">2、先把spring整合进来，因为以后的hibernate要用到它的配置文件。我把spring的配置文件命名为spring.xml并把它放在了WEB-INF文件夹中，spring.xml文件内部的配置模板代码如下<br />
</font><br />
<div style="color: #000000; font-family: 微软雅黑; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">beans&nbsp;</span><span style="color: #FF0000; ">xmlns</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/beans"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000FF; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #FF0000; ">&nbsp;xmlns:context</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/context"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:aop</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/aop"</span><span style="color: #FF0000; ">&nbsp;xmlns:tx</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/tx"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000FF; ">="http://www.springframework.org/schema/beans<br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/beans/spring-beans-2.5.xsd<br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #0000FF; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/context<br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #0000FF; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/context/spring-context-2.5.xsd<br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #0000FF; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/aop&nbsp;http://www.springframework.org/schema/aop/spring-aop-2.5.xsd<br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #0000FF; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http://www.springframework.org/schema/tx&nbsp;http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">beans</span><span style="color: #0000FF; ">&gt;</span></div>
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
然后导入spring依赖包，这里简单的把名称罗列出来，aspectjrt.jar、aspectjweaver.jar、cglib-nodep-2.1_3.jar、common-annotations.jar、commons-logging.jar、spring.jar、log4j-1.2.15.jar，另外使用c3p0建立连接池，还要加入c3p0-0.9.1.2.jar包；这里spring采用扫描加注解的方式管理bean，在配置文件中加入代码<br /><span class="Apple-style-span" style="font-size: 13px; "><span style="color: red; ">&lt;context:component-scan base-package="cn.dy" /&gt;<br /></span>以后建立的action，实体类，dao和service全部都会在cn.dy下面，以让spring根据各自的注解自动管理。<br /></span><br /></font>
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; ">3、在spring配置文件里面配置数据源以及整合进hibernate，代码如下<br />
</font><br />
<div style="color: #000000; font-family: 微软雅黑; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="com.mchange.v2.c3p0.ComboPooledDataSource"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroy-method</span><span style="color: #0000FF; ">="close"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="driverClass"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="org.gjt.mm.mysql.Driver"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="jdbcUrl"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value</span><span style="color: #0000FF; ">="jdbc:mysql://localhost:3306/learn?useUnicode=true&amp;amp;characterEncoding=UTF-8"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="user"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="root"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="password"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="123456"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">初始化时获取的连接数，取值应在minPoolSize与maxPoolSize之间。Default:&nbsp;3&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="initialPoolSize"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="1"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">连接池中保留的最小连接数。</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="minPoolSize"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="1"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">连接池中保留的最大连接数。Default:&nbsp;15&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="maxPoolSize"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="300"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default:&nbsp;0&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="maxIdleTime"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="60"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:&nbsp;3&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="acquireIncrement"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="5"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">每60秒检查所有连接池中的空闲连接。Default:&nbsp;0&nbsp;</span><span style="color: #008000; ">--&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="idleConnectionTestPeriod"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="60"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="sessionFactory"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;class</span><span style="color: #0000FF; ">="org.springframework.orm.hibernate3.LocalSessionFactoryBean"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="dataSource"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="mappingResources"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">list</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">26</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">cn/dy/bean/User.hbm.xml</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">27</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">list</span><span style="color: #0000ff; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">28</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">property</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">29</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="hibernateProperties"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">30</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">31</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hibernate.dialect=org.hibernate.dialect.MySQL5Dialect<br />
</span><span style="color: #008080; ">32</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hibernate.hbm2ddl.auto=update<br />
</span><span style="color: #008080; ">33</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hibernate.show_sql=false<br />
</span><span style="color: #008080; ">34</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hibernate.format_sql=false<br />
</span><span style="color: #008080; ">35</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">36</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">property</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">37</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span></div>
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
注意第五行的细节问题，另外，第26行的value是以后我们将要建立的hibernate配置文件，可以先不要添加，然后导入hibernate依赖包和mysql数据库连接包</font><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">antlr-2.7.6.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、ehcache-1.2.3.jar、ejb3-persistence.jar、hibernate3.jar、hibernate-annotations.jar、hibernate-cglib-repack-2.1_3.jar、hibernate-commons-annotations.jar、hibernate-entitymanager.jar、javassist-3.4.GA.jar、jta-1.1.jar、slf4j-api-1.5.2.jar、slf4j-log4j12.jar、</span><span style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">mysql-connector-java-3.1.13-bin.jar。</span><br />
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
4、接下来就是继续配置spring.xml把事务交给spring管理，很简单，在配置文件末尾加入两段代码：<br />
</font><br />
<div style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">
<div><span style="color: red; ">&lt;bean id="txManager"</span><span class="Apple-style-span" style="white-space: pre; ">&nbsp;</span><span style="color: red; ">class="org.springframework.orm.hibernate3.HibernateTransactionManager"&gt;</span></div>
<div><span style="white-space:pre">	</span><span style="color: red; ">&lt;property name="sessionFactory" ref="sessionFactory" /&gt;</span></div>
<div><span style="color: red; ">&lt;/bean&gt;</span></div>
<div><span style="color: red; ">&lt;!--使用基于注解方式配置事务 --&gt;</span></div>
<div><span style="color: red; ">&lt;tx:annotation-driven transaction-manager="txManager" /&gt;<br />
<br />
</span></div>
</div>
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; ">5、添加struts2支持，导入</font><span class="Apple-style-span" style="color: #000000; font-family: 微软雅黑; font-size: 10pt; ">Commons-fileupload-1.2.1.jar，commons-logging-1.0.4.jar，freewarker-2.3.15.jar，ognl-2.7.3.jar，struts2-core-2.1.8.1.jar，struts-spring-plugin-2.1.8.1.jar，xwork-core-2.1.6.jar，commons-io-1.3.2.jar。<br />
<br />
6、配置web.xml文件中spring和struts2关系，代码如下，（第11行，从struts2.1.3开始使用）<br />
<br />
<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">web-app&nbsp;</span><span style="color: #FF0000; ">version</span><span style="color: #0000FF; ">="2.5"</span><span style="color: #FF0000; ">&nbsp;xmlns</span><span style="color: #0000FF; ">="http://java.sun.com/xml/ns/javaee"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi</span><span style="color: #0000ff; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #FF0000; "><br />
</span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #FF0000; ">&nbsp;&nbsp;&nbsp;&nbsp;xsi:schemaLocation</span><span style="color: #0000FF; ">="http://java.sun.com/xml/ns/javaee&nbsp;<br />
</span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #0000FF; ">&nbsp;&nbsp;&nbsp;&nbsp;http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">context-param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">contextConfigLocation</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/WEB-INF/spring.xml</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">param-value</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">context-param</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">listener</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">listener-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">org.springframework.web.context.ContextLoaderListener</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">listener-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">12</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">listener</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">13</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">14</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">struts2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">15</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">16</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">17</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">18</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">struts2</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">19</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">/*</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">20</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">21</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">welcome-file-list</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">22</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">welcome-file</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; ">index.jsp</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">welcome-file</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">23</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">welcome-file-list</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">24</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">web-app</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">25</span>&nbsp;<span style="color: #000000; "></span></div>
</span><font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
7、建立struts.xml文件放到src下，代码如下，第六行是默认的视图主题,避免JSP页面里面自动加入格式代码，第七行是指定由spring来进行action对象的创建。<br />
<br />
</font>
<div style="color: #000000; font-family: 微软雅黑; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080; ">1</span>&nbsp;<span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">2</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;struts&nbsp;PUBLIC&nbsp;<br />
</span><span style="color: #008080; ">3</span>&nbsp;<span style="color: #FF00FF; ">"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN"&nbsp;<br />
</span><span style="color: #008080; ">4</span>&nbsp;<span style="color: #FF00FF; ">"http://struts.apache.org/dtds/struts-2.0.dtd"</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">5</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">6</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.ui.theme"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="simple"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">7</span>&nbsp;<span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.objectFactory"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="spring"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><span style="color: #000000; "><br />
</span><span style="color: #008080; ">8</span>&nbsp;<span style="color: #000000; "></span><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span></div>
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
另外struts.xml的其他配置见另一篇文章：【<a href="http://www.blogjava.net/DyEnigma/articles/351095.html" target="_blank">struts配置文件介绍</a>】</font><br />
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
8、文件架构的创建：cn.dy.action、cn.dy.bean、cn.dy.dao、cn.dao.impl、cn.dy.service、cn.dy.service.impl；另外还有测试文件的所在包cn.dy.test、密码进行加密所用的类所在的包cn.dy.own。</font><br />
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; "><br />
9、打开mysql数据库，新建一个数据库命名为：learn。</font><br />
<br />
<font class="Apple-style-span" face="微软雅黑" size="2" style="color: #000000; ">到目前为止，环境结构已经搭建好了。下面就是环境的测试和数据库操作。</font><font class="Apple-style-span" face="微软雅黑" size="2"><br /></font></div><img src ="http://www.blogjava.net/DyEnigma/aggbug/350992.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/DyEnigma/" target="_blank">DyEnigma</a> 2011-05-25 12:23 <a href="http://www.blogjava.net/DyEnigma/articles/350992.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>