﻿<?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-salt</title><link>http://www.blogjava.net/salt/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:00:09 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:00:09 GMT</pubDate><ttl>60</ttl><item><title>AJAX利用xml进行数据分页__之加强版(支持IE和firefox)</title><link>http://www.blogjava.net/salt/archive/2007/04/30/114840.html</link><dc:creator>盐巴</dc:creator><author>盐巴</author><pubDate>Mon, 30 Apr 2007 10:34:00 GMT</pubDate><guid>http://www.blogjava.net/salt/archive/2007/04/30/114840.html</guid><wfw:comment>http://www.blogjava.net/salt/comments/114840.html</wfw:comment><comments>http://www.blogjava.net/salt/archive/2007/04/30/114840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/salt/comments/commentRss/114840.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/salt/services/trackbacks/114840.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 此前的版本，只支持一个页面一次使用，后来我结合prototype等js的思想，稍做改进，使之对象封闭性进一步加强.同一页面可多次实例化显示数据.并且保存其实例句柄.http.js的内容也封装到XMLDATA 内.并且显示内容格式的可控性更好些，不过还是不很理想&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; pageSize : 12, 分页条数&nbsp;&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/salt/archive/2007/04/30/114840.html'>阅读全文</a><img src ="http://www.blogjava.net/salt/aggbug/114840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/salt/" target="_blank">盐巴</a> 2007-04-30 18:34 <a href="http://www.blogjava.net/salt/archive/2007/04/30/114840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JavaMail发HTML邮件时中文乱码</title><link>http://www.blogjava.net/salt/archive/2006/11/30/84615.html</link><dc:creator>盐巴</dc:creator><author>盐巴</author><pubDate>Thu, 30 Nov 2006 09:12:00 GMT</pubDate><guid>http://www.blogjava.net/salt/archive/2006/11/30/84615.html</guid><wfw:comment>http://www.blogjava.net/salt/comments/84615.html</wfw:comment><comments>http://www.blogjava.net/salt/archive/2006/11/30/84615.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/salt/comments/commentRss/84615.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/salt/services/trackbacks/84615.html</trackback:ping><description><![CDATA[今天搞了下用JavaMail来发邮件，只发纯Text时一切正常，但发HTML类型的邮件时却乱码了，异常郁闷，百般无奈，百度了一下，皇天不负苦心人，原来可以这样。<br />msg.setContent("邮件内容",<span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/html;charset=utf8</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />一切OK</span><img src ="http://www.blogjava.net/salt/aggbug/84615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/salt/" target="_blank">盐巴</a> 2006-11-30 17:12 <a href="http://www.blogjava.net/salt/archive/2006/11/30/84615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下Apache2+Subversion1.3.2+viewCvs1.0.0配置详解(原创)</title><link>http://www.blogjava.net/salt/archive/2006/07/12/57823.html</link><dc:creator>盐巴</dc:creator><author>盐巴</author><pubDate>Wed, 12 Jul 2006 08:25:00 GMT</pubDate><guid>http://www.blogjava.net/salt/archive/2006/07/12/57823.html</guid><wfw:comment>http://www.blogjava.net/salt/comments/57823.html</wfw:comment><comments>http://www.blogjava.net/salt/archive/2006/07/12/57823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/salt/comments/commentRss/57823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/salt/services/trackbacks/57823.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-pagination: widow-orphan" align="left">
				<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">一、先安装<span lang="EN-US"> Apache2</span>：<br /><span lang="EN-US"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">   下载apache源码包，解压<br />   #tar -xvzf httpd-2.***.tar.gz<br />   切换到解压目录<br />   # ./configure --enable-dav --enable-so --prefix=/usr/local/apache2/ /*安装目录*/<br /><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">   # make<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">   # make install<br />二、安装subversion:<br />   下载subversion源码包，解压，切换到解压目录<br />   <span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"># ./configure --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-apxs=/usr/local/apache2/bin/apxs --prefix /path/to/svn</span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">   # make<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">   # make install<br /></span>三、要安装viewCvs还需要python的支持，因此我们这里安装的python的2.4版本<br />   $ ./configure --prefix=/usr/python<br />   $ make<br />   $ make install<br />四、还需要swig的支持<br />   第１步:  安装SWIG (目前的版本是 1.3.24 - 1.3.28).<br />      下载<a href="http://www.swig.org/">http://www.swig.org/</a><br />      $ ./configure --with-python=/path/to/correct/python/binary　/*python的安装目录*/<br />      $ make &amp;&amp; make install<br />   第２步：绑定到subversion<br />      到subversion的源码目录<br />      $./configure PYTHON=/usr/bin/python /*python的执行程序*/<br />      $ <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">make swig-py<br />            $  </span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">make install-swig-py</span><br />      然后会生成　libsvn_swig_py.so 　文件，使python和subversion绑定起来<br />   第３步：<br />      <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装完成之后，需要验证一下，运行</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">python</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">进入提示符，输入</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">import svn.repos</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，如果没有出错，说明</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">OK</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">了；<br />        如果出错，提示找不到的话，则需要添加</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Subversion</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Python Binding</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装路径在</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">PYTHONPATH</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，<br />         一个做法是运行<br />         <font size="3">$ echo /usr/local/lib/svn-python \<br />           &gt; /usr/lib/python2.x/site-packages/subversion.pth<br />五、安装viewCvs<br />   下载<a href="http://viewvc.org/">http://viewvc.org</a>源码包并解压<br />   切换到解压目录<br />   $./viewvc-install，第一个提示后指定ViewVC的安装目录，第二个提示直接回车就行<br />   </font></span><font face="宋体">打开viewvc.conf，修改下面几行： <br />   将cvs_roots = cvs: /home/cvsroot注释掉； <br />   #svn_roots = svn: /home/svnrepos 改成仓库所在的路径；如果多个仓库加逗号隔开；<br />六、配置apache,在httpd.conf中添加下面两行<br />   ScriptAlias /viewvc /usr/local/viewvc-1.0/www/cgi/viewvc.cgi<br />   ScriptAlias /query /usr/local/viewvc-1.0/www/cgi/query.cgi<br />   在最后添加如：<br />   &lt;Location /svn&gt;<br />     DAV svn<br />     SVNParentPath /home/subversion　仓库目录<br />     AuthzSVNAccessFile /home/subversion/svnuser　存取权限文件<br />     AuthType Basic<br />     AuthName "Subversion repository"<br />     AuthUserFile /home/subversion/svnpasswd　用户验证文件<br />     Require valid-user<br />   &lt;/Location&gt;<br />   创建用户难文件：<br />   <span lang="EN-US" style="FONT-SIZE: 8pt; COLOR: #4b4b4b; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-fareast-font-family: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><font face="宋体" color="#000000" size="3">#htpasswd -cm /home/subversion/svnpass username    //来创建的</font></span> ，后面会让你输入用户密码<br />   添加用户则  htpasswd -m /home/subversion/svnpass user<br />   对于存取权限设置文件大致内容如下：<br />   [/]<br />   * = r</font></p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<font face="宋体">   [groups]<br />   diggmore = nio, binzy, easy, vicki, freeman, rainx</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left">
				<font face="宋体">   [diggmore:/]<br />   @diggmore = rw<br /><br />综上设置，启动apache就可以了，如果在提交文件到仓库时出现拒绝错误，请确定httpd.conf里设置的linux用户是否对仓库目录有权限</font>
		</p>
