ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美特黄视频,波多野结衣在线影院,国产不卡一区http://www.aygfsteel.com/gavinju/archive/2007/01/21/95188.htmlHandSoftHandSoftSun, 21 Jan 2007 15:35:00 GMThttp://www.aygfsteel.com/gavinju/archive/2007/01/21/95188.htmlhttp://www.aygfsteel.com/gavinju/comments/95188.htmlhttp://www.aygfsteel.com/gavinju/archive/2007/01/21/95188.html#Feedback0http://www.aygfsteel.com/gavinju/comments/commentRss/95188.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/95188.html 1. 在web.xmlæ–‡äšg中注册dwr
   <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <display-name>DWR Servlet</display-name>
    <description>Direct Web Remoter Servlet</description>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
 </servlet>
 <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
 </servlet-mapping>

 <welcome-file-list>
    <welcome-file>search.jsp</welcome-file>
 </welcome-file-list>

2.dwr.xml
 <dwr>
    <allow><convert convert="bean"  match="dwr.sample.Apartment"/>
    <create>
           <creator="new" javascript="ApartmentDAO" class="dwr.sample.ApartmentDAO">
                  <include method="findApartments"/>
                  <include method="countApartments"/>
           </creator>
    </create>
    </allow>
</dwr>
3.DB
CREATE TABLE APARTMENTS (id INTEGER, bedrooms INTEGER, bathrooms INTEGER, price INTEGER, address VARCHAR, city VARCHAR, province VARCHAR);
INSERT INTO APARTMENTS VALUES (16001, 1, 1, 850, '123 King St. East', 'Toronto', 'ON');
INSERT INTO APARTMENTS VALUES (16002, 2, 1, 1000, '1023 Yonge Ave.', 'Toronto', 'ON');
INSERT INTO APARTMENTS VALUES (16003, 2, 2, 1050, '27 Winchester St.', 'Toronto', 'ON');
4.Apertment.java
普通的javabean
5.DBUtils.java
   数据库链接类
   public class DBUtils {

 /*
  * Creates the sample data (table and records).
  */
 public static void setupDatabase(BufferedReader reader) {
  Connection c = null;
  Statement stmt = null;
  try {
   c = openConnection();
   stmt = c.createStatement();
   // reads the file with the SQL statements
   String line;
   while ((line = reader.readLine()) != null) {
    stmt.execute(line);
   }
   stmt.close();
   c.close();
  } catch (IOException e) {
   e.printStackTrace();
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    stmt.close();
    c.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
 }
 
 /*
  * Opens a database connection.
  */
 public static Connection openConnection() throws SQLException {
  Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:dwr-sample", "sa", "");
  return c;
 }
 
}

6.ContextListener.java
   实现了ServletContextListerer接口的类
   public class ContextListener implements javax.servlet.ServletContextListener {

 /**
  * This method is invoked when the Web Application has been removed and is
  * no longer able to accept requests.
  * @param event
  */
 public void contextDestroyed(ServletContextEvent event) {
 }

 /**
  * This method is invoked when the Web Application is ready to service requests.
  * @param event
  */
 public void contextInitialized(ServletContextEvent event) {
  try {
   // load the driver
   Class.forName("org.hsqldb.jdbcDriver");
   // create the table and add sample data
   InputStreamReader in = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("db.sql"));
   BufferedReader reader = new BufferedReader(in);
   DBUtils.setupDatabase(reader);
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
  
 }

}
7.ApartmentDAO.java
   业务逻辑�br />   public class ApartmentDAO {
 
 /**
  * Returns the available apartments based on the search criteria.
  * @param bedrooms minimum number of bedrooms
  * @param bathrooms minimum number of bathrooms
  * @param price maximum price to be paid
  * @return
  */
 public Collection findApartments(int bedrooms, int bathrooms, int price) {
  Collection list = new Vector();
  String sql = "select * from APARTMENTS" +
    createSearchWhereClause(bedrooms, bathrooms, price) +
    "order by bedrooms, bathrooms, price";

  // define db variables
  Connection c = null;
  Statement stmt = null;
  try {
   c = DBUtils.openConnection();
   stmt = c.createStatement();
   // just run the sql statement
   ResultSet rs = stmt.executeQuery(sql);
   while(rs.next()) {
    Apartment apartment = this.getApartment(rs);
    list.add(apartment);
   }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    stmt.close();
    c.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }

  return list;
 }
 
 /**
  * Returns the number of available apartments based on the search criteria.
  * @param bedrooms minimum number of bedrooms
  * @param bathrooms minimum number of bathrooms
  * @param price maximum price to be paid
  * @return
  */
 public int countApartments(int bedrooms, int bathrooms, int price) {
  String sql = "select count(*) as total from APARTMENTS" + createSearchWhereClause(bedrooms, bathrooms, price);
  int numberApartments = -1;
  // define db variables
  Connection c = null;
  Statement stmt = null;
  try {
   c = DBUtils.openConnection();
   stmt = c.createStatement();
   // just run the sql statement
   ResultSet rs = stmt.executeQuery(sql);
   if (rs.next()) {
    numberApartments = rs.getInt("total");
   }
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   try {
    stmt.close();
    c.close();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  
  return numberApartments;
 }
 
 /**
  * Creates a Unit object from the database.
  * @param rs
  * @return
  * @throws SQLException
  */
 private Apartment getApartment(ResultSet rs) throws SQLException {
  Apartment ap = new Apartment();
  ap.setId(rs.getInt("id"));
  ap.setAddress(rs.getString("address"));
  ap.setBedrooms(rs.getInt("bedrooms"));
  ap.setBathrooms(rs.getInt("bathrooms"));
  ap.setPrice(rs.getInt("price"));
  ap.setCity(rs.getString("city"));
  ap.setProvince(rs.getString("province"));
  return ap;
 }
 
 
 /**
  * Creates the where clause for the search SQL statement.
  * @param bedrooms
  * @param bathrooms
  * @param price
  * @return
  */
 private String createSearchWhereClause(int bedrooms, int bathrooms, int price) {
  String where = " where bedrooms >= " + bedrooms +
    " and bathrooms >= " + bathrooms +
    " and price < " + price;
  return where;
 }

}
8. search.jsp
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
  <title>DWR Example</title>

   <style type="text/css" media="screen">
       @import url( style.css );
   </style> 
 
  <script src='dwr/interface/ApartmentDAO.js'></script>
  <script src='dwr/engine.js'></script>
  <script src='dwr/util.js'></script>
  <script>
 
  function updateTotal() {
    $("resultTable").style.display = 'none';
    var bedrooms = document.getElementById("bedrooms").value;
    var bathrooms = document.getElementById("bathrooms").value;
    var price = document.getElementById("price").value;
    ApartmentDAO.countApartments(loadTotal, bedrooms, bathrooms, price);
  }

  function updateResults() {
    DWRUtil.removeAllRows("apartmentsbody");
    var bedrooms = document.getElementById("bedrooms").value;
    var bathrooms = document.getElementById("bathrooms").value;
    var price = document.getElementById("price").value;
    ApartmentDAO.findApartments(fillTable, bedrooms, bathrooms, price);
    $("resultTable").style.display = '';
  }
 
  var getId = function(unit) { return unit.id };
  var getAddress = function(unit) { return unit.address };
  var getBedrooms = function(unit) { return unit.bedrooms };
  var getBathrooms = function(unit) { return unit.bathrooms };
  var getPrice = function(unit) { return unit.price };
   
  function loadTotal(data) {
    document.getElementById("totalRecords").innerHTML = data;
  }
 
  function fillTable(apartment) {
    DWRUtil.addRows("apartmentsbody", apartment, [ getId, getAddress, getBedrooms, getBathrooms, getPrice ]);
  }
 
</script>

</head>

<body onload="updateTotal();">

<h2>Find an apartment to rent</h2>

<table border="0">
<form name="rentalForm">
  <tr width="400">
   <td width="100">City</td>
   <td width="300">Toronto</td>
  </tr>
  <tr>
   <td>Beds</td>
   <td>
    <select id="bedrooms" onchange="updateTotal()">
     <option value="1">1 or more</option>
     <option value="2">2 or more</option>
     <option value="3">3 or more</option>
     <option value="4">4 or more</option>
    </select>
   </td>
  </tr>

  <tr>
   <td>Baths</td>
   <td>
    <select id="bathrooms" onchange="updateTotal()">
     <option value="1">1 or more</option>
     <option value="2">2 or more</option>
     <option value="3">3 or more</option>
     <option value="4">4 or more</option>
    </select>
   </td>
  </tr>

  <tr>
   <td>Price</td>
   <td>
    <select id="price" onchange="updateTotal()">
     <option value="800">under $800</option>
     <option value="1000">under $1,000</option>
     <option value="1250">under $1,250</option>
     <option value="1500" selected="selected">under $1,500</option>
     <option value="1800">under $1,800</option>
     <option value="2000">under $2,000</option>
    </select>
   </td>
  </tr>

  <tr>
   <td colspan="2">
    <blockquote>
     Available apartments: <span id="totalRecords" style="font-weight:bold;"></span>
    </blockquote>
   </td>
  </tr>

</form>
</table>

<p><input type="button" value="Show results!" onClick="updateResults();"></p>

<div id="resultTable">

<h2>Results</h2>

 <table border="1">
  <thead>
    <tr>
      <th width="40">Id</th>
      <th width="180">Address</th>
      <th width="60">Beds</th>
      <th width="60">Baths</th>
      <th width="60">Price</th>
    </tr>
  </thead>
  <tbody id="apartmentsbody">

  </tbody>
 </table>
</div>

</body>
</html>

ç”׃ºŽ™å¹ç›®éœ€è¦?需在我们现有的struts、hibernate工程上集成ajax功能.™å¹ç›®¾l„决定ä‹É用Dwr.
刚开始研½I¶Dwr.觉得真的很不é”? 只需很少量的代码,ž®Þpƒ½åœ¨çŽ°æœ‰çš„å·¥ç¨‹ä¸Šé›†æˆajax技æœ? 期待Dwr有更辉煌的明天!
喜欢Dwr技术的IT界朋友可以与本äh联系åQæœ›æå‡ºå¥½çš„æ„è§ä¸Žå¾è®?



HandSoft 2007-01-21 23:35 发表评论
]]>
Dwrhttp://www.aygfsteel.com/gavinju/archive/2007/01/21/95140.htmlHandSoftHandSoftSun, 21 Jan 2007 07:59:00 GMThttp://www.aygfsteel.com/gavinju/archive/2007/01/21/95140.htmlhttp://www.aygfsteel.com/gavinju/comments/95140.htmlhttp://www.aygfsteel.com/gavinju/archive/2007/01/21/95140.html#Feedback0http://www.aygfsteel.com/gavinju/comments/commentRss/95140.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/95140.html         AjaxåQŒæˆ–者说是异步JavaScriptå’ŒXMLåQŒæ˜qîCº†ä¸€¿Uä‹Éç”¨æØœåˆäº†HTML(或XHTML)å’Œå±‚å æ ·å¼è¡¨ä½œäØ“è¡¨è¾¾ä¿¡æ¯,来创å»ÞZº¤äº’式的Web应用的开发技æœ?文档对象模型(DOM)åQŒJavaScript,动态地昄¡¤ºå’Œä¸Žè¡¨è¾¾ä¿¡æ¯˜q›è¡Œäº¤äº’;òq¶ä¸”åQŒXMLHttpRequest对象与Web服务器异步地交换和处理数据ã€?/font>

  因特¾|‘上许多例子展示了在一个HTMLæ–‡äšg内部使用XMLHttpRequest与服务器端进行交互的必要的步骤。当手工地编写和¾l´æŠ¤XMLHttpRequest代码æ—Óž¼Œå¼€å‘者必™åÕd¤„理许多潜在的问题åQŒç‰¹åˆ«æ˜¯¾cÖM¼¼äºŽè·¨‹¹è§ˆå™¨çš„DOM实现的兼å®ÒŽ€§è¿™æ ïLš„问题。这ž®†ä¼šå¯ÆD‡´åœ¨ç¼–码和调试Javascript代码上面èŠÞp´¹æ•îC¸æ¸…的旉™—´åQŒè¿™æ˜„¡„¶å¯¹å¼€å‘者来说很不友好ã€?/font>

  DWR(直接Web˜qœç¨‹æŽ§åˆ¶)™å¹ç›®æ˜¯åœ¨Apache许可下的一个开源的解决æ–ÒŽ¡ˆåQŒå®ƒä¾›ç»™é‚£äº›æƒŒ™¦ä»¥ä¸€¿Uç®€å•的方式使用Ajaxå’ŒXMLHttpRequest的开发者。它å…ähœ‰ä¸€å¥—Javascript功能集,它们把从HTML™åµé¢è°ƒç”¨åº”用服务器上的Java对象的方法简化了。它操控不同¾cÕdž‹çš„参敎ͼŒòq¶åŒæ—¶ä¿æŒäº†HTML代码的可è¯ÀL€§ã€?br />一. Util.js
      util.js包含一¾pÕdˆ—的工具函æ•îC‹É用javascript˜q”回的数据来帮助更新Web™åµé¢ã€?br />util.js中有四种基本的页面操作函æ•?
getValue[s];setValue[s]可以和除˜q‡tables、lists、images的大部分的html元素交互.
getText()可以和选择列表(select lists)交互.
¾~–辑tables用addRows()å’ŒremoveAllRows()æ–ÒŽ³•.¾~–辑列表(选择listså’Œul,ol列表)ç”?br />addOptions()å’ŒremoveAllOptions().
1.${}
  ${}函数是一�javascript)全局变量.
  $=document.getElementById
  '$'可以通过¾l™å®šçš?ID'取得HTML文档元素.他也可返回一个包含返回元素的数组.
