﻿<?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-开源俱乐部-随笔分类-开源学习</title><link>http://www.blogjava.net/gavinju/category/14324.html</link><description>开源框架</description><language>zh-cn</language><lastBuildDate>Wed, 11 Apr 2007 10:21:58 GMT</lastBuildDate><pubDate>Wed, 11 Apr 2007 10:21:58 GMT</pubDate><ttl>60</ttl><item><title>java复制对象属性org.apache.commons.beanutils.BeanUtils...用法感悟</title><link>http://www.blogjava.net/gavinju/archive/2007/04/11/109836.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Wed, 11 Apr 2007 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2007/04/11/109836.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/109836.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2007/04/11/109836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/109836.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/109836.html</trackback:ping><description><![CDATA[<p>在Strut中,实现table中复制一行的功能<br>line[j]是要复制的一行,Action中可以获取到要复制的行的ID.<br>因为line[j]中有很多属性,要是一个一个的属性去get,然后set的话,代码量会<br>很大,而且会出现很多冗余代码。<br>这是我要复制出来的一行<br>if (j == rowId &amp;&amp; !line[j].getNewRecord()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowList.add(line[j]);<br>&nbsp;&nbsp;&nbsp;&nbsp; //将这一行全部复制<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>现在要使得其中的某几个属性复制出来为空<br>则需要一个一个的set,get.<br>if (j == rowId &amp;&amp; !line[j].getNewRecord()) {<br>&nbsp;&nbsp;&nbsp; CreateDeliveryLineRow&nbsp; cdlr = new CreateDeliveryLineRow&nbsp;&nbsp;();<br>&nbsp;&nbsp;&nbsp; if(line[j].getMfgLot() != null){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cdlr.setMfgLot = null;<br>&nbsp;&nbsp;&nbsp;}<br>。。。。。。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowList.add(cdlr);<br>&nbsp;&nbsp;&nbsp;&nbsp; //将这一行全部复制<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>以下是比较好的解决方案:<br>利用apache的common类中的BeanUtils来实现对象属性的复制<br>if (j == rowId &amp;&amp; !line[j].getNewRecord()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;CreateDeliveryLineRow row = new CreateDeliveryLineRow();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;BeanUtils.copyProperties(row,line[j]);　　　//复制出对象line[j],将其属性赋予row<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;row.setQuantity(null);&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //在row中轻松的实现对某几个属性的控制<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setMfgLot(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setMiniQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setBoxQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowList.add(row);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //rowList.add(cdr);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>===================================================<br>CreateDeliveryForm getForm = (CreateDeliveryForm) form;<br>。。。。。。<br>CreateDeliveryLineRow[] line = getForm.getLine();<br>if (line != null &amp;&amp; line instanceof CreateDeliveryLineRow[]) {<br>&nbsp;&nbsp;&nbsp;int size = line.length;</p>
<p>&nbsp;&nbsp;&nbsp;for (int j = 0; j &lt; size; j++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;if (!line[j].getNewRecord() &amp;&amp; !line[j+1].getNewRecord()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (line[j].getBoxQuantity() == 0L) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[j].setBoxQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (line[j].getMiniQuantity() == 0L) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[j].setMiniQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (line[j].getQuantity() == 0D) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line[j].setQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rowList.add(line[j]);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;if (j == rowId &amp;&amp; !line[j].getNewRecord()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;CreateDeliveryLineRow row = new CreateDeliveryLineRow();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;BeanUtils.copyProperties(row,line[j]);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setMfgLot(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setMiniQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;row.setBoxQuantity(null);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rowList.add(row);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //rowList.add(cdr);<br>&nbsp;&nbsp;&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}</p>
。。。。。。<br>request.setAttribute("results", rowList);
<img src ="http://www.blogjava.net/gavinju/aggbug/109836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2007-04-11 10:40 <a href="http://www.blogjava.net/gavinju/archive/2007/04/11/109836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dwr---example</title><link>http://www.blogjava.net/gavinju/archive/2007/01/21/95188.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Sun, 21 Jan 2007 15:35:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2007/01/21/95188.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/95188.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2007/01/21/95188.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/95188.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/95188.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">1. 在web.xml文件中注册dwr<br />   &lt;servlet&gt;<br />    &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br />    &lt;display-name&gt;DWR Servlet&lt;/display-name&gt;<br />    &lt;description&gt;Direct Web Remoter Servlet&lt;/description&gt;<br />    &lt;servlet-class&gt;uk.ltd.getahead.dwr.DWRServlet&lt;/servlet-class&gt;<br />    &lt;init-param&gt;<br />        &lt;param-name&gt;debug&lt;/param-name&gt;<br />        &lt;param-value&gt;true&lt;/param-value&gt;<br />    &lt;/init-param&gt;<br /> &lt;/servlet&gt;<br /> &lt;servlet-mapping&gt;<br />    &lt;servlet-name&gt;dwr-invoker&lt;/servlet-name&gt;<br />    &lt;url-pattern&gt;/dwr/*&lt;/url-pattern&gt;<br /> &lt;/servlet-mapping&gt;</font>
		</p>
		<p>
				<font size="2"> &lt;welcome-file-list&gt;<br />    &lt;welcome-file&gt;search.jsp&lt;/welcome-file&gt;<br /> &lt;/welcome-file-list&gt;<br /><br />2.dwr.xml<br /> &lt;dwr&gt;<br />    &lt;allow&gt;&lt;convert convert="bean"  match="dwr.sample.Apartment"/&gt;<br />    &lt;create&gt;<br />           &lt;creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO"&gt;<br />                  &lt;include method="findApartments"/&gt;<br />                  &lt;include method="countApartments"/&gt;<br />           &lt;/creator&gt;<br />    &lt;/create&gt;<br />    &lt;/allow&gt;<br />&lt;/dwr&gt;<br />3.DB<br />CREATE TABLE APARTMENTS (id INTEGER, bedrooms INTEGER, bathrooms INTEGER, price INTEGER, address VARCHAR, city VARCHAR, province VARCHAR);<br />INSERT INTO APARTMENTS VALUES (16001, 1, 1, 850, '123 King St. East', 'Toronto', 'ON');<br />INSERT INTO APARTMENTS VALUES (16002, 2, 1, 1000, '1023 Yonge Ave.', 'Toronto', 'ON');<br />INSERT INTO APARTMENTS VALUES (16003, 2, 2, 1050, '27 Winchester St.', 'Toronto', 'ON');<br />4.Apertment.java<br />普通的javabean<br />5.DBUtils.java<br />   数据库链接类<br />   public class DBUtils {</font>
		</p>
		<p>
				<font size="2"> /*<br />  * Creates the sample data (table and records). <br />  */<br /> public static void setupDatabase(BufferedReader reader) {<br />  Connection c = null;<br />  Statement stmt = null;<br />  try {<br />   c = openConnection();<br />   stmt = c.createStatement();<br />   // reads the file with the SQL statements<br />   String line;<br />   while ((line = reader.readLine()) != null) {<br />    stmt.execute(line);<br />   }<br />   stmt.close();<br />   c.close();<br />  } catch (IOException e) {<br />   e.printStackTrace();<br />  } catch (SQLException e) {<br />   e.printStackTrace();<br />  } finally {<br />   try {<br />    stmt.close();<br />    c.close();<br />   } catch (SQLException e) {<br />    e.printStackTrace();<br />   }<br />  }<br /> }<br /> <br /> /*<br />  * Opens a database connection. <br />  */<br /> public static Connection openConnection() throws SQLException {<br />  Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:dwr-sample", "sa", "");<br />  return c;<br /> }<br /> <br />}<br /><br />6.ContextListener.java<br />   实现了ServletContextListerer接口的类<br />   public class ContextListener implements javax.servlet.ServletContextListener {</font>
		</p>
		<p>
				<font size="2"> /**<br />  * This method is invoked when the Web Application has been removed and is<br />  * no longer able to accept requests.<br />  * @param event<br />  */<br /> public void contextDestroyed(ServletContextEvent event) {<br /> }</font>
		</p>
		<p>
				<font size="2"> /**<br />  * This method is invoked when the Web Application is ready to service requests. <br />  * @param event<br />  */<br /> public void contextInitialized(ServletContextEvent event) {<br />  try {<br />   // load the driver<br />   Class.forName("org.hsqldb.jdbcDriver");<br />   // create the table and add sample data<br />   InputStreamReader in = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("db.sql"));<br />   BufferedReader reader = new BufferedReader(in);<br />   DBUtils.setupDatabase(reader);<br />  } catch (ClassNotFoundException e) {<br />   e.printStackTrace();<br />  }<br />  <br /> }</font>
		</p>
		<p>
				<font size="2">}<br />7.ApartmentDAO.java<br />   业务逻辑层<br />   public class ApartmentDAO {<br /> <br /> /**<br />  * Returns the available apartments based on the search criteria.<br />  * @param bedrooms minimum number of bedrooms<br />  * @param bathrooms minimum number of bathrooms<br />  * @param price maximum price to be paid<br />  * @return<br />  */<br /> public Collection findApartments(int bedrooms, int bathrooms, int price) {<br />  Collection list = new Vector();<br />  String sql = "select * from APARTMENTS" + <br />    createSearchWhereClause(bedrooms, bathrooms, price) + <br />    "order by bedrooms, bathrooms, price";</font>
		</p>
		<p>
				<font size="2">  // define db variables<br />  Connection c = null;<br />  Statement stmt = null;<br />  try {<br />   c = DBUtils.openConnection();<br />   stmt = c.createStatement();<br />   // just run the sql statement<br />   ResultSet rs = stmt.executeQuery(sql);<br />   while(rs.next()) {<br />    Apartment apartment = this.getApartment(rs);<br />    list.add(apartment);<br />   }<br />  } catch (SQLException e) {<br />   e.printStackTrace();<br />  } finally {<br />   try {<br />    stmt.close();<br />    c.close();<br />   } catch (SQLException e) {<br />    e.printStackTrace();<br />   }<br />  }</font>
		</p>
		<p>
				<font size="2">  return list;<br /> }<br /> <br /> /**<br />  * Returns the number of available apartments based on the search criteria.<br />  * @param bedrooms minimum number of bedrooms<br />  * @param bathrooms minimum number of bathrooms<br />  * @param price maximum price to be paid<br />  * @return<br />  */<br /> public int countApartments(int bedrooms, int bathrooms, int price) {<br />  String sql = "select count(*) as total from APARTMENTS" + createSearchWhereClause(bedrooms, bathrooms, price);<br />  int numberApartments = -1;<br />  // define db variables<br />  Connection c = null;<br />  Statement stmt = null;<br />  try {<br />   c = DBUtils.openConnection();<br />   stmt = c.createStatement();<br />   // just run the sql statement<br />   ResultSet rs = stmt.executeQuery(sql);<br />   if (rs.next()) {<br />    numberApartments = rs.getInt("total");<br />   }<br />  } catch (SQLException e) {<br />   e.printStackTrace();<br />  } finally {<br />   try {<br />    stmt.close();<br />    c.close();<br />   } catch (SQLException e) {<br />    e.printStackTrace();<br />   }<br />  }<br />  <br />  return numberApartments;<br /> }<br /> <br /> /**<br />  * Creates a Unit object from the database.<br />  * @param rs<br />  * @return<br />  * @throws SQLException<br />  */<br /> private Apartment getApartment(ResultSet rs) throws SQLException {<br />  Apartment ap = new Apartment();<br />  ap.setId(rs.getInt("id"));<br />  ap.setAddress(rs.getString("address"));<br />  ap.setBedrooms(rs.getInt("bedrooms"));<br />  ap.setBathrooms(rs.getInt("bathrooms"));<br />  ap.setPrice(rs.getInt("price"));<br />  ap.setCity(rs.getString("city"));<br />  ap.setProvince(rs.getString("province"));<br />  return ap;<br /> }<br /> <br /> <br /> /**<br />  * Creates the where clause for the search SQL statement.<br />  * @param bedrooms<br />  * @param bathrooms<br />  * @param price<br />  * @return<br />  */<br /> private String createSearchWhereClause(int bedrooms, int bathrooms, int price) {<br />  String where = " where bedrooms &gt;= " + bedrooms + <br />    " and bathrooms &gt;= " + bathrooms +<br />    " and price &lt; " + price;<br />  return where;<br /> }</font>
		</p>
		<p>
				<font size="2">}<br />8. search.jsp<br />  &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />  &lt;title&gt;DWR Example&lt;/title&gt;</font>
		</p>
		<p>
				<font size="2">   &lt;style type="text/css" media="screen"&gt;<br />       @import url( style.css );<br />   &lt;/style&gt;  <br />  <br />  &lt;script src='dwr/interface/ApartmentDAO.js'&gt;&lt;/script&gt;<br />  &lt;script src='dwr/engine.js'&gt;&lt;/script&gt;<br />  &lt;script src='dwr/util.js'&gt;&lt;/script&gt;<br />  &lt;script&gt;<br />  <br />  function updateTotal() {<br />    $("resultTable").style.display = 'none';<br />    var bedrooms = document.getElementById("bedrooms").value;<br />    var bathrooms = document.getElementById("bathrooms").value;<br />    var price = document.getElementById("price").value;<br />    ApartmentDAO.countApartments(loadTotal, bedrooms, bathrooms, price);<br />  }</font>
		</p>
		<p>
				<font size="2">  function updateResults() {<br />    DWRUtil.removeAllRows("apartmentsbody");<br />    var bedrooms = document.getElementById("bedrooms").value;<br />    var bathrooms = document.getElementById("bathrooms").value;<br />    var price = document.getElementById("price").value;<br />    ApartmentDAO.findApartments(fillTable, bedrooms, bathrooms, price);<br />    $("resultTable").style.display = '';<br />  }<br />  <br />  var getId = function(unit) { return unit.id };<br />  var getAddress = function(unit) { return unit.address };<br />  var getBedrooms = function(unit) { return unit.bedrooms };<br />  var getBathrooms = function(unit) { return unit.bathrooms };<br />  var getPrice = function(unit) { return unit.price };<br />    <br />  function loadTotal(data) {<br />    document.getElementById("totalRecords").innerHTML = data;<br />  }<br />  <br />  function fillTable(apartment) {<br />    DWRUtil.addRows("apartmentsbody", apartment, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);<br />  }<br />  <br />&lt;/script&gt;</font>
		</p>
		<p>
				<font size="2">&lt;/head&gt;</font>
		</p>
		<p>
				<font size="2">&lt;body onload="updateTotal();"&gt;</font>
		</p>
		<p>
				<font size="2">&lt;h2&gt;Find an apartment to rent&lt;/h2&gt;</font>
		</p>
		<p>
				<font size="2">&lt;table border="0"&gt;<br />&lt;form name="rentalForm"&gt;<br />  &lt;tr width="400"&gt;<br />   &lt;td width="100"&gt;City&lt;/td&gt;<br />   &lt;td width="300"&gt;Toronto&lt;/td&gt;<br />  &lt;/tr&gt;<br />  &lt;tr&gt;<br />   &lt;td&gt;Beds&lt;/td&gt;<br />   &lt;td&gt;<br />    &lt;select id="bedrooms" onchange="updateTotal()"&gt;<br />     &lt;option value="1"&gt;1 or more&lt;/option&gt;<br />     &lt;option value="2"&gt;2 or more&lt;/option&gt;<br />     &lt;option value="3"&gt;3 or more&lt;/option&gt;<br />     &lt;option value="4"&gt;4 or more&lt;/option&gt;<br />    &lt;/select&gt;<br />   &lt;/td&gt;<br />  &lt;/tr&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;tr&gt;<br />   &lt;td&gt;Baths&lt;/td&gt;<br />   &lt;td&gt;<br />    &lt;select id="bathrooms" onchange="updateTotal()"&gt;<br />     &lt;option value="1"&gt;1 or more&lt;/option&gt;<br />     &lt;option value="2"&gt;2 or more&lt;/option&gt;<br />     &lt;option value="3"&gt;3 or more&lt;/option&gt;<br />     &lt;option value="4"&gt;4 or more&lt;/option&gt;<br />    &lt;/select&gt;<br />   &lt;/td&gt;<br />  &lt;/tr&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;tr&gt;<br />   &lt;td&gt;Price&lt;/td&gt;<br />   &lt;td&gt;<br />    &lt;select id="price" onchange="updateTotal()"&gt;<br />     &lt;option value="800"&gt;under $800&lt;/option&gt;<br />     &lt;option value="1000"&gt;under $1,000&lt;/option&gt;<br />     &lt;option value="1250"&gt;under $1,250&lt;/option&gt;<br />     &lt;option value="1500" selected="selected"&gt;under $1,500&lt;/option&gt;<br />     &lt;option value="1800"&gt;under $1,800&lt;/option&gt;<br />     &lt;option value="2000"&gt;under $2,000&lt;/option&gt;<br />    &lt;/select&gt;<br />   &lt;/td&gt;<br />  &lt;/tr&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;tr&gt;<br />   &lt;td colspan="2"&gt;<br />    &lt;blockquote&gt;<br />     Available apartments: &lt;span id="totalRecords" style="font-weight:bold;"&gt;&lt;/span&gt;<br />    &lt;/blockquote&gt;<br />   &lt;/td&gt;<br />  &lt;/tr&gt;</font>
		</p>
		<p>
				<font size="2">&lt;/form&gt;<br />&lt;/table&gt;</font>
		</p>
		<p>
				<font size="2">&lt;p&gt;&lt;input type="button" value="Show results!" onClick="updateResults();"&gt;&lt;/p&gt;</font>
		</p>
		<p>
				<font size="2">&lt;div id="resultTable"&gt;</font>
		</p>
		<p>
				<font size="2">&lt;h2&gt;Results&lt;/h2&gt;</font>
		</p>
		<p>
				<font size="2"> &lt;table border="1"&gt;<br />  &lt;thead&gt;<br />    &lt;tr&gt;<br />      &lt;th width="40"&gt;Id&lt;/th&gt;<br />      &lt;th width="180"&gt;Address&lt;/th&gt;<br />      &lt;th width="60"&gt;Beds&lt;/th&gt;<br />      &lt;th width="60"&gt;Baths&lt;/th&gt;<br />      &lt;th width="60"&gt;Price&lt;/th&gt;<br />    &lt;/tr&gt;<br />  &lt;/thead&gt;<br />  &lt;tbody id="apartmentsbody"&gt;</font>
		</p>
		<p>
				<font size="2">  &lt;/tbody&gt;<br /> &lt;/table&gt;<br />&lt;/div&gt;</font>
		</p>
		<p>
				<font size="2">&lt;/body&gt;<br />&lt;/html&gt;<br /><br />由于项目需要,需在我们现有的struts、hibernate工程上集成ajax功能.项目组决定使用Dwr.<br />刚开始研究Dwr.觉得真的很不错, 只需很少量的代码,就能在现有的工程上集成ajax技术. 期待Dwr有更辉煌的明天！<br />喜欢Dwr技术的IT界朋友可以与本人联系！望提出好的意见与建议.</font>
		</p>
<img src ="http://www.blogjava.net/gavinju/aggbug/95188.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2007-01-21 23:35 <a href="http://www.blogjava.net/gavinju/archive/2007/01/21/95188.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse增加内存</title><link>http://www.blogjava.net/gavinju/archive/2006/12/26/90074.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Tue, 26 Dec 2006 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2006/12/26/90074.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/90074.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2006/12/26/90074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/90074.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/90074.html</trackback:ping><description><![CDATA[
		<p>By default, Eclipse will allocate up to 256 megabytes of Java heap memory. This should be ample for all typical development tasks. However, depending on the JRE that you are running, the number of additional plug-ins you are using, and the number of files you will be working with, you could conceivably have to increase this amount. Eclipse allows you to pass arguments directly to the Java VM using the <code>-vmargs</code> command line argument, which must follow all other Eclipse specific arguments. Thus, to increase the available heap memory, you would typically use:</p>
		<blockquote>
				<p>
						<code>eclipse -vmargs -Xmx&lt;memory size&gt;</code>
				</p>
		</blockquote>
		<p>with the <code>&lt;memory size&gt;</code> value set to greater than "256M" (256 megabytes -- the default). </p>
		<p>When using a Sun VM, you may also need to increase the size of the permanent generation memory. The default maximum is 64 megabytes, but more may be needed depending on your plug-in configuration and use. The maximum permanent generation size is increased using the -XX:MaxPermSize=&lt;memory size&gt; argument: 
</p>
		<blockquote>
				<p>
						<code>eclipse -vmargs -XX:MaxPermSize=&lt;memory size&gt;</code>
				</p>
		</blockquote>This argument may not be available for all VM versions and platforms; consult your VM documentation for more details. 
<p></p><p>Note that setting memory sizes to be larger than the amount of available physical memory on your machine will cause Java to "thrash" as it copies objects back and forth to virtual memory, which will severely degrade your performance. <br /><br />在eclipse安装根目录下，用此命令:    eclipse.exe -vmargs -Xms256M -Xmx512M<br /><br /></p><img src ="http://www.blogjava.net/gavinju/aggbug/90074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2006-12-26 12:42 <a href="http://www.blogjava.net/gavinju/archive/2006/12/26/90074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts+Hibernate实现分页</title><link>http://www.blogjava.net/gavinju/archive/2006/12/08/86218.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Thu, 07 Dec 2006 16:53:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2006/12/08/86218.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/86218.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2006/12/08/86218.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/86218.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/86218.html</trackback:ping><description><![CDATA[
		<div>1.  视图显示(select.jsp)：首页 /  上一页 / 下一页 /  尾页 ${requestScope.page} / ${requestScope.pagecount}  / 转到 <br />2.  页面逻辑:<br />     &lt;%@ page language="java"%&gt;<br />&lt;%@ taglib uri="<a href="http://jakarta.apache.org/struts/tags-bean">http://jakarta.apache.org/struts/tags-bean</a>"<br /> prefix="bean"%&gt;<br />&lt;%@ taglib uri="<a href="http://jakarta.apache.org/struts/tags-html">http://jakarta.apache.org/struts/tags-html</a>"<br /> prefix="html"%&gt;<br />&lt;<a href="mailto:%@taglib">%@taglib</a> uri="<a href="http://java.sun.com/jsp/jstl/core">http://java.sun.com/jsp/jstl/core</a>" prefix="c"%&gt;<br />&lt;<a href="mailto:%@taglib">%@taglib</a> uri="<a href="http://java.sun.com/jsp/jstl/sql">http://java.sun.com/jsp/jstl/sql</a>" prefix="sql"%&gt;</div>
		<div> </div>
		<div>&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;title&gt;JSP for SelectActionForm form&lt;/title&gt;<br />  &lt;script type="javaScript"&gt;<br />function submitForm()<br />{<br /> if(document.form1.selectValue.value=="")<br />        {<br />           alert("请输入查找关键字");<br />           document.form1.selectValue.focus();<br />           return false;<br />        }else<br />        {<br />          return true;<br />        }<br />}<br />function toPage()<br />{<br />  if(document.form1.pageText.value=="")<br />  {<br />            alert("请输入要前往的页数");<br />           document.form1.pageText.focus();<br />           return false;<br />  }else<br />        {<br />          a=document.form1.pageText.value;<br />          if(a&lt;=0||a&gt;=${requestScope.pagecount})<br />             a=${requestScope.page}<br />          document.form1.action = "selectAction.do?page="+a+"&amp;selectValue=${requestScope.selectValue}";<br />          return true;<br />        }<br />}<br />&lt;/script&gt;</div>
		<div> </div>
		<div> &lt;/head&gt;<br /> &lt;body&gt;<br />  &lt;center&gt;<br />   &lt;form name="form1" action="selectAction.do" method="POST"&gt;<br />    &lt;table&gt;<br />     &lt;tr&gt;<br />      &lt;td&gt;<br />       please input:<br />      &lt;/td&gt;<br />      &lt;td&gt;<br />       &lt;input type="text" name="selectValue"<br />        value="${requestScope.selectValue}" /&gt;<br />      &lt;/td&gt;<br />      &lt;td&gt;<br />       &lt;input type="submit" onclick="submitForm()" value="search" /&gt;<br />      &lt;/td&gt;<br />     &lt;/tr&gt;<br />    &lt;/table&gt;<br />    &lt;c:if test="${not empty sessionScope.selectList}"&gt;<br />     &lt;table border="1" cellpadding="3" cellspacing="3"&gt;<br />      &lt;tr&gt;<br />       &lt;th&gt;<br />        ID<br />       &lt;/th&gt;<br />       &lt;th&gt;<br />        Name<br />       &lt;/th&gt;<br />       &lt;th&gt;<br />        DESC<br />       &lt;/th&gt;<br />       &lt;th&gt;<br />        Date<br />       &lt;/th&gt;<br />       &lt;th&gt;<br />        CreateBy<br />       &lt;/th&gt;</div>
		<div> </div>
		<div>      &lt;/tr&gt;<br />      &lt;c:forEach var="cddate" items="${sessionScope.selectList}"&gt;<br />       &lt;tr&gt;<br />        &lt;td&gt;<br />         ${cddate.pageCategoryId}<br />        &lt;/td&gt;<br />        &lt;td&gt;<br />         ${cddate.pageItemName}<br />        &lt;/td&gt;<br />        &lt;td&gt;<br />         ${cddate.pageItemDesc}<br />        &lt;/td&gt;<br />        &lt;td&gt;<br />         ${cddate.pageItemDate}<br />        &lt;/td&gt;<br />        &lt;td&gt;<br />         ${cddate.pageItemBy}<br />        &lt;/td&gt;</div>
		<div> </div>
		<div>       &lt;/tr&gt;<br />      &lt;/c:forEach&gt;<br />     &lt;/table&gt;<br />     &lt;table&gt;<br />      &lt;tr&gt;<br />       &lt;td&gt;<br />        &lt;a<br />         href="selectAction.do?action=frist&amp;selectValue=${requestScope.selectValue}"&gt;MainPage&lt;/a&gt;<br />       &lt;/td&gt;<br />       &lt;td&gt;<br />        &lt;c:if test="${requestScope.page==1}"&gt;lastPage&lt;/c:if&gt;<br />        &lt;c:if test="${requestScope.page!=1}"&gt;<br />         &lt;a<br />          href="selectAction.do?action=back&amp;page=${requestScope.page}&amp;selectValue=${requestScope.selectValue}"&gt;lastPage&lt;/a&gt;<br />        &lt;/c:if&gt;<br />       &lt;/td&gt;<br />       &lt;td&gt;<br />        &lt;c:if test="${requestScope.page==requestScope.pagecount}"&gt;nextPage&lt;/c:if&gt;<br />        &lt;c:if test="${requestScope.page!=requestScope.pagecount}"&gt;<br />         &lt;a<br />          href="selectAction.do?action=next&amp;page=${requestScope.page}&amp;selectValue=${requestScope.selectValue}"&gt;nextPage&lt;/a&gt;<br />        &lt;/c:if&gt;<br />       &lt;/td&gt;<br />       &lt;td&gt;<br />        &lt;a<br />         href="selectAction.do?action=end&amp;selectValue=${requestScope.selectValue}"&gt;endPage&lt;/a&gt;<br />       &lt;/td&gt;<br />       &lt;td&gt;<br />        ${requestScope.page} / ${requestScope.pagecount}<br />       &lt;/td&gt;<br />       &lt;td&gt;<br />        changeTo<br />        &lt;input type="text" size="2" name="pageText"<br />         onkeyup="value=value.replace(/[^\d]/g,'') "<br />         onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"<br />         value="${requestScope.page}" /&gt;<br />        &lt;input type="submit" onclick="toPage()" value="GO" /&gt;<br />       &lt;/td&gt;<br />      &lt;/tr&gt;<br />     &lt;/table&gt;<br />    &lt;/c:if&gt;<br />   &lt;/form&gt;<br />  &lt;/center&gt;<br /> &lt;/body&gt;<br />&lt;/html&gt;</div>
		<div> </div>
		<div>
				<br />3 . struts-config.xml文件<br />     &lt;global-forwards&gt;<br />            &lt;forward name="select" path="/select.jsp" /&gt;<br />     &lt;/global-forwards&gt;<br />     &lt;form-beans&gt;<br />            &lt;form-bean name="selectActionForm" type="SelectActionForm" /&gt;<br />    &lt;/form-beans&gt;<br />     &lt;action-mappings&gt;<br />             &lt;action input="/select.jsp" name="selectActionForm" path="/selectAction" scope="request" type="SelectAction" validate="true" /&gt;<br />     &lt;/action-mappings&gt;<br />4. SelectActionForm.java<br />    import org.apache.struts.action.ActionForm;<br />import org.apache.struts.action.ActionErrors;<br />import org.apache.struts.action.ActionMapping;<br />import javax.servlet.http.HttpServletRequest;</div>
		<div> </div>
		<div>public class SelectActionForm<br />    extends ActionForm<br />{<br />     private String pageText;          //页面编码   <br />     private String selectValue;       //查询条件关键字<br />     public String getPageText()     //跳转到的页面<br />     {<br />         return pageText;             <br />     }</div>
		<div> </div>
		<div>     public void setPageText(String pageText)<br />     {<br />         this.pageText = pageText;<br />     }</div>
		<div> </div>
		<div>     public void setSelectValue(String selectValue)<br />     {<br />         this.selectValue = selectValue;<br />     }</div>
		<div> </div>
		<div>     public String getSelectValue()<br />     {<br />         return selectValue;<br />     }</div>
		<div> </div>
		<div>     public ActionErrors validate(ActionMapping actionMapping,<br />                                 HttpServletRequest httpServletRequest)<br />     { /** @todo: finish this method, this is just the skeleton.*/<br />         return null;<br />     }</div>
		<div> </div>
		<div>     public void reset(ActionMapping actionMapping,<br />                      HttpServletRequest servletRequest)<br />     {<br />     }<br />}<br />5. SelectAction.java<br />import org.apache.struts.action.ActionMapping;<br />import org.apache.struts.action.ActionForm;<br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br />import org.apache.struts.action.ActionForward;<br />import org.apache.struts.action.Action;<br />import com.wang.business.BusinessManage;<br />import com.wang.module.*;<br />import java.util.*;</div>
		<div> </div>
		<div>public class SelectAction<br />    extends Action<br />{<br />    public ActionForward execute(ActionMapping mapping, ActionForm form,<br />                                 HttpServletRequest request,<br />                                 HttpServletResponse response)<br />    {<br />        SelectActionForm selectForm = (SelectActionForm) form;<br />        BusinessManage bm = new BusinessManage();<br />        int page = 1;    //初始化为第一页</div>
		<div> </div>
		<div>        if (selectForm.getSelectValue() != null)<br />        {<br />            // if(request.getParameter("action")!=null)<br />            if (request.getParameter("page") == null)<br />            {<br />                page = 1;<br />            }<br />            else<br />            {</div>
		<div> </div>
		<div>                page = Integer.parseInt(request.getParameter("page"));<br />            }</div>
		<div> </div>
		<div>            if (selectForm.getPageText() != null)<br />            {<br />                page = Integer.parseInt(selectForm.getPageText());<br />            }<br />            if (request.getParameter("action") != null)<br />            {<br />                if (request.getParameter("action").equals("frist"))                 {   //跳转到首页<br />                    page = 1;<br />                }<br />                else if (request.getParameter("action").equals("end"))                //跳转到尾页<br />                {<br />                    page = bm.PAGECOUNT;<br />                }<br />                else if (request.getParameter("action").equals("back"))              //跳转到上一页<br />                {<br />                    page -= 1;<br />                }<br />                else if (request.getParameter("action").equals("next"))                //跳转到下一页<br />                {<br />                    page += 1;<br />                }<br />            }</div>
		<div> </div>
		<div>            List list = bm.selectCDBean(selectForm.getSelectValue(), page, 5);   //页面传递三个参数,将取得的值存放于一个list列表中<br />            // ArrayList list1 = new ArrayList(list);<br />            request.getSession().setAttribute("selectList", list);     //将页码集合变量存放于字符串变量selectList中,存放于session范围内<br />            int pagecount = bm.PAGECOUNT;                         //页面总数<br />            request.setAttribute("pagecount", pagecount);<br />            request.getSession().removeAttribute("selectList");<br />            request.getSession().setAttribute("selectList", list);<br />            request.setAttribute("selectValue", selectForm.getSelectValue());<br />            request.setAttribute("page", page);<br />            request.setAttribute("pagecount", pagecount);</div>
		<div> </div>
		<div>        }<br />        else<br />        {<br />            request.getSession().removeAttribute("selectList");<br />        }<br />        bm.close();<br />        return mapping.findForward("select");<br />    }<br />}<br /><br />6. 业务逻辑<br />BusinessManage.java<br />package com.wang.business;</div>
		<div> </div>
		<div>import org.hibernate.*;<br />import org.hibernate.cfg.*;<br />import com.wang.module.*;<br />import java.util.*;</div>
		<div> </div>
		<div>public class BusinessManage<br />{<br />    private SessionFactory sf = null;<br />    private Session s = null;<br />    private Transaction ts = null;<br />    private Query query = null;<br />    public static int PAGECOUNT;<br />    public BusinessManage()<br />    {<br />        sf = new Configuration().configure().buildSessionFactory();<br />        s = sf.openSession();<br />        ts = s.beginTransaction();<br />    }</div>
		<div> </div>
		<div>    public void openSession()<br />    {<br />        s = sf.openSession();<br />    }</div>
		<div> </div>
		<div>   </div>
		<div>    public List selectCDBean(String value, int page, int count)<br />    {<br />        List list = null;<br />        int pagelast = 0;<br />        try<br />        {<br />            query = s.createQuery("from ViewPage cd where cd.pageItemName like '%"<br />     + value + "%'");</div>
		<div> </div>
		<div>            if (query.list().size() / count == 0)   //页数为偶数<br />            {<br />                PAGECOUNT = query.list().size() / count;  //页面总数<br />            }<br />            else<br />            {<br />                PAGECOUNT = query.list().size() / count + 1;   //页数为基数<br />                pagelast = query.list().size() / count;<br />            }<br />            int begin = page * count - count;   //count为每页显示的纪录数,<br />            int end = page * count;<br />            if (page == PAGECOUNT)<br />            {<br />                end = query.list().size();<br />            }<br />            list = query.list().subList(begin, end);<br />        }<br />        catch (Exception ex)<br />        {<br />            list = null;<br />            ex.printStackTrace();<br />        }<br />        return list;<br />    }<br /></div>
		<div>   </div>
		<div>    public void close()<br />    {<br />        s.close();<br />    }<br />}<br /><br /><br /></div>
		<div> </div>
		<div> </div>
<img src ="http://www.blogjava.net/gavinju/aggbug/86218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2006-12-08 00:53 <a href="http://www.blogjava.net/gavinju/archive/2006/12/08/86218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>科以人重科亦重，人以科传人可知</title><link>http://www.blogjava.net/gavinju/archive/2006/09/27/72295.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Wed, 27 Sep 2006 06:16:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2006/09/27/72295.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/72295.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2006/09/27/72295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/72295.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/72295.html</trackback:ping><description><![CDATA[
		<p>        本人毕业于西安电子科技大学，本科。热爱软件开发，精通JAVA .熟悉Struts,Spring,Hibernate,Jboss,Eclipse等多种开源技术。<br />现主要从事于Oracle相关产品的开发。有着ERP,CRM,MES系统的开发经验，目前正着手于Struts与Ajax技术的集成系统的开发，<br />官方给出的AjaxTags也只是测试版，此技术正处于起步阶段。望对此技术有研究的朋友与我联系，给出指点。<br />真诚结交IT届同仁，共同学习，共同交流。构建和谐社会。<br />QQ: 541638655<br />MSN: <a href="mailto:jucracker@hotmail.com">jucracker@hotmail.com</a><br />Phone: 13817080595</p>
<img src ="http://www.blogjava.net/gavinju/aggbug/72295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2006-09-27 14:16 <a href="http://www.blogjava.net/gavinju/archive/2006/09/27/72295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java API中文版下载</title><link>http://www.blogjava.net/gavinju/archive/2006/07/28/60472.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Fri, 28 Jul 2006 01:33:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2006/07/28/60472.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/60472.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2006/07/28/60472.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/60472.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/60472.html</trackback:ping><description><![CDATA[
		<h2>
				<font style="BACKGROUND-COLOR: #0000ff">引言:</font>
		</h2>
		<p>
				<font style="BACKGROUND-COLOR: #0000ff">         如果说我这两年在Sun公司作了哪些对中国开发人员有益的事的话，我想Java API文档中文版毫无疑问的应该算第一个。我非常清楚仍然有众多开发人员坚持认为一个好的程序员应该完全参考英文版的文档，但是我坚信该文档的中文版有其存在的意义，因为 Java作为一种程序设计语言，我们希望能够有更多的开发人员——而不仅仅是那些能够熟练阅读英语的清华北大毕业生——来使用它，掌握它，精通它。</font>
		</p>
		<p>
				<font style="BACKGROUND-COLOR: #0000ff">也可以这么说，Java语言的前途，更多取决于草根，而不是精英。</font>
		</p>
		<p align="right">
				<a href="http://www.newsmth.net/pc/pccon.php?id=6&amp;nid=230388&amp;s=all">
						<font style="BACKGROUND-COLOR: #0000ff" color="#002c99">——Sun中国技术社区总负责人，蒋清野</font>
				</a>
		</p>
		<br />
		<font style="BACKGROUND-COLOR: #0000ff">         Java API Docs是学习和使用Java语言中最经常使用的参考资料之一，完整的Java API文档中文版文档共包括32个类库。但是长期以来此文档只有英文版和日文版，对于中国地区的Java开发者来说相当的不便。通过Sun公司的翻译团队10个月的不懈努力以及广大网友的热心支持，Java API中文文档的翻译工作如期完成，呈现到中国广大的Java用户和学习者面前<br /><br /><a href="http://java.csdn.net/subject/Java%20API/index.html">http://java.csdn.net/subject/Java%20API/index.html</a></font>
<img src ="http://www.blogjava.net/gavinju/aggbug/60472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2006-07-28 09:33 <a href="http://www.blogjava.net/gavinju/archive/2006/07/28/60472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Open Workbench</title><link>http://www.blogjava.net/gavinju/archive/2006/07/28/60469.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Fri, 28 Jul 2006 01:28:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2006/07/28/60469.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/60469.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2006/07/28/60469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/60469.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/60469.html</trackback:ping><description><![CDATA[
		<p align="left"> Open Workbench：MS Project的杀手<br />来自开源社区的Open Workbench有着与Microsoft Project相匹敌的丰富功能。虽然它还不能像Microsoft Project那样，提供支持C/S结构下的企业级多人协作的项目管理模式。但在单人使用的情况下，可以满足多数开发团队的项目管理需求。<img height="94" alt="t_IBM.jpg" src="http://www.blogjava.net/images/blogjava_net/gavinju/13429/t_IBM.jpg" width="120" border="0" /></p>
<img src ="http://www.blogjava.net/gavinju/aggbug/60469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2006-07-28 09:28 <a href="http://www.blogjava.net/gavinju/archive/2006/07/28/60469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Compiere ERP&amp;CRM</title><link>http://www.blogjava.net/gavinju/archive/2006/07/27/60410.html</link><dc:creator>HandSoft</dc:creator><author>HandSoft</author><pubDate>Thu, 27 Jul 2006 11:54:00 GMT</pubDate><guid>http://www.blogjava.net/gavinju/archive/2006/07/27/60410.html</guid><wfw:comment>http://www.blogjava.net/gavinju/comments/60410.html</wfw:comment><comments>http://www.blogjava.net/gavinju/archive/2006/07/27/60410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/gavinju/comments/commentRss/60410.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/gavinju/services/trackbacks/60410.html</trackback:ping><description><![CDATA[
		<font face="宋体" size="2">
				<span class="style7">Compiere ERP&amp;CRM为全球范围内的中小型企业提供综合型解决方案，覆盖从客户管理、供应链到财务管理的全部领域，支持多组织、多币种、多会计模式、多成本计算、多语种、多税制等国际化特性。易于安装、易于实施、易于使用。只需要短短几个小时，您就可以使用申购-采购-发票-付款、报价-订单-发票-收款、产品与定价、资产管理、客户关系、供应商关系、员工关系、经营业绩分析等强大功能了。<br /> <br /><img height="16" alt="主页" src="http://www.open-open.com/image/home_16.gif" width="16" border="0" /><font size="3"> </font><a href="http://www.compiere.org/"><font color="#002c99" size="3">http://www.compiere.org/</font></a></span>
		</font>
<img src ="http://www.blogjava.net/gavinju/aggbug/60410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/gavinju/" target="_blank">HandSoft</a> 2006-07-27 19:54 <a href="http://www.blogjava.net/gavinju/archive/2006/07/27/60410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>