<img src ="http://www.blogjava.net/salt/aggbug/57823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/salt/" target="_blank">盐巴</a> 2006-07-12 16:25 <a href="http://www.blogjava.net/salt/archive/2006/07/12/57823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate关系映射之多对多</title><link>http://www.blogjava.net/salt/archive/2006/06/08/51411.html</link><dc:creator>盐巴</dc:creator><author>盐巴</author><pubDate>Thu, 08 Jun 2006 09:24:00 GMT</pubDate><guid>http://www.blogjava.net/salt/archive/2006/06/08/51411.html</guid><wfw:comment>http://www.blogjava.net/salt/comments/51411.html</wfw:comment><comments>http://www.blogjava.net/salt/archive/2006/06/08/51411.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/salt/comments/commentRss/51411.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/salt/services/trackbacks/51411.html</trackback:ping><description><![CDATA[近来使用hbernate越多，越觉得他的关系映射不简单。<br />如果用错映射策略，很可能导致表设计的修改。<br />下面我们分析一下他的多对多关系，<br />其唯一的用途就是维护关系数据库中两张表或者多张表之间的关系<br />如最典型的权限设计时，基于组－角色－用户的设计，<br />三者之间分别为多对多的关系，换言之，组可以有多个角色，角色也可以属于多个组。<br /><br />group:<br />properties:id,name,description,roleSet,userSet<br /><br />role<br />properties:id,name,description,groupset<br /><br />多对多关系需要一个中间表来维护（group_role)<br />group.hbm.xml<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">hibernate-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">class </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="model.GroupInfo"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="GROUP_INFO"</span><span style="COLOR: #ff0000"> lazy</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">id </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="id"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="long"</span><span style="COLOR: #ff0000"> column</span><span style="COLOR: #0000ff">="ID"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">generator </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="native"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">id</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="name"</span><span style="COLOR: #ff0000"> column</span><span style="COLOR: #0000ff">="name"</span><span style="COLOR: #ff0000"> length</span><span style="COLOR: #0000ff">="20"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="string"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="description"</span><span style="COLOR: #ff0000"> column</span><span style="COLOR: #0000ff">="description"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="string"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">set </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="userSet"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="group_user"</span><span style="COLOR: #ff0000"> cascade</span><span style="COLOR: #0000ff">="save-update"</span><span style="COLOR: #ff0000"> lazy</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">key </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="group_id"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">many-to-many </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="user_id"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="com.essp.fable.model.UserInfo"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">set</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">set </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="roleSet"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="group_role"</span><span style="COLOR: #ff0000"> cascade</span><span style="COLOR: #0000ff">="save-update"</span><span style="COLOR: #ff0000"> lazy</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">key </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="group_id"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">many-to-many </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="role_id"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="com.essp.fable.model.RoleInfo"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">set</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">hibernate-mapping</span><span style="COLOR: #0000ff">&gt;</span></div>role.hbm.xml<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">hibernate-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">class </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="model.RoleInfo"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="ROLE_INFO"</span><span style="COLOR: #ff0000"> lazy</span><span style="COLOR: #0000ff">="false"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">id </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="id"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="long"</span><span style="COLOR: #ff0000"> column</span><span style="COLOR: #0000ff">="ID"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">generator </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="native"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">id</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="name"</span><span style="COLOR: #ff0000"> column</span><span style="COLOR: #0000ff">="name"</span><span style="COLOR: #ff0000"> length</span><span style="COLOR: #0000ff">="20"</span><span style="COLOR: #ff0000"> type</span><span style="COLOR: #0000ff">="string"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">set </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="groupSet"</span><span style="COLOR: #ff0000"> table</span><span style="COLOR: #0000ff">="group_role"</span><span style="COLOR: #ff0000"> cascade</span><span style="COLOR: #0000ff">="save-update"</span><span style="COLOR: #ff0000"> inverse</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #ff0000"> lazy</span><span style="COLOR: #0000ff">="true"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">key </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="role_id"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">many-to-many </span><span style="COLOR: #ff0000">column</span><span style="COLOR: #0000ff">="group_id"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="com.essp.fable.model.GroupInfo"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">set</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">hibernate-mapping</span><span style="COLOR: #0000ff">&gt;</span></div><br />我们大都以set集合来实现他们的映射关系，配置xml的时候，最重的几个属性就是<font color="#ff0000">cascade</font><font color="#000000">和</font><font color="#ff0000">inverse</font><font color="#000000">，<br />cascade翻译为 小瀑布, 喷流，在这里表示对象间的级联关系，可以分别取值 为<font face="Courier New">all,none,save-update,delete,all-delete-orphan,delete-orphan<br /><br />cascade属性并不是多对多关系一定要用的，有了它只是让我们在插入或删除对像时更方便一些，只要在cascade的源头上插入或是删除，所有cascade的关系就会被自己动的插入或是删除。<br />为了能正确的cascade，unsaved-value是个很重要的属性。Hibernate通过这个属性来判断一个对象应该save还是update，如果这个对象的id是unsaved-value的话，那说明这个对象不是persistence object要save（insert)；如果id是非unsaved-value的话，那说明这个对象是persistence object（数据库中已存在），只要update就行了。saveOrUpdate方法用的也是这个机制。<br />如unsaved-value="0"，那当该值为0时，hibernate即判断其为未存储的对像，当执行saveOrUpdate时，实际执行的是save了。<br /><em>In Hibernate3, it is no longer necessary to specify an <tt class="literal">unsaved-value</tt> explicitly.</em> 不过在hibernate3中我们不需要显示的去指定他，hiberante会自动差别出该对像是否是新产生的对象。<br /><br /><strong>inverse</strong>翻译为 倒转的, 反转的。他属于关系和对象的级联关系，默认时为false,，就是说关系的两端都来维护关系.如果一边设为true，那表示他们之间的关系由对方来维护。<br />比如上面的例子，我们设role的inverse为true,即他们的关系有group来维护。<br />GroupInfo group = new GroupInfo();<br />group.setName("admin");<br />RoleInfo role = new RoleInfo();<br />role.setName("acl");<br />group.addRole(role);<br />save(group);<br />执行完这些操作后，hibernate会自动保存group,role，若反之，则只会保存role.</font></font><img src ="http://www.blogjava.net/salt/aggbug/51411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/salt/" target="_blank">盐巴</a> 2006-06-08 17:24 <a href="http://www.blogjava.net/salt/archive/2006/06/08/51411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>视图部分显示分页链接的情况分析</title><link>http://www.blogjava.net/salt/archive/2006/06/06/50776.html</link><dc:creator>盐巴</dc:creator><author>盐巴</author><pubDate>Tue, 06 Jun 2006 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/salt/archive/2006/06/06/50776.html</guid><wfw:comment>http://www.blogjava.net/salt/comments/50776.html</wfw:comment><comments>http://www.blogjava.net/salt/archive/2006/06/06/50776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/salt/comments/commentRss/50776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/salt/services/trackbacks/50776.html</trackback:ping><description><![CDATA[为了显示如 
<table class="tableborder" cellspacing="1" cellpadding="2"><tbody><tr class="smalltxt" bgcolor="#f8f8f8"><td><a href="http://bbs.163down.com/forum-3-1.html"><font color="#003366">&lt;</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-1.html"><font color="#003366">1</font></a> </td><td bgcolor="#ffffff"> <u><b>2</b></u> </td><td> <a href="http://bbs.163down.com/forum-3-3.html"><font color="#003366">3</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-4.html"><font color="#003366">4</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-5.html"><font color="#003366">5</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-6.html"><font color="#003366">6</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-7.html"><font color="#003366">7</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-8.html"><font color="#003366">8</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-9.html"><font color="#003366">9</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-10.html"><font color="#003366">10</font></a> </td><td> <a href="http://bbs.163down.com/forum-3-3.html"><font color="#003366">&gt;</font></a></td></tr></tbody></table>这样形式的，我计划这样设计，每次显示十个页数内的链接：<br />在控制层分页逻辑中，我们先计算出当前显示页pageNo,总页数totalPages<br />首先，我们需要考虑的情况：<br />1、总页数totalPages；<br />2、确定当前有效的显示页数；<br />3、若当前页不是首页，使当前页数前面在满足显示十个页数链接的情况下第一页数最小为pageNo-2（总页数小于十页的情况除外）；<br />4、总页数小于十页时的情况处理就比较简单，直接全部页链接显示；<br /><br />鉴于以上情况，我们分两大情况处理：<br />A、总页数小于10页；<br />      firstPage = 1;<br />      lastPage = totalPages;<br />      然后转到视图直接输出全部页数链接<br />B、总页数大小10页的情况；<br />      1)、当pageNo+7&lt;=totalPages时<br />             firstPage = pageNo-2;<br />             lastPage = pageNo+7;<br />      2)、当pageNo+7&gt;totalPages<br />              这时我们就要考虑首先要满足的是当前显示的页链接是 10个，<br />               因此lastPage = totalPages,firstPage = totalPages-9<br /><br />然后我们需要再增加一个情况，在没有首页或尾页链接的情况下显示首页（<a href="http://bbs.163down.com/forum-3-1.html"><font color="#003366"><b>|</b>&lt; </font></a>）或尾页（<a href="http://bbs.163down.com/forum-3-42.html"><font color="#003366">&gt;<b>|</b></font></a>），只需要判断firstPage ==1 和 lastPage ==totalPages<br /><br />over,其实也满简单的，只要思路清晰，就不致在这样简单的逻辑中出错了；<img src ="http://www.blogjava.net/salt/aggbug/50776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/salt/" target="_blank">盐巴</a> 2006-06-06 15:26 <a href="http://www.blogjava.net/salt/archive/2006/06/06/50776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单体验eybuild</title><link>http://www.blogjava.net/salt/archive/2006/04/28/43798.html</link><dc:creator>盐巴</dc:creator><author>盐巴</author><pubDate>Fri, 28 Apr 2006 04:40:00 GMT</pubDate><guid>http://www.blogjava.net/salt/archive/2006/04/28/43798.html</guid><wfw:comment>http://www.blogjava.net/salt/comments/43798.html</wfw:comment><comments>http://www.blogjava.net/salt/archive/2006/04/28/43798.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/salt/comments/commentRss/43798.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/salt/services/trackbacks/43798.html</trackback:ping><description><![CDATA[
		<p>　　昨天突然发现一个有趣的东东，eybuild，看名字就知道是个简单好用的东东。粗略看了一下，的确好用。他实际上就是一个Ｃ语言版的ＣＧＩ实现。并且是编译后运行的，所以运行时不依赖外部编译器的配合，其源代码也可以完全保护起来（因为编译后只是一个二进制文件，连图片都编译进去了），很是有个性的一个东东。</p>
		<p>　　源文件以.csp结尾的文件，类似asp、jsp、php一样，通过&lt;%%&gt;把Ｃ语言内嵌到普通文本里面。他的项目工程用ＶＣ进行编译后产生ＣＧＩ文件，这个就是能在web容器里运行的文件了。因为是编译后的文件，所以执行效率非常高。但他相对较为繁琐和不太直观的web程序设计方式，决定他只适合应于嵌入式和小型网站的开发（此说明也在他网站上有）。</p>
		<p>　　另外，我觉得他的用户体验也相当优秀，你不需要安装任何其他东东，只需要下载他的一个<a href="http://www.eybuild.com/develop/download/webs.rar"><font color="#002c99">"综合示例"</font></a>, 解压后运行webs.exe就可以通过<a href="http://127.0.0.1/cgi-bin/demo.cgi" target="__blank">http://127.0.0.1/cgi-bin/demo.cgi</a>来体验他的demo例子了。给人的第一感觉非常好。</p>
		<p>
				<img alt="eybuild csp cgi" src="http://www.eybuild.com/develop/images/goAhead.gif" />
		</p>
		<p>
				<img alt="eybuild csp cgi" src="http://www.eybuild.com/develop/images/readme.gif" />
		</p>
		<p>里面还有一个留言本的演示</p>
		<p>
				<img alt="eybuild csp cgi" src="http://www.eybuild.com/develop/images/review.GIF" />
		</p>
		<p>　　有兴趣的可以到他网站看看，从他的文档上看，这个项目是今年才开始发布的。</p>
		<p>　　<a href="http://www.eybuild.com/develop/">http://www.eybuild.com/develop/</a></p>
<img src ="http://www.blogjava.net/salt/aggbug/43798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/salt/" target="_blank">盐巴</a> 2006-04-28 12:40 <a href="http://www.blogjava.net/salt/archive/2006/04/28/43798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>