2.Generating Lists
  DWRUtil.addOptions()描述了下拉列表的实现
  var sel = DWRUtil.getValue(id);
  DWRUtil.removeAllOptions(id);
  DWRUtil.addOptions(id,...);
  DWRUtil.setValue(id,sel);
  如果惌™¦æ·ÕdŠ "请选择..."™å?可以æ·ÕdР以䏋™å? DWRUtil.addOptions(id,["Please select ..."]);
  DWRUtil.addOptions有四¿Uä‹É用模å¼?
  Array:
       DWRUtil.addOptions(selectid,array)和用文本和值创å»ÞZº†é€‰æ‹©åˆ—表.
  Array of Objects(using option text = option value):
       DWRUtil.addOptions(selectid,data,prop)用数¾l„元素创å»ÞZº†é€‰æ‹©åˆ—表,选择列表中的值和文本讑֮šä¸?br />       数组中的每个对象的属æ€?
  Array of objects(with differing option text and value):
       DWRUtil.addOptions(selectid,array,valueprop,textprop)
  Object:
       DWRUtil.addOptions(selectid,map,reverse)
  Map of object:
       DWRUtil.addOptions(ulid,array)
 



]]>
¿U‘以人重¿U‘亦重,äºÞZ»¥¿U‘传人可çŸ?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/gavinju/archive/2006/09/27/72295.html</guid><wfw:comment>http://www.aygfsteel.com/gavinju/comments/72295.html</wfw:comment><comments>http://www.aygfsteel.com/gavinju/archive/2006/09/27/72295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/gavinju/comments/commentRss/72295.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/gavinju/services/trackbacks/72295.html</trackback:ping><description><![CDATA[ <p>        本äh毕业于西安电子科技大学åQŒæœ¬¿U‘。热çˆÞpÊY件开发,¾_ùN€šJAVA .熟悉Struts,Spring,Hibernate,Jboss,Eclipse½{‰å¤š¿Uå¼€æºæŠ€æœ¯ã€?br />çŽîC¸»è¦ä»Žäº‹äºŽOracle相关产品的开发。有着ERP,CRM,MES¾pȝ»Ÿçš„开发经验,目前正着手于Struts与Ajax技术的集成¾pȝ»Ÿçš„开发,<br />官方¾l™å‡ºçš„AjaxTags也只是测试版åQŒæ­¤æŠ€æœ¯æ­£å¤„于èµäh­¥é˜¶æ®µã€‚望å¯ÒŽ­¤æŠ€æœ¯æœ‰ç ”究的朋友与我联¾p»ï¼Œ¾l™å‡ºæŒ‡ç‚¹ã€?br />真诚¾l“交IT届同仁,共同学习åQŒå…±åŒäº¤‹¹ã€‚构建和谐社会ã€?br />QQ: 541638655<br />MSN: <a href="mailto:jucracker@hotmail.com">jucracker@hotmail.com</a><br />Phone: 13817080595</p> <img src ="http://www.aygfsteel.com/gavinju/aggbug/72295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/gavinju/" target="_blank">HandSoft</a> 2006-09-27 14:16 <a href="http://www.aygfsteel.com/gavinju/archive/2006/09/27/72295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>http://ajaxcn.org/space/Ajax/Dojo/Event ----- Ajax中国http://www.aygfsteel.com/gavinju/archive/2006/08/29/66397.htmlHandSoftHandSoftTue, 29 Aug 2006 05:16:00 GMThttp://www.aygfsteel.com/gavinju/archive/2006/08/29/66397.htmlhttp://www.aygfsteel.com/gavinju/comments/66397.htmlhttp://www.aygfsteel.com/gavinju/archive/2006/08/29/66397.html#Feedback0http://www.aygfsteel.com/gavinju/comments/commentRss/66397.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/66397.html Dojo Event System

]]>
‹Æ¢è¿Žçƒ­çˆ±Ajax技术的朋友加入本群åQ?8058108http://www.aygfsteel.com/gavinju/archive/2006/08/18/64250.htmlHandSoftHandSoftFri, 18 Aug 2006 01:07:00 GMThttp://www.aygfsteel.com/gavinju/archive/2006/08/18/64250.htmlhttp://www.aygfsteel.com/gavinju/comments/64250.htmlhttp://www.aygfsteel.com/gavinju/archive/2006/08/18/64250.html#Feedback0http://www.aygfsteel.com/gavinju/comments/commentRss/64250.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/64250.html

]]>
gwtçš„å¯è§†åŒ–å¼€å‘å·¥å…øP¼š--- VistaFei http://www.aygfsteel.com/gavinju/archive/2006/08/04/61792.htmlHandSoftHandSoftFri, 04 Aug 2006 08:55:00 GMThttp://www.aygfsteel.com/gavinju/archive/2006/08/04/61792.htmlhttp://www.aygfsteel.com/gavinju/comments/61792.htmlhttp://www.aygfsteel.com/gavinju/archive/2006/08/04/61792.html#Feedback1http://www.aygfsteel.com/gavinju/comments/commentRss/61792.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/61792.html gwtçš„å¯è§†åŒ–å¼€å‘å·¥å…øP¼š--- VistaFei

2006-7-19 发布的gwt的可视化开发工�----   VistaFei
特点åQ?br />1åQŒåŸºäºŽeclipse
2åQŒå¯ä»¥è‡ªç”±æ‹–攄¡»„ä»?br />3åQŒæ²¡æœ‰è¯´æ˜¯å¦å…è´¹
4åQŒè¿™ä¸ªç‰ˆæœ¬å¯¹äºŽåˆå­¦gwtçš„äh很有帮助åQŒä½†å¯¹äºŽçœŸå®žçš„应用还不行

主页åQšhttp://www.wirelexsoft.com/
下蝲地址åQšhttp://www.wirelexsoft.com/wforum/viewtopic.php?t=48
要注册用æˆäh‰å¯ä»¥ä¸‹è²



]]>
Ajax 框架ZK 2.1.0 RC2 发布http://www.aygfsteel.com/gavinju/archive/2006/08/03/61532.htmlHandSoftHandSoftThu, 03 Aug 2006 08:18:00 GMThttp://www.aygfsteel.com/gavinju/archive/2006/08/03/61532.htmlhttp://www.aygfsteel.com/gavinju/comments/61532.htmlhttp://www.aygfsteel.com/gavinju/archive/2006/08/03/61532.html#Feedback1http://www.aygfsteel.com/gavinju/comments/commentRss/61532.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/61532.htmlZK 开发小¾l?1日宣布,发布ZK 2.1.0 RC2 版本ã€?/p>

ZK 是一个基于XUL嵌入AJAX事äšg驱动的Java 框架åQŒç”¨äºŽä¸°å¯Œç”¨æˆïL½‘¾lœåº”用程序界面ã€?/p>

新版本中增加äº?5个新ç‰ÒŽ€§ï¼Œä¿®è¡¥äº?9个bugåQŒåŒ…括directive、import、component、style、event、自定义错误™åµé¢½{‰ç­‰ã€?CSDN)



]]>
Google Web Toolkit http://www.aygfsteel.com/gavinju/archive/2006/08/01/61248.htmlHandSoftHandSoftTue, 01 Aug 2006 12:21:00 GMThttp://www.aygfsteel.com/gavinju/archive/2006/08/01/61248.htmlhttp://www.aygfsteel.com/gavinju/comments/61248.htmlhttp://www.aygfsteel.com/gavinju/archive/2006/08/01/61248.html#Feedback0http://www.aygfsteel.com/gavinju/comments/commentRss/61248.htmlhttp://www.aygfsteel.com/gavinju/services/trackbacks/61248.htmlè´¹äº†æˆ‘å¾ˆå¤§å‘¨æŠ˜ï¼ç›æ€¿¡å¾ˆå¿«ä¼šæœ‰æ›´å®Œ¾ŸŽçš„版本åQ?br />拭目以待吧!
    

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÈÕÕÕÊÐ| ºÏ´¨ÊÐ| »ÔÄÏÏØ| °²¿µÊÐ| Îâ±¤ÏØ| ×Ͳ©ÊÐ| ÎÚÀ¼ºÆÌØÊÐ| ´ïÀ­ÌØÆì| ¶ÑÁúµÂÇìÏØ| Ôæ×¯ÊÐ| Ðãɽ| ÓÑÒêÏØ| ÉîÖÝÊÐ| ʯÊ×ÊÐ| °²¶àÏØ| ÔÆ°²ÏØ| Àû´¨ÊÐ| ÐÂÌïÏØ| ˫ѼɽÊÐ| ÀÉÏªÏØ| »ôÇñÏØ| ÓÎÏ·| ½úÖÐÊÐ| ʲÚúÊÐ| ÖîôßÊÐ| ͳ·¬ÊÐ| Î¼Ô´ÏØ| ³¤¸ðÊÐ| Ìì¾þÏØ| ÀÖɽÊÐ| Ѱµé| ͨÐíÏØ| Êè¸½ÏØ| °ÍÑåÏØ| ²ÔÏªÏØ| ¸ÊÂåÏØ| äÒÖÐÏØ| Ê¯ÈªÏØ| ¡µÂÏØ| ÎâÆìÏØ| ÁÖÖÜÏØ|