锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲福利精品一区,久久久久久亚洲av成人无码国产,精品国产亚洲一区二区在线观看 http://www.tkk7.com/fuhoujun/archive/2016/06/13/430865.htmlLoy FuLoy FuMon, 13 Jun 2016 02:00:00 GMThttp://www.tkk7.com/fuhoujun/archive/2016/06/13/430865.htmlhttp://www.tkk7.com/fuhoujun/comments/430865.htmlhttp://www.tkk7.com/fuhoujun/archive/2016/06/13/430865.html#Feedback0http://www.tkk7.com/fuhoujun/comments/commentRss/430865.htmlhttp://www.tkk7.com/fuhoujun/services/trackbacks/430865.html* 鍚庣閲囩敤Spring boot錛屽畠浣挎垜浠洿瀹規槗鍘誨垱寤哄熀浜嶴pring鐨勭嫭绔嬪拰浜у搧綰х殑鍙互鍗蟲椂榪愯鐨勫簲鐢ㄥ拰鏈嶅姟銆傜洿鎺ュ祵鍏omcat 鎴朖etty鏈嶅姟鍣紝涓嶉渶瑕侀儴緗瞁AR 鏂囦歡錛屽彲鐩存帴榪愯jar鏂囦歡銆?
* 緋葷粺鏉冮檺妗嗘灦閲囩敤Shiro錛屽疄鐜板墠鍚庡彴鏉冮檺鏍¢獙 * 鎸佷箙灞傞噰鐢↗PA 錛屽茍瀹炵幇綾籭batis鐨勬煡璇㈠姛鑳斤紱鏁版嵁鍝嶅簲璇ラ噰鐢╦son鏍煎紡銆?
* 鏈嶅姟閲囩敤REST褰㈠紡錛岃兘澶熸柟渚跨殑涓庢墜鏈篴pp榪涜瀵規帴錛岄泦鎴恠wagger鑳藉鍦ㄧ嚎鏌ョ湅RESTAPI 鏂囨。鍜屽湪綰挎祴璇曟湇鍔℃帴鍙?
* 鏀寔鍗曠偣鐧誨綍錛屽彲浠ュ緋葷粺榪涜鑿滃崟闆嗘垚錛屽艦鎴愪竴涓猵ortal
* 鏀寔楂樺茍鍙戝拰姘村鉤鎵╁睍錛屾敮鎸丼ession鐨勭粺涓瀛樺偍
* 欏圭洰閲囩敤gradle鏋勫緩錛岃兘澶熸柟渚跨殑灝嗗悇欏圭洰榪涜鎸夐渶緇勮  闃呰鍏ㄦ枃

Loy Fu 2016-06-13 10:00 鍙戣〃璇勮
]]>
java NIOhttp://www.tkk7.com/fuhoujun/archive/2008/10/21/235733.htmlLoy FuLoy FuTue, 21 Oct 2008 09:44:00 GMThttp://www.tkk7.com/fuhoujun/archive/2008/10/21/235733.htmlhttp://www.tkk7.com/fuhoujun/comments/235733.htmlhttp://www.tkk7.com/fuhoujun/archive/2008/10/21/235733.html#Feedback0http://www.tkk7.com/fuhoujun/comments/commentRss/235733.htmlhttp://www.tkk7.com/fuhoujun/services/trackbacks/235733.html闃呰鍏ㄦ枃

Loy Fu 2008-10-21 17:44 鍙戣〃璇勮
]]>
杞繪澗瀹炵幇Apache,Tomcat闆嗙兢鍜岃礋杞藉潎琛?/title><link>http://www.tkk7.com/fuhoujun/archive/2008/10/20/235373.html</link><dc:creator>Loy Fu</dc:creator><author>Loy Fu</author><pubDate>Mon, 20 Oct 2008 00:49:00 GMT</pubDate><guid>http://www.tkk7.com/fuhoujun/archive/2008/10/20/235373.html</guid><wfw:comment>http://www.tkk7.com/fuhoujun/comments/235373.html</wfw:comment><comments>http://www.tkk7.com/fuhoujun/archive/2008/10/20/235373.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fuhoujun/comments/commentRss/235373.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fuhoujun/services/trackbacks/235373.html</trackback:ping><description><![CDATA[ 浣滆?緗椾唬鍧?ldj_work#126.com,杞澆璇蜂繚鎸佸畬鏁存?br /> 鐜璇存槑 <p>       Apache  :apache_2.0.55     1 涓?/p> <p>       Tomcat:  apache-tomcat-5.5.17 (zip鐗? 2涓?/p> <p>       mod_jk:: mod_jk-apache-2.0.55.so  1涓?/p> <p><strong>絎竴閮ㄥ垎錛氳礋杞藉潎琛?/strong></p> <p>    璐熻澆鍧囪 錛屽氨鏄痑pache灝嗗鎴瘋姹傚潎琛$殑鍒嗙粰tomcat1,tomcat2....鍘誨鐞?/p> <p><strong>   1.瀹夎apche,tomcat</strong></p> <p>   <a >http://httpd.apache.org/</a> 涓嬭澆Apache 2.0.55</p> <p>    <a >http://tomcat.apache.org/download-55.cgi</a> 涓嬭澆tomcat5.5 zip鐗堟湰錛堣В鍘嬪嵆鍙紝緇胯壊鐗堬級</p> <p>   <a >http://apache.justdn.org/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.15/</a>  涓嬭澆mod_jk,娉ㄦ剰鍜?nbsp; apache鐗堟湰鍖歸厤</p> <p>   鎸夌収jdk,鎴戠殑璺緞涓?E:\ide\apache\Apache2</p> <p>   瑙e帇涓や喚Tomcat, 璺緞鍒嗗埆涓?E:\ide\tomcat1,E:\ide\tomcat2</p> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/9d61f003d5034eec09fa935b.jpg" border="0" small="0" alt="" /></div> <p>涓嬭澆mod_jk</p> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/52855e82373a3ea20df4d224.jpg" border="0" small="0" alt="" /></div> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/46899c50d44e3b628435245b.jpg" border="0" small="0" alt="" /></div> <div forimg="1"></div> <div forimg="1"></div> <p><strong>2.淇敼Apache閰嶇疆鏂囦歡http.conf</strong></p> <p>   鍦╝pache瀹夎鐩綍涓媍onf鐩綍涓壘鍒癶ttp.conf</p> <p>   鍦ㄦ枃浠舵渶鍚庡姞涓婁笅闈竴鍙ヨ瘽灝卞彲浠ヤ簡</p> <p>  include "E:\ide\apache\Apache2\conf\mod_jk.conf"</p> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/d1c28cd49b8d6901a08bb720.jpg" border="0" small="0" alt="" /></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong>2. http.conf 鍚岀洰褰曚笅鏂板緩mod_jk.conf鏂囦歡錛屽唴瀹瑰涓?/strong></div> <div forimg="1">   </div> <div forimg="1">#鍔犺澆mod_jk Module<br /> LoadModule jk_module modules/mod_jk-apache-2.0.55.so</div> <div forimg="1"></div> <div forimg="1">#鎸囧畾 workers.properties鏂囦歡璺緞<br /> JkWorkersFile conf/workers.properties</div> <div forimg="1"></div> <div forimg="1">#鎸囧畾閭d簺璇鋒眰浜ょ粰tomcat澶勭悊,"controller"涓哄湪workers.propertise閲屾寚瀹氱殑璐熻澆鍒嗛厤鎺у埗鍣?/div> <div forimg="1">JkMount /*.jsp controller</div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong>3.鍦╤ttp.conf鍚岀洰褰曚笅鏂板緩 workers.properties鏂囦歡錛屽唴瀹瑰涓?/strong></div> <div forimg="1"> </div> <div forimg="1">worker.list = controller,tomcat1,tomcat2  #server 鍒楄〃</div> <div forimg="1"></div> <div forimg="1">#========tomcat1========</div> <div forimg="1">worker.tomcat1.port=8009         #ajp13 绔彛鍙鳳紝鍦╰omcat涓媠erver.xml閰嶇疆,榛樿8009<br /> worker.tomcat1.host=localhost  #tomcat鐨勪富鏈哄湴鍧錛屽涓嶄負鏈満錛岃濉啓ip鍦板潃<br /> worker.tomcat1.type=ajp13<br /> worker.tomcat1.lbfactor = 1   #server鐨勫姞鏉冩瘮閲嶏紝鍊艱秺楂橈紝鍒嗗緱鐨勮姹傝秺澶?/div> <div forimg="1"></div> <div forimg="1">#========tomcat2========</div> <div forimg="1">worker.tomcat2.port=9009       #ajp13 绔彛鍙鳳紝鍦╰omcat涓媠erver.xml閰嶇疆,榛樿8009<br /> worker.tomcat2.host=localhost  #tomcat鐨勪富鏈哄湴鍧錛屽涓嶄負鏈満錛岃濉啓ip鍦板潃<br /> worker.tomcat2.type=ajp13<br /> worker.tomcat2.lbfactor = 1   #server鐨勫姞鏉冩瘮閲嶏紝鍊艱秺楂橈紝鍒嗗緱鐨勮姹傝秺澶?/div> <div forimg="1"><br /> #========controller,璐熻澆鍧囪 鎺у埗鍣?=======<br /> worker.controller.type=lb<br /> worker.controller.balanced_workers=tomcat1,tomcat2   #鎸囧畾鍒嗘媴璇鋒眰鐨則omcat<br /> worker.controller.sticky_session=1</div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong>4.淇敼tomcat閰嶇疆鏂囦歡server.xml</strong></div> <div forimg="1">濡傛灉浣犲湪涓嶅悓鐢佃剳涓婂畨瑁卼omcat,tomcat鐨勫畨瑁呮暟閲忎負涓涓紝鍙互涓嶅繀淇敼tomcat閰嶇疆鏂囦歡</div> <div forimg="1">鎴戣繖閲屾槸鍦ㄥ悓涓鍙扮數鑴戜笂瀹夎涓や釜tomcat錛屾墍浠ラ渶瑕佹洿鏀瑰叾涓竴涓殑璁劇疆</div> <div forimg="1"></div> <div forimg="1">鎵撳紑tomcat2/conf/server.xml鏂囦歡</div> <div forimg="1"> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/a3d133a8ed4063b1ca130c36.jpg" border="0" small="0" alt="" /> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/8c3cae7727b25d1bb151b937.jpg" border="0" small="0" alt="" /></div> <div forimg="1"> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/56b04b085ba7f3950b7b8230.jpg" border="0" small="0" alt="" /></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong>5.緙栧啓涓涓祴璇昷sp</strong></div> <div forimg="1"></div> <div forimg="1">寤虹珛涓涓洰褰晅est.閲岄潰鏂板緩涓涓猼est.jsp,鍐呭涓?/div> <div forimg="1"></div> <div forimg="1"><% <br />    System.out.println("===========================");<br /> %><br /> </div> <div forimg="1">鎶妕est鏀懼埌tomcat1,tomcat2鐨剋ebapps涓?/div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong>6.鍚姩apache,tomcat1,tomcat2,榪涜嫻嬭瘯</strong></div> <div forimg="1"></div> <div forimg="1">閫氳繃 <a href="http://localhost/test/test.jsp">http://localhost/test/test.jsp</a> 璁塊棶錛屾煡鐪媡omcat1鐨勭獥鍙o紝鍙互鐪嬪埌鎵撳嵃浜嗕竴琛?=========="</div> <div forimg="1">鍐嶅埛鏂頒竴嬈★紝tomcat2涔熸墦鍗頒簡涓鏉★紝鍐嶅埛鏂幫紝鍙互鐪嬪埌璇鋒眰浼氳tomcat1,tomcat2杞祦澶勭悊,瀹炵幇浜嗚礋杞藉潎琛?/div> <div forimg="1"> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/acf2fcf2c8b77d13b17ec53d.jpg" width="830" border="0" small="0" alt="" /></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong>絎簩閮ㄥ垎錛岄厤緗泦緹?/strong></div> <div forimg="1">   鍙厤緗礋杞藉潎琛¤繕涓嶈錛岃繕瑕乻ession澶嶅埗錛屼篃灝辨槸璇村叾涓換浣曚竴涓猼omcat鐨勬坊鍔犵殑session錛屾槸瑕佸悓姝ュ鍒跺埌鍏跺畠tomcat錛?闆嗙兢鍐呯殑tomcat閮芥湁鐩稿悓鐨剆ession</div> <div forimg="1"></div> <div forimg="1"><strong>1. 淇敼tomcat1, tomcat2鐨剆erver.xml</strong>,灝嗛泦緹ら儴鍒嗛厤緗殑鍦ㄦ敞閲婄鍒犳帀,騫跺皢tomcat2鐨?001绔彛鏀逛負4002錛屼互閬垮厤涓巘omcat鍐茬獊錛屽綋鐒訛紝濡傛灉鏄袱鍙扮數鑴戯紝鏄笉鐢ㄦ敼绔彛鐨勶紝鍘繪帀娉ㄩ噴絎﹀嵆鍙?/div> <div forimg="1">   <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/aa4ab5fb0f3582224f4aeab2.jpg" border="0" small="0" alt="" /></div> <div forimg="1"> <div forimg="1"> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/89b84c3627ecc1dda3cc2b92.jpg" border="0" small="0" alt="" /></div> </div> <div forimg="1"> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/cc4b858b603d47d3fd1f10b2.jpg" border="0" small="0" alt="" /></div> <div forimg="1"></div> <div forimg="1"></div> <div forimg="1"><strong> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/52dfdac4bc506ecb38db4959.jpg" border="0" small="0" alt="" /></div> </strong></div> <div forimg="1"><strong></strong></div> <div forimg="1"><strong>2錛屼慨鏀規祴璇曢」鐩畉est</strong></div> <div forimg="1">淇敼test.jsp,鍐呭濡備笅</div> <div forimg="1"></div> <div forimg="1">  <%@ page contentType="text/html; charset=GBK" %><br /> <%@ page import="java.util.*" %><br /> <html><head><title>Cluster App Test</title></head><br /> <body><br /> Server Info:<br /> <%<br /> out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%><br /> <%<br />   out.println("<br> ID " + session.getId()+"<br>");</div> <div forimg="1">  // 濡傛灉鏈夋柊鐨?Session 灞炴ц緗?br />   String dataName = request.getParameter("dataName");<br />   if (dataName != null && dataName.length() > 0) {<br />      String dataValue = request.getParameter("dataValue");<br />      session.setAttribute(dataName, dataValue);<br />   }</div> <div forimg="1">  out.print("<b>Session 鍒楄〃</b>");</div> <div forimg="1">  Enumeration e = session.getAttributeNames();<br />   while (e.hasMoreElements()) {<br />      String name = (String)e.nextElement();<br />      String value = session.getAttribute(name).toString();<br />      out.println( name + " = " + value+"<br>");<br />          System.out.println( name + " = " + value);<br />    }<br /> %><br />   <form action="index.jsp" method="POST"><br />     鍚嶇О:<input type=text size=20 name="dataName"><br />      <br><br />     鍊?<input type=text size=20 name="dataValue"><br />      <br><br />     <input type=submit><br />    </form><br /> </body><br /> </html></div> <div forimg="1"></div> <div forimg="1">鐒跺悗鍦╰est 鏂板緩WEB-INF鐩綍錛學EB-INF涓嬫柊寤簑eb.xml,鍐呭濡備笅</div> <div forimg="1"><web-app xmlns="<a xmlns:xsi="<a xsi:schemaLocation="<a >http://java.sun.com/xml/ns/j2ee</a> <a version="2.4"><br />        <display-name>TomcatDemo</display-name><br />       <strong><font color="#ff0000"> <distributable/></font></strong><br /> </web-app></div> <div forimg="1"></div> <div forimg="1">娉ㄦ剰錛氬湪浣犵殑搴旂敤鐨剋eb.xml鍔犲叆 <font color="#ff0000"><strong> <distributable/></strong> </font><font color="#000000">鍗沖彲</font></div> <div forimg="1"></div> <div forimg="1">ok,璁瞭est澶嶅埗鍒皌omcat1,tomcat2鐨剋ebapps涓嬶紝閲嶅惎apache,tomcat1,tomcat2,</div> <div forimg="1">杈撳叆緗戝潃 <a href="http://localhost/test/test.jsp">http://localhost/test/test.jsp</a>   </div> <div forimg="1"></div> <div forimg="1">鏂板緩涓涓?鍚嶇О涓?xiaoluo  ,鍊間負 cdut 鐨剆ession,鎻愪氦鏌ヨ錛屾柊寮涓涓猧e紿楀彛錛屽啀鎻愪氦鏌ヨ錛屽鍥撅紝鍙互鐪嬪埌錛屼袱涓猼omcat 鏄礋杞藉潎琛★紝騫朵笖session鍚屾鐨?/div> <div forimg="1"> <div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/luodaijun/pic/item/79a9317af99aa5ed2e73b385.jpg" width="830" border="0" small="0" alt="" /></div> </div> </div> </div> </div> </div> </div> </div> </div> <img src ="http://www.tkk7.com/fuhoujun/aggbug/235373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fuhoujun/" target="_blank">Loy Fu</a> 2008-10-20 08:49 <a href="http://www.tkk7.com/fuhoujun/archive/2008/10/20/235373.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Ext涓璅ormPanel闈㈡澘鍙奆orm鎺т歡妯帓嫻嬭瘯(CSS) http://www.tkk7.com/fuhoujun/archive/2008/10/15/234416.htmlLoy FuLoy FuWed, 15 Oct 2008 05:03:00 GMThttp://www.tkk7.com/fuhoujun/archive/2008/10/15/234416.htmlhttp://www.tkk7.com/fuhoujun/comments/234416.htmlhttp://www.tkk7.com/fuhoujun/archive/2008/10/15/234416.html#Feedback0http://www.tkk7.com/fuhoujun/comments/commentRss/234416.htmlhttp://www.tkk7.com/fuhoujun/services/trackbacks/234416.html

鍦ㄥ疄闄呯殑緗戦〉寮鍙戜腑錛屽ぇ閮ㄥ垎鏃墮棿閮借娑夊強鍒癋orm琛ㄥ崟鐨勫鐞嗐傚湪Ext妗嗘灦涓篃鎻愪緵浜嗗緢澶氳繖鏂歸潰鐨勬帶浠訛紝鑰屼笖榪樻湁涓涓笓闂ㄧ殑FormPanel甯?灞錛岃甯冨眬榛樿涓烘斁鍦ㄩ潰鏉夸笂闈㈢殑鎵鏈夋帶浠墮兘鏄崲琛屾斁緗紝鑰屽湪瀹為檯搴旂敤涓負浜嗙編瑙傦紝鏈変簺闇瑕佹í鎺掞紝鐗瑰埆鏄疪adio鎺т歡錛岃繖涓椂鍊欏氨闇瑕佹垜浠噸鏂板畾鍒惰繖浜涙帶 浠剁殑甯冨眬浜嗭紝璇ヤ緥瀛愪腑浣跨敤CSS鏉ュ疄鐜拌繖浜涘姛鑳斤紝鍏堣創鍑轟竴寮犳晥鏋滃浘銆?/p>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ext涓璅ormPanel闈㈡澘鍙奆orm鎺т歡妯帓嫻嬭瘯(CSS)</title>
<link rel="stylesheet" type="text/css" media="all" href="../ext/resources/css/ext-all.css" />
<style type="text/css" media="all">
.allow-float {clear:none!important;} /* 鍏佽璇ュ厓绱犳誕鍔?*/
.stop-float {clear:both!important;} /* 闃繪璇ュ厓绱犳誕鍔?*/
.sex-male {float:left;}
.sex-female {float:left;padding:0 0 0 20px;}
.age-field {float:left;padding:0 0 0 58px;*padding:0 0 0 50px!important;*padding:0 0 0 50px;}
</style>
</head>
<body>
<script type="text/javascript" src="../ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext/ext-all.js"></script>
<script type="text/javascript" src="../ext/build/locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript">Ext.BLANK_IMAGE_URL = '../ext/resources/images/default/s.gif';</script>
<script type="text/javascript">
Ext.onReady(function() {
//鍒涘緩Form闈㈡澘
var fp = new Ext.form.FormPanel({
buttonAlign:'center',
labelAlign:'right',
labelWidth:40,
frame:true,
bodyStyle:'padding:8px 0 0 0;',
items:[{
xtype:'textfield',
fieldLabel:'濮撳悕',
name:'n_username',
id:'i_username',
width:320
},{
xtype:'radio',
fieldLabel:'鎬у埆',
boxLabel:'鐢?,
name:'sex',
id:'male',
itemCls:'sex-male', //鍚戝乏杈規誕鍔?澶勭悊鎺т歡妯帓
clearCls:'allow-float', //鍏佽涓よ竟嫻姩,鍦ㄥ疄闄呯敓鎴愮殑HTML緇撴瀯涓湁涓撻棬鐨凞IV闃繪柇嫻姩
checked:true
},{
xtype:'radio',
boxLabel:'濂?,
name:'sex',
id:'female',
itemCls:'sex-female', //鍚戝乏嫻姩,澶勭悊鎺т歡妯帓
clearCls:'allow-float', //鍏佽涓よ竟嫻姩
hideLabel:true //涓嶆樉紺哄墠闈?鎬у埆"鐨勬爣絳?br /> },{
xtype:'textfield',
fieldLabel:'騫撮緞',
name:'n_age',
id:'i_age',
itemCls:'age-field', //鍚戝乏嫻姩,澶勭悊鎺т歡妯帓
width:133
},{
xtype:'textfield',
fieldLabel:'浣忓潃',
name:'n_address',
id:'i_address',
itemCls:'stop-float', //涓嶅厑璁告誕鍔?緇撴潫鎺т歡妯帓
width:320
}],
buttons:[{
text:'紜畾',
handler:onOK //瀹為檯搴旂敤涓鑸槸澶勭悊fp.getForm.submit()浜嬩歡
}, {
text:'閲嶇疆',
handler:function(){ fp.getForm().reset(); }
}],
keys:[{ //澶勭悊閿洏鍥炶濺浜嬩歡
key:Ext.EventObject.ENTER,
fn:onOK,
scope:this
}]
});

//紜畾鎸夐挳浜嬩歡,榪欓噷鍙槸綆鍗曡幏鍙栧悇鎺т歡鍊?瀹為檯搴旂敤涓鑸拰鍚庡彴鑴氭湰緇撳悎
function onOK() {
var strMsg;
strMsg = ‘濮撳悕錛?#8217; + fp.getComponent(’i_username’).getValue() + ‘錛屾у埆錛?#8217;;
if (fp.getComponent(’male’).checked) strMsg += ‘鐢?#8217;;
if (fp.getComponent(’female’).checked) strMsg += ‘濂?#8217;;
strMsg += ‘錛屽勾榫勶細’ + fp.getComponent(’i_age’).getValue();
strMsg += ‘錛屼綇鍧錛?#8217; + fp.getComponent(’i_address’).getValue();
alert(strMsg);
}

//鍒涘緩涓葷獥鍙?br /> new Ext.Window({
title:’Ext涓璅ormPanel闈㈡澘鍙奆orm鎺т歡妯帓嫻嬭瘯(CSS)’,
width:400,
closable:false,
collapsible:true,
draggable:false,
resizable:false,
modal:true,
border:false,
items:[fp],
buttons:[]
}).show();
});
</script>
</body>
</html>



Loy Fu 2008-10-15 13:03 鍙戣〃璇勮
]]>
Java涓嬬殑妗嗘灦緙栫▼涔媍glib鐨勫簲鐢?/title><link>http://www.tkk7.com/fuhoujun/archive/2008/10/08/233074.html</link><dc:creator>Loy Fu</dc:creator><author>Loy Fu</author><pubDate>Wed, 08 Oct 2008 02:38:00 GMT</pubDate><guid>http://www.tkk7.com/fuhoujun/archive/2008/10/08/233074.html</guid><wfw:comment>http://www.tkk7.com/fuhoujun/comments/233074.html</wfw:comment><comments>http://www.tkk7.com/fuhoujun/archive/2008/10/08/233074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fuhoujun/comments/commentRss/233074.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fuhoujun/services/trackbacks/233074.html</trackback:ping><description><![CDATA[<table cellspacing="0" cellpadding="0" width="96%" align="center" border="0"> <tbody> <tr> <td class="d_font3" valign="bottom" align="center" height="24">Java涓嬬殑妗嗘灦緙栫▼涔媍glib鐨勫簲鐢?/td> </tr> <tr> <td bgcolor="#e3e3e3" height="3"></td> </tr> <tr> <td> </td> </tr> <tr> <td class="d_font4"> <p>Proxy鍙互鐪嬩綔鏄井鍨嬬殑AOP錛屾槑鐧芥彁渚涗簡鍦ㄧ戶鎵垮拰濮旀墭涔嬪鐨勭涓変釜浠g爜灝佽閫斿緞錛屽彧瑕佹湁瓚沖鐨勬兂璞″姏錛屽彲浠ュ仛寰楅潪甯稿ソ鐜╋紝Spring鐨勬簮鐮侀噷鐢≒roxy灝辯敤寰楀緢闅忎究錛岀湅寰楁垜闈炲父鐪肩孩銆傚彲鎯淧roxy蹇呴』鍩轟簬鎺ュ彛銆傚洜姝pring鐨勫仛娉曪紝鍩轟簬鎺ュ彛鐨勭敤proxy,鍚﹀垯灝辯敤cglib銆侫OP涔堬紝涓鑸皬浜嬮潪compoent涓綰х殑灝變笉楹葷儲AspectJ鍑烘墜浜嗐?/p> <p>cglib鐨凟nhancer璇磋搗鏉ョ濂囷紝鐢ㄨ搗鏉ヤ竴欏電焊涓嶅埌灝辮瀹屼簡銆?/p> <p>瀹冪殑鍘熺悊灝辨槸鐢‥nhancer鐢熸垚涓涓師鏈夌被鐨勫瓙綾伙紝騫朵笖璁劇疆濂絚allback鍒皃roxy錛?鍒欏師鏈夌被鐨勬瘡涓柟娉曡皟鐢ㄩ兘浼氳漿涓鴻皟鐢ㄥ疄鐜頒簡MethodInterceptor鎺ュ彛鐨刾roxy鐨刬ntercept() 鍑芥暟錛?/p> <p> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre> <p><span style="color: #0000ff">public</span><span style="color: #000000"> Object intercept(Object o,Method method,Object[] args,MethodProxy proxy)</span></p> </pre> </td> </tr> </tbody> </table> </p> 鍦╥ntercept()鍑芥暟閲岋紝浣犲彲浠ュ湪鎵цObject result=proxy.invokeSuper(o,args);鏉ユ墽琛屽師鏈夊嚱鏁幫紝鍦ㄦ墽琛屽墠鍚庡姞鍏ヨ嚜宸辯殑涓滆タ錛屾敼鍙樺畠鐨勫弬鏁板鹼紝涔熷彲浠ョ瀿澶╄繃嫻鳳紝瀹屽叏騫插埆鐨勩傝鐧戒簡錛屽氨鏄疉OP涓殑around advice銆?<br /> <p>AOP娌℃湁鍑虹幇浠ュ墠錛岃棰嗗煙緇忓吀鐨勮璁℃ā寮忔槸Decorator錛屽儚Java IO Stream鐨勮璁″氨鏄姝ゃ備笉榪囷紝濡傛灉涓烘瘡涓狣AO, 姣忎釜鏂規硶鐨勫啓Decorator鍑芥暟浼氬啓姝諱漢鐨勶紝鎵浠ョ敤涓奵glib鐨勫ソ澶勬槸涓嬈¤繃鎷︽埅鎵鏈夋柟娉曘?nbsp;<br /> <br /> 鍙﹀錛宑glib闄や簡Enhancer涔嬪錛岃繕鏈塀ulkBean鍜孴ransform錛岄兘鏄疕ibernate鎸佷箙鍖栫殑鍩虹錛屼絾鏂囨。璐箯錛屼竴鏃惰繕娌″幓鐪嬫庝箞鐢ㄣ?br /> <br /> 1.AOP閲岃浜嗕竴鐧鵑亶鍟婁竴鐧鵑亶鐨刲og aspect鍦╟glib鏄繖鏍峰仛鐨勶細</p> <p> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre> <p><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> LogDAOProxy </span><span style="color: #0000ff">implements</span><span style="color: #000000"> MethodInterceptor<br />    {<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> Logger log</span><span style="color: #000000">=</span><span style="color: #000000">Logger.getLogger(LogDAOProxy.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> Enhancer enhancer</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> Enhancer();<br />         </span><span style="color: #008000">//</span><span style="color: #008000">榪斿洖DAO鐨勫瓙綾?/span><span style="color: #008000"><br /> </span><span style="color: #000000">       </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object getDAO(Class clz)<br />        {<br />            enhancer.setSuperclass(clz);<br />            enhancer.setCallback(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> enhancer.create();<br />        }<br />        </span><span style="color: #008000">//榛樿</span><span style="color: #008000">鐨勬嫤鎴柟娉?/span><span style="color: #008000"><br /> </span><span style="color: #000000">      </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object intercept(Object o,Method method,Object[] args,</span></p> <p><span style="color: #000000"> MethodProxy proxy) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Throwable<br />       {<br />            log.info(</span><span style="color: #000000">"</span><span style="color: #000000">璋冪敤鏃ュ織鏂規硶</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">method.getName());<br />            Object result</span><span style="color: #000000">=</span><span style="color: #000000">proxy.invokeSuper(o,args);<br />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> result;<br />       }<br />    }</span></p> </pre> </td> </tr> </tbody> </table> <br /> 搴旂敤鐨勪唬鐮侊細</p> <p> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre> <p>LogDAOProxy proxy <span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> LogDAOProxy();<br />   GoodsDAO  dao </span><span style="color: #000000">=</span><span style="color: #000000"> (GoodsDAO)proxy.getDAO(GoodsDAO.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />   dao.insert(goods);</span></p> </pre> </td> </tr> </tbody> </table> <br /> 2.鑰屽湪Spring鐨勭鐞嗕笅搴旇鐣ュ姞淇敼鐨勯珮綰ecorator</p> <p>涓婇潰鐨勪緥瀛愮敤<span style="color: #0000ff">return</span><span style="color: #000000"> enhancer.create();鍒涘緩瀛愮被瀹炰緥錛屼絾鍦⊿pring綆$悊涓嬶紝涓浜汢ean鐨勫疄渚嬪繀欏葷敱Spring鏉ュ垱寤哄拰綆$悊錛岃屼笉鐢眅nhancer鏉ュ垱寤虹殑銆傛墍浠ユ垜瀵逛笂榪扮敤娉曠暐鍔犱慨鏀癸紝浣垮畠鐪熸褰撲竴涓狿roxy鐨勮鑹詫紝璇峰姣旈粦浣撳瓧鐨勯儴鍒嗐?/span></p> <p><span style="color: #000000"> <table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="black" border="1"> <tbody> <tr> <td class="code" bgcolor="#e6e6e6"> <pre> <p><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> LogDAOProxy </span><span style="color: #0000ff">implements</span><span style="color: #000000"> MethodInterceptor<br />   {<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> Logger log</span><span style="color: #000000">=</span><span style="color: #000000">Logger.getLogger(LogDAOProxy.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> Object dao</span><span style="color: #000000">=</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />        </span><span style="color: #0000ff">private</span><span style="color: #000000"> Enhancer enhancer</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000"> Enhancer();<br />         </span><span style="color: #008000">//</span><span style="color: #008000">榪斿洖DAO鐨勫瓙綾?/span><span style="color: #008000"><br /> </span><span style="color: #000000">       </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object getDAO(Class clz,Object dao)<br />        {<br />            </span><span style="color: #0000ff">this</span><span style="color: #000000">.dao </span><span style="color: #000000">=</span><span style="color: #000000"> dao;<br />            enhancer.setSuperclass(clz);<br />            enhancer.setCallback(</span><span style="color: #0000ff">this</span><span style="color: #000000">);<br />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> enhancer.create();<br />        }      <br />        </span><span style="color: #008000">//</span><span style="color: #008000">榛樿鐨勬嫤鎴柟娉?/span><span style="color: #008000"><br /> </span><span style="color: #000000">      </span><span style="color: #0000ff">public</span><span style="color: #000000"> Object intercept(Object o,Method method,Object[] args,</span></p> <p><span style="color: #000000"> MethodProxy proxy) </span><span style="color: #0000ff">throws</span><span style="color: #000000"> Throwable<br />       {<br />            log.info(</span><span style="color: #000000">"</span><span style="color: #000000">璋冪敤鏃ュ織鏂規硶</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">method.getName());<br />            Object result</span><span style="color: #000000">=</span><span style="color: #000000">proxy.invoke(dao, args);<br />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> result;<br />       }<br /> }</span></p> </pre> </td> </tr> </tbody> </table> <br /> </span>鍙錛屽師鏉ユā寮忛噷鍦╣etDao()鏃剁敱enhancer鍒涘緩dao錛岃?nbsp;璋冪敤intercept鏃跺垯灝唀nhancer鍒涘緩鐨刣ao浠bject o鍙傛暟浼犲洖銆?br /> 鑰屾柊妯″紡閲岋紝dao鍦╣etDao()鏃朵粠澶栭潰浼犲叆錛宔nhancer.create()榪斿洖鐨勬槸涓涓猵roxy. 鑰岃皟鐢╥ntercept鏃訛紝瀹為檯浼氱敤涔嬪墠浼犲叆鐨刣ao榪涜鎿嶄綔錛岃屽拷鐣bject o鍙傛暟浼犲叆鐨刾roxy銆?/p> <p>鏈夌偣閬楁喚, intercept鍑芥暟閲孧ethodProxy鐨凷ignature鏄浐瀹氱殑錛屽嵆瀹㈡埛濡傛灉璋冪敤foo(String),浣犱笉鍙互鐢╬roxy.invoke鍋鋒崲鎴恌oo(String,String); </p> </td> </tr> </tbody> </table> <img src ="http://www.tkk7.com/fuhoujun/aggbug/233074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fuhoujun/" target="_blank">Loy Fu</a> 2008-10-08 10:38 <a href="http://www.tkk7.com/fuhoujun/archive/2008/10/08/233074.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Ext-瀹炵幇甯︽煡璇互鍙婂垎欏電殑鍒楄〃http://www.tkk7.com/fuhoujun/archive/2008/10/04/232399.htmlLoy FuLoy FuSat, 04 Oct 2008 14:43:00 GMThttp://www.tkk7.com/fuhoujun/archive/2008/10/04/232399.htmlhttp://www.tkk7.com/fuhoujun/comments/232399.htmlhttp://www.tkk7.com/fuhoujun/archive/2008/10/04/232399.html#Feedback0http://www.tkk7.com/fuhoujun/comments/commentRss/232399.htmlhttp://www.tkk7.com/fuhoujun/services/trackbacks/232399.html鍓嶅彴錛?

Store:

var resource = new Ext.data.Store({
      fields: ['imgpath','typeImage','title', 'type'],
      url: 'teaching/resource/resourceAction.evi?method=getResourceList',
      reader: new Ext.data.XmlReader(
        {
          record: "Item",
          totalRecords: "TotalCount"
        },
      [{name:'title',mapping: 'title'}, {name:'type',mapping: 'type'},{name:'imgpath',mapping: 'imgpath'},{name:'typeImage',mapping: 'typeImage'} ]
    )
});

resource.addListener('load', function(st, rds, opts) {
        // st 鏄綋鍓嶇殑store, rds鏄鍒扮殑Record[], opts鏄痵tore鐨勯厤緗?br />    for( var c=0; c<rds.length; c++ ) {
       rds[c].set('typeImage', "<img src='./images/33.gif' width='12' height='12' />");
       //寰呭畾綾誨埆錛屽厛瀹氭綾誨埆鍥劇墖
      }
});

resource.load({params:{start:0,limit:10}});

var resourceType = new Ext.data.Store({
,
      reader: new Ext.data.XmlReader({
      record: "Item"
     }, [
      {name: 'resourceTypeId', mapping: 'resourceTypeId'},
       {name: 'resourceType', mapping: 'resourceType'}
      ])
   });
resourceType.load();
var languageType = new Ext.data.Store({
,
      reader: new Ext.data.XmlReader({
      record: "Item"
     }, [
       {name: 'languageTypeId', mapping: 'languageTypeId'},
       {name: 'languageType', mapping: 'languageType'}
      ])
   });
languageType.load();

鍒楄〃錛?

resourcePanel = new Ext.grid.GridPanel({
id: 'resources',
frame: true,
header: false,
width: 288,
autoWidth: true,
autoHeight: true,
loadMask:{msg:'姝e湪鍔犺澆鏁版嵁錛岃紼嶄警……'},
iconCls:'icon-grid',
viewConfig: { forceFit: true },
   columns:[
  {header: " ",dataIndex: 'typeImage' , width:20},
  {header: "璧勬簮鏍囬", width: 190, sortable: true, dataIndex: 'title'},
  {header: "綾誨埆", width: 80, sortable: true, dataIndex: 'type'}
   ],
  store: resource,
  selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
     bbar: new Ext.PagingToolbar({
  pageSize: 10,
  store: resource,
  displayInfo: false,
  //displayMsg: '鏄劇ず絎?{0} 鏉″埌 {1} 鏉¤褰曪紝涓鍏?{2} 鏉?,
  emptyMsg: "娌℃湁璁板綍" 
      }),
  listeners: {
  rowclick:function(e) {
   try {
    window.parent.parent.Ext.ux.MyTips.msg("鎻愮ず", "鍙屽嚮璇ヨ鍙瑙堣璧勬簮");
    } catch(e) {}
    },
  rowdblclick:function(g, rIdx, e) {
   var rd = g.getStore().getAt(rIdx);
   var html = "<img src='./images/" + rd.get('imgpath') + "' />";
  window.parent.showWin({
      layout: 'fit',
      maximizable: true,
      title: rd.get('title'),
      width: 400,
      height: 400,
      //modal: true,
      //closeAction: 'hide',
      plain: true,
      items: [ {html: html} ]
    });
  }
}
});

FormPanel:

var rform = new Ext.form.FormPanel({
              id:'rform',
           header: false,
           frame: true,
           hideBorders: false,
           items: [
            new Ext.form.TextField({
             fieldLabel: '鍏抽敭瀛?,
             name:'keyword'
            }),
            new Ext.form.ComboBox({
             fieldLabel: '璧勬簮綾誨埆',
             mode: 'local',
             triggerAction: 'all',
             store: resourceType,
             typeAhead: true,
             hiddenName:'resourceTypeId',
             displayField: 'resourceType',
             valueField: 'resourceTypeId',
             readOnly: true,
             selectOnFocus: true
            }),
            new Ext.form.ComboBox({
             fieldLabel: '璇█',
             mode: 'local',
             triggerAction: 'all',
             typeAhead: true,
             hiddenName:'languageTypeId',
             displayField:'languageType',
             valueField:'languageTypeId',
             readOnly: true,
             selectOnFocus: true,
             store:languageType
            }),
            new Ext.Panel({
             layout: 'table',
             buttonAlign: 'center',
             layoutConfig: { colspan: 3 },
             buttons:[{text: '鎼?nbsp; 瀵?,
              handler: function() {
                             var keyword = Ext.get('keyword').dom.value;
                             var resourceTypeId = Ext.get('resourceTypeId').dom.value;
                             var languageTypeId = Ext.get('languageTypeId').dom.value;
                      resource.reload({params:{start:0,limit:3,keyword:keyword,resourceTypeId:resourceTypeId,languageTypeId:languageTypeId}});
   //榪欓噷涓嶇敤鍐嶅啓ajax錛孍xt宸茬粡灝佽浜哸jax錛屽彧瑕佹妸鍙傛暟浼犺繘鍘誨氨琛屼簡  
              }},
              {
                text: '閲?nbsp; 緗?,
                handler: function() {
                   Ext.getCmp('rform').form.reset();
               }
               }
              ]
            })
           ]
          })

鍚庡彴錛?

public ActionForward getResourceList(ActionMapping mapping,
   ActionForm form, HttpServletRequest request,
   HttpServletResponse response) throws IOException {

  Document document = DocumentHelper.createDocument();
  String start = request.getParameter("start");
  String limit = request.getParameter("limit");
  String keyword = request.getParameter("keyword");
  String resourceTypeId = request.getParameter("resourceTypeId");
  String languageTypeId = request.getParameter("languageTypeId");

  List<HqlCondition> hqlFilter = new LinkedList<HqlCondition>();
  if(keyword != null && keyword.length()>0){
   hqlFilter.add( new HqlCondition("and", "rs.title", "like", "%" + keyword + "%", HqlCondition.String) );
   hqlFilter.add( new HqlCondition("or", "rs.remarks", "like", "%" + keyword + "%", HqlCondition.String) );
  }
  if(resourceTypeId != null && resourceTypeId.length()>0){
   hqlFilter.add( new HqlCondition("and", "rs.resourceType.resourceTypeId", "=", new Long(resourceTypeId), HqlCondition.Long) );
  }
  if(languageTypeId != null && languageTypeId.length()>0){
   hqlFilter.add( new HqlCondition("and", "rs.languageType.languageTypeId", "=", new Integer(languageTypeId), HqlCondition.Integer) );
  }
  int pageno =1;
  int pagesize = 10;
  if(limit != null && limit.length()>0){
      pagesize = Integer.parseInt(limit);
  }

  if(!start.equalsIgnoreCase("0") && start != null && start.length()>0){
     int bpos = Integer.parseInt(start);
     pageno = (bpos + pagesize)/pagesize;
  }
  int total = this.rse.getResourceTotalCount(hqlFilter);
  Collection<BaseVO> coll = this.rse.getResourceList(hqlFilter,pageno,pagesize);
  Iterator<BaseVO> it = coll.iterator();
  while(it != null && it.hasNext()){
   BaseVO bv = it.next();
   ResourceType rt = this.rts.getResourceType(((ResourceType)bv.get("resourceType")).getResourceTypeId());
   bv.set("type", rt.getResourceType());
  }
  document.addElement("type");
  new OutputVOXml().writeXML(total,new LinkedList<BaseVO>(coll), response);
  return null;
}

鏌ョ湅鏇村綺懼僵鍥劇墖

Loy Fu 2008-10-04 22:43 鍙戣〃璇勮
]]>
JSON涓巗truts2 http://www.tkk7.com/fuhoujun/archive/2008/10/04/232324.htmlLoy FuLoy FuSat, 04 Oct 2008 06:45:00 GMThttp://www.tkk7.com/fuhoujun/archive/2008/10/04/232324.htmlhttp://www.tkk7.com/fuhoujun/comments/232324.htmlhttp://www.tkk7.com/fuhoujun/archive/2008/10/04/232324.html#Feedback2http://www.tkk7.com/fuhoujun/comments/commentRss/232324.htmlhttp://www.tkk7.com/fuhoujun/services/trackbacks/232324.html鎻愪緵鐨勪竴涓彃浠跺寘錛屽彲浠ユ妸Action涓殑鏁版嵁浠?/span>JSON鍋氫釜灝佽鐒跺悗榪斿洖銆?/span>

瀹冧細灝嗘暣涓?/span>action涓殑鍙橀噺杞寲涓?/span>JSON鏁版嵁(鏍瑰璞″湪JSON涓暟鎹坊鍔犱竴涓?/span>”root”鏍囪瘑)銆傚鏋滆浣跨敤瀹冿紝Action蹇呴』閬靛驚浠ヤ笅鍑犵偣錛?/span>

1.       榪斿洖鐨勯〉闈㈢被鍨嬩腑”content-type”蹇呴』鏄?/span>”application/json”.(榪欎釜宸茬粡Internet Community閲囩敤).

2.       JSON鍐呭蹇呴』鏄鍚堟牸寮忚姹傜殑.

3.       Action涓?/span>field蹇呴』鏈?/span>public鐨?/span>set鏂規硶.(鏄笉鏄病鏈?/span>set鏂規硶灝變笉浼氬皢field娣誨姞鍒?/span>JSON鏁版嵁涓紝鏈夊緟楠岃瘉).

4.       瀹冩敮鎸佺殑綾誨瀷鏈?/span>: 鍩烘湰綾誨瀷(int,long...String), Date, List, Map, Primitive Arrays, 鍏跺畠class, 瀵硅薄鏁扮粍.

5.       鍦?/span>JSON涓換浣曠殑Object浼氳灝佽鍦?/span>list鎴?/span>map涓紝鏁版嵁浼氳灝佽紼?/span>Long錛屽鏋滄槸鍚湁鐨勬暟鎹垯浼氳灝佽紼?/span>Double錛屾暟緇勪細琚皝瑁呯▼List.

涓嬮潰緇欏嚭JSON鐨勬暟鎹牸寮?/span>:

{

   "doubleValue": 10.10,

   "nestedBean": {

      "name": "Mr Bean"

   },

   "list": ["A", 10, 20.20, {

      "firstName": "El Zorro"

   }],

   "array": [10, 20]

}

璇存槑:

a.       榪欎釜鎻掍歡鏀寔浠ヤ笅鍑犱釜娉ㄩ噴:

娉ㄩ噴鍚?/span>

綆浠?/span>

榛樿鍊?/span>

搴忓垪鍖?/span>

鍙嶅簭鍒楀寲

name

閰嶇疆JSON涓?/span>name

empty

yes

no

serialize

鍦?/span>serialization涓?/span>

true

yes

no

deserialize

鍦?/span>deserialization涓?/span>

true

no

yes

format

鏍煎紡鍖?/span>Date瀛楁

"yyyy-MM-dd'T'HH:mm:ss"

yes

yes

鍙互閫氳繃閰嶇疆鏉ユ樉紺烘寚鍑鴻鏀懼湪JSON涓?/span>field錛屽叾涓湁涓嚜宸辯殑楠岃瘉瑙勫垯闇瑕佺爺絀?/span>.

<!-- Result fragment -->

<result type="json">

 <param name="excludeProperties">

    login.password,

    studentList.*".sin

 </param>

</result>

<!-- Interceptor fragment -->

<interceptor-ref name="json">

 <param name="enableSMD">true</param>

 <param name="excludeProperties">

    login.password,

    studentList.*".sin

 </param>

</interceptor-ref>

b.       鏍瑰璞?/span>

 <result type="json">

 <param name="root">

    person.job

 </param>

</result>

涔熷彲浠ヤ嬌鐢ㄦ嫤鎴櫒閰嶇疆鎿嶄綔鐖跺璞?/span>

<interceptor-ref name="json">

 <param name="root">bean1.bean2</param>

</interceptor-ref>

c.       灝?/span>JSON鏁版嵁鐢ㄦ敞閲婂皝瑁?/span>

濡傛灉wrapWithComments璁劇疆涓?/span>true(榛樿鍊間負false)錛屽垯鐢熸垚鐨?/span>JSON鏁版嵁浼氬彉鎴愯繖鏍鳳細

/* {

   "doubleVal": 10.10,

   "nestedBean": {

      "name": "Mr Bean"

   },

   "list": ["A", 10, 20.20, {

      "firstName": "El Zorro"

   }],

   "array": [10, 20]

} */

榪欐牱鍋氬彲浠ラ伩鍏?/span>js涓竴浜涙綔鍦ㄧ殑椋庨櫓錛屼嬌鐢ㄦ椂闇瑕?/span>:

Var responseObject = eval("("+data.substring(data.indexOf(""/"*")+2, data.lastIndexOf(""*"/"))+")");

d.       鐖剁被

“root”瀵硅薄涓埗綾葷殑field涓嶄細榛樿瀛樻斁鍒?/span>JSON鏁版嵁涓紝濡傛灉涓嶆兂榪欐牱鍋氾紝闇瑕佸湪閰嶇疆鏃舵寚瀹?/span>ignoreHierarchy涓?/span>false:

<result type="json">

 <param name="ignoreHierarchy">false</param>

</result>

e.       鏋氫婦綾誨瀷

榛樿澶勭悊鏋氫婦綾誨瀷鏃訛紝浼氳澶勭悊鎴?/span>JSON鏁版嵁涓?/span>name絳変簬鏋氫婦涓?/span>value鑰?/span>value絳変簬鏋氫婦涓?/span>name.

public enum AnEnum {

     ValueA,

     ValueB

 }

 JSON: "myEnum":"ValueA"

濡傛灉鍦ㄥ鐞嗘灇涓劇被鍨嬫椂錛屽湪xml涓厤緗簡enumAsBean錛屽垯浼氳褰撲綔涓涓?/span>Bean澶勭悊錛屽湪JSON鏁版嵁涓細鏈変竴涓壒鍒殑灞炴?/span>”_name”鍊間負name().榪欎釜鏋氫婦涓殑鎵鏈夊睘鎬ч兘浼氳澶勭悊.

public enum AnEnum {

     ValueA("A"),

     ValueB("B");

     private String val;

     public AnEnum(val) {

        this.val = val;

     }

     public getVal() {

        return val;

     }

   }

 JSON: myEnum: { "_name": "ValueA", "val": "A" }

Xml涓厤緗?/span>:

<result type="json">

 <param name="enumAsBean">true</param>

</result>

f.        渚嬪瓙

a)         Action

import java.util.HashMap;

import java.util.Map;

import com.opensymphony.xwork2.Action;

public class JSONExample {

    private String field1 = "str";

    private int[] ints = {10, 20};

    private Map map = new HashMap();

    private String customName = "custom";

    //'transient' fields are not serialized

    private transient String field2;

    //fields without getter method are not serialized

    private String field3;

    public String execute() {

        map.put("John", "Galt");

        return Action.SUCCESS;

    }

    public String getField1() {

        return field1;

    }

    public void setField1(String field1) {

        this.field1 = field1;

    }

    public int[] getInts() {

        return ints;

    }

    public void setInts(int[] ints) {

        this.ints = ints;

    }

    public Map getMap() {

        return map;

    }

    public void setMap(Map map) {

        this.map = map;

    }

    @JSON(name="newName")

    public String getCustomName() {

        return this.customName;

    }

}

b)        Xml閰嶇疆

 <?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

 <package name="example" extends="json-default">

     <action name="JSONExample" class="example.JSONExample">

        <result type="json"/>

     </action>

 </package>

</struts>

榪欓噷鏈変袱涓湴鏂歸渶瑕佹敞鎰?/span>:

1)      闇瑕佺戶鎵?/span>json-default鍖?/span>

2)      <result>絳劇殑瀹氫箟

c)         JSON鏁版嵁

 { 

   "field1" : "str",

   "ints": [10, 20],

   "map": {

       "John":"Galt"

   },

   "newName": "custom"

}

d)        JSON RPC

JSON鎻掍歡鍙互鍦?/span>js涓皟鐢?/span>action鏂規硶錛岃繑鍥炴墽琛岀粨鏋溿傝繖涓凡緇忓湪dojo涓湁浜嗗疄鐜幫紝鍙互鐢?/span>Simple Method Definition璋冪敤榪滅▼鏈嶅姟銆傛潵涓璧風湅鐪嬩笅闈㈢殑渚嬪瓙錛?/span>

棣栧厛鍐欎竴涓?/span>Action錛?/span>

package smd;

import com.googlecode.jsonplugin.annotations.SMDMethod;

import com.opensymphony.xwork2.Action;

public class SMDAction {

    public String smd() {

        return Action.SUCCESS;

    }

    @SMDMethod

    public Bean doSomething(Bean bean, int quantity) {

        bean.setPrice(quantity * 10);

        return bean;

    }

}

e)         鏂規硶蹇呴』鐢?/span>SMDMethod鍔犱笂娉ㄨВ錛岃繖鏍鋒墠鑳借榪滅▼璋冪敤錛屼負浜嗗畨鍏ㄥ洜绱犮傝繖涓柟娉曚細浜х敓涓涓?/span>bean瀵硅薄錛屽疄鐜頒慨鏀逛環鏍肩殑鍔熻兘銆?/span>Action琚坊鍔犱笂SMD娉ㄨВ浼氱敓鎴愪竴涓?/span>SMD錛屽悓鏃跺弬鏁頒篃浼氳鍔犱笂SMDMethodParameter娉ㄨВ銆傚儚浣犳墍鐪嬪埌鐨勶紝Action涓畾涔変簡涓涓┖鏂規硶錛?/span>smd銆傝繖涓柟娉曟槸浣滀負Simple Method Definition (瀹氫箟class涓彁渚涚殑鏈嶅姟)錛屽湪struts.xml閰嶇疆<result>鏃朵嬌鐢?/span>type灞炴у間負”json”銆?/span>

涓嬮潰鏄?/span>bean鐨勫畾涔夛細

package smd;

public class Bean {

    private String type;

    private int price;

    public String getType() {

        return type;

    }

    public void setType(String type) {

        this.type = type;

    }

    public int getPrice() {

        return price;

    }

    public void setPrice(int price) {

        this.price = price;

    }

}

Xml鏂囦歡:

<package name="RPC" namespace="/nodecorate" extends="json-default">

    <action name="SMDAction" class="smd.SMDAction" method="smd">

        <interceptor-ref name="json">

            <param name="enableSMD">true</param>

        </interceptor-ref>

        <result type="json">

             <param name="enableSMD">true</param>

        </result>

    </action>

</package>

榪欓噷闇瑕佹敞鎰忎竴鐐?/span>:” enableSMD”榪欎釜蹇呴』鍦?/span>interceptor鍜?/span>result閮借閰嶇疆.

Js浠g爜:

<s:url id="smdUrl" namespace="/nodecorate" action="SMDAction" />

<script type="text/javascript">

    //load dojo RPC

    dojo.require("dojo.rpc.*");

    //create service object(proxy) using SMD (generated by the json result)

    var service = new dojo.rpc.JsonService("${smdUrl}");

    //function called when remote method returns

    var callback = function(bean) {

        alert("Price for " + bean.name + " is " + bean.price);

    };

    //parameter

    var bean = {name: "Mocca"};

    //execute remote method

    var defered = service.doSomething(bean, 5);

    //attach callback to defered object

    defered.addCallback(callback);

</script>

JsonService浼氬彂鍑轟竴涓姹傚埌action鍔犺澆SMD錛屽悓鏃惰繙紼嬫柟娉曚細榪斿洖涓涓?/span>JSON瀵硅薄錛岃繖涓繃紼嬫槸Dojo緇?/span>action涓殑鏂規硶鍒涘緩浜嗕竴涓?/span>Proxy銆傚洜涓鴻繖鏄紓姝ヨ皟鐢ㄨ繃紼嬶紝褰撹繙紼嬫柟娉曟墽琛岀殑鏃跺欙紝瀹冧細榪斿洖涓涓璞″埌callback鏂規硶涓?/span>

f)         浠g悊鐨勫璞?/span>

褰撲嬌鐢ㄧ殑娉ㄨВ涓嶆槸緇ф壙鑷?/span>Java錛屽彲鑳戒綘浣跨敤浠g悊浼氬嚭鐜頒竴浜涢棶棰樸傛瘮濡傦細褰撲綘浣跨敤aop鎷︽埅浣犵殑action鐨勬椂鍊欍傚湪榪欑鎯呭喌涓嬶紝榪欎釜鎻掍歡涓嶄細鑷姩鍙戠幇娉ㄨВ鐨勬柟娉曘備負浜嗛伩鍏嶈繖縐嶆儏鍐靛彂鐢燂紝浣犻渶瑕佸湪xml涓厤緗?/span>ignoreInterfaces涓?/span>false錛岃繖鏍鋒彃浠朵細鑷繁鏌ユ壘娉ㄨВ鐨勬墍鏈夋帴鍙e拰鐖剁被銆?/span>

娉ㄦ剰錛氳繖涓弬鏁板彧鏈夊湪Action鎵ц鐨勮繃紼嬫槸閫氳繃娉ㄨВ鏉ヨ繍琛岀殑鏃跺欐墠搴旇璁句負false銆?/span>

<action name="contact" class="package.ContactAction" method="smd">

   <interceptor-ref name="json">

      <param name="enableSMD">true</param>

      <param name="ignoreInterfaces">false</param>

   </interceptor-ref>

   <result type="json">

      <param name="enableSMD">true</param>

      <param name="ignoreInterfaces">false</param>

   </result>

   <interceptor-ref name="default"/>

</action>



Loy Fu 2008-10-04 14:45 鍙戣〃璇勮
]]>
extjs+struts2+spring渚嬪瓙http://www.tkk7.com/fuhoujun/archive/2008/10/04/232319.htmlLoy FuLoy FuSat, 04 Oct 2008 06:35:00 GMThttp://www.tkk7.com/fuhoujun/archive/2008/10/04/232319.htmlhttp://www.tkk7.com/fuhoujun/comments/232319.htmlhttp://www.tkk7.com/fuhoujun/archive/2008/10/04/232319.html#Feedback2http://www.tkk7.com/fuhoujun/comments/commentRss/232319.htmlhttp://www.tkk7.com/fuhoujun/services/trackbacks/232319.htmlstruts2鐨?span class="hilite2">json plugin鐨勪綅緗湪錛歨ttp://code.google.com/p/jsonplugin/
涓嬭澆json plugin鐨刯ar鍖咃紝鏀懼埌/WEB-INF/lib/鐩綍涓嬪氨鍙互浜?br />
Spring + Struts + JPA鐨勯」鐩粨鏋勫鍏朵粬渚嬪瓙涓殑涓鑷?br /> 棣栧厛鏄痺eb.xml
xml 浠g爜
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app id="WebApp_ID" version="2.4"  
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  6.     <display-name>quickstart</display-name>  
  7.     <filter>  
  8.         <filter-name>struts2</filter-name>  
  9.         <filter-class>  
  10.             org.apache.struts2.dispatcher.FilterDispatcher  
  11.         </filter-class>  
  12.     </filter>  
  13.     <filter>  
  14.         <filter-name>jpaFilter</filter-name>  
  15.         <filter-class>  
  16.             org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter  
  17.         </filter-class>  
  18.         <init-param>  
  19.             <param-name>entityManagerFactory</param-name>  
  20.             <param-value>entityManagerFactory</param-value>  
  21.         </init-param>  
  22.     </filter>  
  23.     <filter-mapping>  
  24.         <filter-name>jpaFilter</filter-name>  
  25.         <url-pattern>*.action</url-pattern>  
  26.     </filter-mapping>  
  27.     <filter-mapping>  
  28.         <filter-name>struts2</filter-name>  
  29.         <url-pattern>/*</url-pattern>  
  30.     </filter-mapping>  
  31.     <welcome-file-list>  
  32.         <welcome-file>index.jsp</welcome-file>  
  33.     </welcome-file-list>  
  34.     <listener>  
  35.         <listener-class>  
  36.             org.springframework.web.context.ContextLoaderListener  
  37.         </listener-class>  
  38.     </listener>  
  39. </web-app>  

鍔犲叆jpaFilter錛屾槸涓轟簡涓嶈hibernate鐨剆ession榪囨棭鍏抽棴錛屽洜涓烘湁鐨刟ction浼氶氳繃ajax鍔ㄦ佽皟鐢ㄣ?br /> 涓嬮潰鏄痵truts.xml錛屾敞鎰弒truts.xml闇瑕佹斁鍦ㄦ簮浠g爜鐩綍涓嬮潰錛?br />
xml 浠g爜
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5. <struts>  
  6.     <constant name="struts.objectFactory" value="spring" />  
  7.     <constant name="struts.devMode" value="true" />  
  8.     <constant name="struts.i18n.encoding" value="UTF-8"/>  
  9.     <package name="person" extends="json-default">  
  10.         <action name="list" method="execute" class="personaction">  
  11.             <result type="json"/>  
  12.         </action>         
  13.     </package>  
  14. </struts>  

榪欓噷娉ㄦ剰錛?/span>
struts.objectFactory鍛婅瘔struts鎵鏈夌殑action閮藉埌spring鐨勪笂涓嬫枃閲岄潰鍘繪壘錛屽彟澶栬繕闇瑕佹敞鎰忥紝鎴戜滑鑷繁鐨勫寘瑕佺戶鎵胯嚜json-default錛岃繖鏍鋒墠鍙互鍦╮esult鐨則ype灞炴т腑浣跨敤json銆?br /> 涓嬮潰鏄痵pring鐨勯厤緗枃浠禷pplicationContext.xml錛?br />
xml 浠g爜
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="  
  7.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd  
  8.     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd  
  9.     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">  
  10.     <bean  
  11.         class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />  
  12.     <bean id="entityManagerFactory"  
  13.         class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  
  14.         <property name="dataSource" ref="dataSource" />  
  15.         <property name="jpaVendorAdapter">  
  16.             <bean  
  17.                 class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
  18.                 <property name="database" value="MYSQL" />  
  19.                 <property name="showSql" value="true" />  
  20.             </bean>  
  21.         </property>  
  22.     </bean>  
  23.     <bean id="dataSource"  
  24.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  25.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  26.         <property name="url" value="jdbc:mysql://localhost/extjs" />  
  27.         <property name="username" value="root" />  
  28.         <property name="password" value="" />  
  29.     </bean>  
  30.   
  31.       
  32.     <bean id="transactionManager"  
  33.         class="org.springframework.orm.jpa.JpaTransactionManager">  
  34.         <property name="entityManagerFactory"  
  35.             ref="entityManagerFactory" />  
  36.     </bean>  
  37.     <tx:annotation-driven transaction-manager="transactionManager" />  
  38.     <!--Service 寮濮?nbsp;-->  
  39.     <bean id="personService" class="com.myext.service.impl.PersonServiceJpaImpl"/>  
  40.     <bean id="personaction" class="com.myext.action.PersonPageAction">  
  41.         <property name="person" ref="personService"/>  
  42.     </bean>  
  43. </beans>  

榪欓噷鐨刡ean personaction鍜宻trutx.xml涓殑action class涓鑷村氨鍙互浜嗭紝涓嬮潰鏄唬鐮侊細
action錛?br />
java 浠g爜
  1. package com.myext.action;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.myext.service.PersonService;
  5. public class PersonPageAction {
  6. private int limit=10;
  7. private int start=0;
  8. private PersonService person;
  9. private int total=0;
  10. private List persons = new ArrayList();
  11. private boolean success=true;
  12. public boolean getSuccess(){
  13. return this.success;
  14. }
  15. public void setLimit(int limit) {
  16. this.limit = limit;
  17. }
  18. public void setStart(int start) {
  19. this.start = start;
  20. }
  21. public void setPerson(PersonService person) {
  22. this.person = person;
  23. }
  24. public int getTotal() {
  25. return total;
  26. }
  27. public void setTotal(int total) {
  28. this.total = total;
  29. }
  30. public List getPersons() {
  31. return persons;
  32. }
  33. public void setPersons(List persons) {
  34. this.persons = persons;
  35. }
  36. public String execute(){
  37. this.total = person.getTotal();
  38. this.persons = person.getPage(this.start, this.limit);
  39. return "success";
  40. }
  41. }
service錛?br />
java 浠g爜
  1. package com.myext.service.impl;
  2. import java.util.List;
  3. import javax.persistence.EntityManager;
  4. import javax.persistence.PersistenceContext;
  5. import javax.persistence.Query;
  6. import com.myext.model.Person;
  7. import com.myext.service.PersonService;
  8. public class PersonServiceJpaImpl implements PersonService {
  9. private EntityManager em;
  10. private static String poname = Person.class.getName();
  11. @PersistenceContext
  12. public void setEntityManager(EntityManager em){
  13. this.em = em;
  14. }
  15. @SuppressWarnings("unchecked")
  16. @Override
  17. public List getPage( int start, int limit) {
  18. Query q = this.em.createQuery("from " + poname );
  19. q.setFirstResult(start);
  20. q.setMaxResults(limit);
  21. return q.getResultList();
  22. }
  23. @Override
  24. public int getTotal() {
  25. return this.em.createQuery("from " + poname).getResultList().size();
  26. }
  27. }
欏甸潰鐨勪唬鐮侊細
xml 浠g爜
  1. xml version="1.0" encoding="UTF-8" ?>
  2. <%@ page language="java" contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"%>
  4. >
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  8. <title>Grid3title>
  9. <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css" />
  10. <script type="text/javascript" src="extjs/adapter/ext/ext-base.js">script>
  11. <script type="text/javascript" src="extjs/ext-all.js">script>
  12. <script type="text/javascript" src="extjs/ext-lang-zh_CN.js">script>
  13. head>
  14. <body>
  15. <script type="text/javascript" src="grid3.js">script>
  16. <div id="grid3" >
  17. div>
  18. body>
  19. html>
grid3.js浠g爜
js 浠g爜
  1. /**
  2. * @author fox
  3. */
  4. Ext.onReady(function(){
  5. Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif';
  6. Ext.QuickTips.init();
  7. var sm = new Ext.grid.CheckboxSelectionModel(); //CheckBox閫夋嫨鍒?
  8. var cm = new Ext.grid.ColumnModel([
  9. new Ext.grid.RowNumberer(), //琛屽彿鍒?
  10. sm,
  11. {header:'緙栧彿',dataIndex:'id'},
  12. {header:'鎬у埆',dataIndex:'sex',renderer:function(value){
  13. if(value=='male'){
  14. return "鐢?/span>";
  15. }else{
  16. return "濂?/span>";
  17. }
  18. }}, //澧炲姞鎬у埆錛岃嚜瀹氫箟renderer錛屽嵆鏄劇ず鐨勬牱寮忥紝鍙互鍔爃tml浠g爜錛屾潵鏄劇ず鍥劇墖絳夈?/span>
  19. {header:'鍚嶇О',dataIndex:'name'},
  20. {header:'鎻忚堪',dataIndex:'descn'}
  21. ]);
  22. var ds = new Ext.data.Store({
  23. proxy: new Ext.data.HttpProxy({url:'list.action'}),//璋冪敤鐨勫姩浣?
  24. reader: new Ext.data.JsonReader({
  25. totalProperty: 'total',
  26. root: 'persons',
  27. successProperty :'success'
  28. }, [
  29. {name: 'id',mapping:'id',type:'int'},
  30. {name: 'sex',mapping:'sex',type:'string'},
  31. {name: 'name',mapping:'name',type:'string'},
  32. {name: 'descn',mapping:'descn',type:'string'} //鍒楃殑鏄犲皠
  33. ])
  34. });
  35. var grid = new Ext.grid.GridPanel({
  36. el: 'grid3',
  37. ds: ds,
  38. sm: sm,
  39. cm: cm,
  40. width:700,
  41. height:280,
  42. bbar: new Ext.PagingToolbar({
  43. pageSize: 10,
  44. store: ds,
  45. displayInfo: true,
  46. displayMsg: '鏄劇ず絎?{0} 鏉″埌 {1} 鏉¤褰曪紝涓鍏?{2} 鏉?,
  47. emptyMsg: "娌℃湁璁板綍"
  48. }) //欏佃剼鏄劇ず鍒嗛〉
  49. });
  50. //el:鎸囧畾html鍏冪礌鐢ㄤ簬鏄劇ずgrid
  51. grid.render();//娓叉煋琛ㄦ牸
  52. ds.load({params:{start:0, limit:10}}); //鍔犺澆鏁版嵁
  53. });
娉ㄦ剰錛岃繖閲岀殑gridpanel涓瀹氳璁劇疆楂樺害錛屽惁鍒欐暟鎹槸鏄劇ず涓嶅嚭鏉ョ殑銆?br /> 鏈鍚庡惎鍔╰omcat錛屽湪嫻忚鍣ㄩ噷杈撳叆http://localhost:8080/extjs/grid3.jsp,灝卞彲浠ョ湅鍒版晥鏋?br />


Loy Fu 2008-10-04 14:35 鍙戣〃璇勮
]]>
struts2涓粨鍚坖son鐨勪嬌鐢?/title><link>http://www.tkk7.com/fuhoujun/archive/2008/10/04/232318.html</link><dc:creator>Loy Fu</dc:creator><author>Loy Fu</author><pubDate>Sat, 04 Oct 2008 06:19:00 GMT</pubDate><guid>http://www.tkk7.com/fuhoujun/archive/2008/10/04/232318.html</guid><wfw:comment>http://www.tkk7.com/fuhoujun/comments/232318.html</wfw:comment><comments>http://www.tkk7.com/fuhoujun/archive/2008/10/04/232318.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fuhoujun/comments/commentRss/232318.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fuhoujun/services/trackbacks/232318.html</trackback:ping><description><![CDATA[     鎽樿: http://prototype.conio.net/dist/ 涓嬭澆(瀵笰jax鏀寔鐨刾rototype--js鍑芥暟搴?錛? prototype-1.4.0.js 鎴? prototype-1.4.0.tar.gz   http://code.google.com/p/jsonplugin/downloads/list 涓嬭澆(Struts2...  <a href='http://www.tkk7.com/fuhoujun/archive/2008/10/04/232318.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/fuhoujun/aggbug/232318.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fuhoujun/" target="_blank">Loy Fu</a> 2008-10-04 14:19 <a href="http://www.tkk7.com/fuhoujun/archive/2008/10/04/232318.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Struts2涓殑闆墮厤緗笌CoC錛圕onvention over Configration錛?/title><link>http://www.tkk7.com/fuhoujun/archive/2008/10/04/232312.html</link><dc:creator>Loy Fu</dc:creator><author>Loy Fu</author><pubDate>Sat, 04 Oct 2008 06:08:00 GMT</pubDate><guid>http://www.tkk7.com/fuhoujun/archive/2008/10/04/232312.html</guid><wfw:comment>http://www.tkk7.com/fuhoujun/comments/232312.html</wfw:comment><comments>http://www.tkk7.com/fuhoujun/archive/2008/10/04/232312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/fuhoujun/comments/commentRss/232312.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/fuhoujun/services/trackbacks/232312.html</trackback:ping><description><![CDATA[<strong>鍏抽敭瀛? Struts2 COC</strong> <div id="355xlbp" class="blog_content">鎽樿錛氫粙緇峉truts2涓殑闆墮厤緗紙Zero Configuration錛夛紝浠ュ強濡備綍鐢–OC鏉ユ洿濂藉湴綆鍖朣truts2鐨勯厤緗傚湪絎竴绔狅紝鎴戜嬌鐢∕aven鏉ュ垱寤轟竴涓搗鐐歸」鐩紱絎簩绔狅紝浠ヨ欏圭洰涓轟緥錛岃瑙e浣曚嬌鐢⊿truts2鐨勯浂閰嶇疆錛涚涓夌珷錛岃榪扮浜岀珷涓殑瀹炵幇鏂瑰紡鐨勭己闄鳳紝鐒跺悗璁茶В濡備綍浣跨敤COC鏉ユ敼榪涜繖浜涚己闄鳳紝騫惰繘涓姝ョ畝鍖朣truts2鐨勯厤緗傞檮浠舵槸榪欑瘒鏂囩珷鐢ㄥ埌鐨勭ず渚嬩唬鐮併?br /> <br /> <h2>涓銆佷粠闆跺紑濮?/h2> 榪欓噷錛屾垜灝嗗緩绔嬩竴涓柊鐨勭ず渚嬮」鐩紝浣滀負璁茶В鐨勮搗鐐廣傛垜浣跨敤JDK 6銆丮aven 2銆丒clipse 3.3鏉ュ緩绔嬭繖涓ず渚嬶紝濡傛灉璇昏呭Maven2涓嶇啛涔熸病鍏崇郴錛岃繖鍙槸涓ず渚嬨?br /> 棣栧厛錛岃繍琛屼笅杈圭殑鍛戒護錛?br />                 mvn archetype:create -DgroupId=demo.struts -DartifactId=demo-struts-coc -DarchetypeArtifactId=maven-archetype-webapp<br /> 榪欎細寤虹珛濡備笅鐨勭洰褰曠粨鏋勶細<demo-struts-coc><br />  |- POM.xml<br />  |- src<br />      |- main<br />          |- resources<br />          |- webapp<br />              |- index.jsp<br />              |- WEB-INF<br />                  |- web.xml<br /> 鐒跺悗鎴戜滑鍦╯rc/main鐩綍涓嬫柊寤轟竴涓悕涓簀ava鐨勭洰褰曪紝鐢ㄦ潵鏀劇疆java浠g爜銆傚湪src涓嬪緩绔媡est鐩綍錛屽茍鍦╰est鐩綍涓嬪緩绔媕ava鐩綍錛岀敤鏉ユ斁緗祴璇曚唬鐮併傚彟澶栵紝鎴戣繖涓ず渚嬩笉鎯充嬌鐢↗SP錛屾墍浠ユ垜灝唖rc/main/webapp鐩綍涓嬬殑index.jsp鏀逛負index.html銆?br /> 鐜板湪錛岄渶瑕侀厤緗欏圭洰瑕佺敤鍒板摢浜沴ib銆傚湪POM.xml涓姞鍏truts2-core錛?br /> </demo-struts-coc> <div id="hpbn3jj" class="code_title">xml 浠g爜</div> <div id="tj5txtb" class="dp-highlighter"> <div id="3htv5jh" class="bar"> </div> <ol class="dp-xml"> <li id="xx5xz5v" class="alt"><span><span id="l31f1tr" class="tag"><</span><span id="bzb5z51" class="tag-name">dependency</span><span id="nbd5xf1" class="tag">></span><span>  </span></span> <li id="x35j51v" class=""><span>    <span id="h5fhbjx" class="tag"><</span><span id="v5z1jp5" class="tag-name">groupId</span><span id="xfprdjh" class="tag">></span><span>org.apache.struts</span><span id="rhjvndb" class="tag"></</span><span id="x5jl5hh" class="tag-name">groupId</span><span id="r3n5hpd" class="tag">></span><span>  </span></span> <li id="tjtxzfd" class="alt"><span>    <span id="r5vfh55" class="tag"><</span><span id="5p5b5z5" class="tag-name">artifactId</span><span id="5l55fvb" class="tag">></span><span>struts2-core</span><span id="r5dxr5v" class="tag"></</span><span id="55nhj15" class="tag-name">artifactId</span><span id="rtvzr3n" class="tag">></span><span>  </span></span> <li id="3jlnx5n" class=""><span>    <span id="l3xz5x5" class="tag"><</span><span id="l1v5xnt" class="tag-name">version</span><span id="55dn1lz" class="tag">></span><span>2.0.9</span><span id="x3xrvdt" class="tag"></</span><span id="5t5lp5t" class="tag-name">version</span><span id="rt55l15" class="tag">></span><span>  </span></span> <li id="5hj5llz" class="alt"><span><span id="l55b55b" class="tag"></</span><span id="rj55f5v" class="tag-name">dependency</span><span id="5555h55" class="tag">></span><span>  </span></span> </li> </ol> </div> <br /> 鍙﹀錛屾垜鎯沖湪Eclipse閲屼嬌鐢╦etty鏉ュ惎鍔ㄩ」鐩茍榪涜嫻嬭瘯錛屾墍浠ュ湪POM.xml涓啀鍔犲叆jetty銆乯etty-util銆乻ervlet-api絳夌殑渚濊禆錛岃鎯呰闄勪歡銆?br /> 鎴戝笇鏈涗嬌鐢‥clipse鏉ヤ綔涓鴻繖涓」鐩殑IDE錛屾墍浠ワ紝鎴戝湪鍛戒護琛岀姸鎬佷笅錛岃繘鍏ヨ繖涓」鐩墍鍦ㄧ殑鐩綍錛岃繍琛岋細<br />                 mvn eclipse:eclipse<br /> 鐒跺悗浣跨敤Eclipse瀵煎叆榪欎釜欏圭洰銆傚鏋滀綘鏄涓嬈$敤Eclipse瀵煎叆鐢∕aven鐢熸垚鐨勯」鐩紝閭d綘闇瑕佸湪Eclipse閲岄厤緗竴涓悕鍙玀2_REPO鐨刅ariable錛屾寚鍚戜綘鐨凪aven 2鐨剅epository鐩綍銆傜己鐪佹儏鍐典笅錛屽畠搴旇浣嶄簬${user.home}/.m2/repository銆?br /> OK錛佺幇鍦ㄦ垜浠凡緇忓彲浠ュ湪Eclipse涓繘琛屽伐浣滀簡銆?br /> 淇敼src/main/webapp/WEB-INF/web.xml錛屽姞鍏truts2鐨凢ilterDispatcher騫惰緗甪ilter-mapping銆傚湪榪欎釜紺轟緥涓垜灝唘rl-pattern璁句負"/app/*"錛屼篃灝辨槸璇達紝url鐨勫尮閰嶆槸鍩轟簬璺緞鏉ュ仛鐨勩傝繖鍙槸鎴戠殑涓漢鍠滃ソ鑰屽凡錛屼綘涔熷彲浠ュ皢瀹冭鎴?*"銆?br /> 鏃㈢劧鏄湪璁瞫truts2鐨勯浂閰嶇疆錛屽綋鐒舵槸鍙互涓嶈浠諱綍閰嶇疆鏂囦歡鐨勩備絾鏄負浜嗘洿濂藉湴榪涜“閰嶇疆”錛屾垜榪樻槸寤虹珛浜唖truts.xml鏂囦歡錛堝湪src/main/resources鐩綍涓嬶級銆傛垜涓嶅枩嬈rl鏈鍚庨兘鏈変釜action鍚庣紑錛岀幇鍦紝鎴戝湪struts.xml涓厤緗畇truts.action.extension錛屽皢榪欎釜鍚庣紑鍘繪帀錛?br /> <div id="xrbtv3j" class="code_title">xml 浠g爜</div> <div id="j3jln5t" class="dp-highlighter"> <div id="5lvhjtr" class="bar"> </div> <ol class="dp-xml"> <li id="nzbtvxd" class="alt"><span><span id="5bnx5tr" class="tag"><</span><span id="55n5jpn" class="tag-name">struts</span><span id="fx5rdfd" class="tag">></span><span>  </span></span> <li id="3z5jd1n" class=""><span>    <span id="f5j5dlr" class="tag"><</span><span id="vnpr3fv" class="tag-name">constant</span><span> </span><span id="dz5515r" class="attribute">name</span><span>=</span><span id="dr31vlt" class="attribute-value">"struts.action.extension"</span><span> </span><span id="v5r5z5t" class="attribute">value</span><span>=</span><span id="5b5bt5r" class="attribute-value">""</span><span> </span><span id="3j5jf5v" class="tag">/></span><span>  </span></span> <li id="hxb5vtz" class="alt"><span><span id="x1j55nl" class="tag"></</span><span id="xfp55fd" class="tag-name">struts</span><span id="5fr5t55" class="tag">></span><span>  </span></span> </li> </ol> </div> <br /> 鐒跺悗鎴戝湪src/test/java涓嬪緩绔媎emo/RunJetty.java鏂囦歡錛宮ain鏂規硶濡備笅錛?br /> <div id="n5jf11x" class="code_title">java 浠g爜</div> <div id="djvf35h" class="dp-highlighter"> <div id="35l5nlr" class="bar"> </div> <ol class="dp-j"> <li id="rpln35r" class="alt"><span><span id="3r5dd5j" class="keyword">public</span><span> </span><span id="5p5hbb5" class="keyword">static</span><span> </span><span id="v5rnbl5" class="keyword">void</span><span> main(String[] args) </span><span id="tzd3vdd" class="keyword">throws</span><span> Exception {  </span></span> <li id="bz3ddx5" class=""><span>    Server server = <span id="ft3lxd5" class="keyword">new</span><span> Server(</span><span id="vtvhntv" class="number">8080</span><span>); </span><span id="x5z555z" class="comment">//涔熷彲浠ユ敼鎴愬叾瀹冪鍙?/span><span>  </span></span> <li id="55bhthh" class="alt"><span>    File rootDir = <span id="lblfh55" class="keyword">new</span><span> File(RunJetty.</span><span id="z3ln5p1" class="keyword">class</span><span>.getResource(</span><span id="3b3jvbj" class="string">"/"</span><span>).getPath()).getParentFile().getParentFile();  </span></span> <li id="5zp5555" class=""><span>    String webAppPath = <span id="tj3jd5r" class="keyword">new</span><span> File(rootDir, </span><span id="xvhrlbh" class="string">"src/main/webapp"</span><span>).getPath();  </span></span> <li id="j35f5rp" class="alt"><span>    <span id="5n5tfd5" class="keyword">new</span><span> WebAppContext(server, webAppPath, </span><span id="v3rjv5f" class="string">"/"</span><span>);  </span></span> <li id="3jfhbzf" class=""><span>    server.start();  </span> <li id="b3x5hvd" class="alt"><span>}  </span> </li> </ol> </div> <br /> 鐜板湪錛屽湪Eclipse閲岃繍琛屾垨璋冭瘯榪欎釜RunJetty.java錛岀敤嫻忚鍣ㄦ墦寮http://localhost:8080/鐪嬬湅鍚с傚鏋滀笉鍑洪棶棰橈紝搴旇鍙互璁塊棶鍒皐ebapp鐩綍涓嬬殑index.html浜嗐傛湁浜咼etty錛屼綘榪樺湪鐢∕yEclipse鎴栧叾瀹冩彃浠朵箞錛?br /> <br /> <h2>浜屻侀浂閰嶇疆</h2> 棣栧厛瑕佹緞娓呬竴鐐癸紝榪欓噷璇寸殑闆墮厤緗茍涓嶆槸涓鐐歸厤緗兘娌℃湁錛屽彧鏄閰嶇疆寰堝皯鑰屽凡銆?br /> Struts2錛堟垜鍙敤榪嘢truts 2.0.6鍜?.0.9錛屼笉娓呮鍏跺畠鐗堟湰鏄惁鏀寔闆墮厤緗級寮曞叆浜嗛浂閰嶇疆鐨勬柊鐗規э紝鍏冩暟鎹彲浠ラ氳繃瑙勫垯鍜屾敞瑙f潵琛ㄨ揪錛欰 "Zero Configuration" Struts application or plugin uses no additional XML or properties files. Metadata is expressed through convention and annotation.<br /> 鐩墠錛岃繖涓柊鐗規ц繕鍦ㄦ祴璇曢樁孌碉紝浣嗙粡榪囦竴孌墊椂闂寸殑浣跨敤錛屾垜瑙夊緱榪欎釜鐗規у凡緇忓彲鐢ㄣ備笅闈㈡垜璁蹭竴涓嬪浣曚嬌鐢ㄥ畠銆?br /> 1. Actions鐨勫畾浣?br /> 浠ュ墠闇瑕佸湪xml閰嶇疆鏂囦歡涓厤緗瓵ction鐨刵ame鍜宑lass錛屽鏋滀嬌鐢ㄩ浂閰嶇疆錛屾墍甯︽潵鐨勪竴涓棶棰樺氨鏄浣曞畾浣嶈繖浜汚ction銆傛垜浠渶瑕佸湪web.xml涓壘鍒皊truts2鐨刦ilter鐨勯厤緗紝澧炲姞涓涓悕涓篴ctionPackages鐨刬nit-param錛屽畠鐨勫兼槸涓涓互閫楀彿鍒嗛殧鐨凧ava鍖呭悕鍒楄〃錛屾瘮濡傦細demo.actions1,demo.actions2銆俿truts2灝嗕細鎵弿榪欎簺鍖咃紙鍖呮嫭榪欎簺鍖呬笅杈圭殑瀛愬寘錛夛紝鍦ㄨ繖浜涘寘涓嬶紝鎵鏈夊疄鐜頒簡Action鎺ュ彛鐨勬垨鑰呮槸綾誨悕浠?#8220;Action”緇撳熬鐨勭被閮戒細琚鏌ュ埌錛屽茍琚綋鍋欰ction銆?br /> 浠ュ墠錛屾垜浠啓Action蹇呴』瑕佸疄鐜癆ction鎺ュ彛鎴栬呯戶鎵緼ctionSupport銆備絾鏄紝涓婇潰鎻愬埌鐨勭被鍚嶄互"Action"緇撳熬鐨勭被騫朵笉闇瑕佽繖鏍峰仛錛屽畠鍙互鏄竴涓狿OJO錛孲truts2鏀寔POJO Action錛?br /> 涓嬮潰鏄痑ctionPackages鐨勯厤緗ず渚嬶細<br /> <div id="35r5tbz" class="code_title">xml 浠g爜</div> <div id="ljdfhn3" class="dp-highlighter"> <div id="xdvrjr3" class="bar"> </div> <ol class="dp-xml"> <li id="l55z53l" class="alt"><span><span id="lr315hf" class="tag"><</span><span id="jx5z55d" class="tag-name">filter</span><span id="rxjl3d5" class="tag">></span><span>  </span></span> <li id="ft3nhxv" class=""><span>  <span id="bhdnzvl" class="tag"><</span><span id="tjbd5v5" class="tag-name">filter-name</span><span id="3p15d5v" class="tag">></span><span>struts2</span><span id="lztfzx3" class="tag"></</span><span id="xd5vh55" class="tag-name">filter-name</span><span id="pxhr55h" class="tag">></span><span>  </span></span> <li id="zvzzbzx" class="alt"><span>  <span id="p51jd15" class="tag"><</span><span id="f5jbn55" class="tag-name">filter-class</span><span id="3tf5ljh" class="tag">></span><span>org.apache.struts2.dispatcher.FilterDispatcher</span><span id="515xhvd" class="tag"></</span><span id="vb5tnvt" class="tag-name">filter-class</span><span id="tzl3fdb" class="tag">></span><span>  </span></span> <li id="5z3n3pn" class=""><span>  <span id="5zfh5vl" class="tag"><</span><span id="xnxjtjh" class="tag-name">init-param</span><span id="j5nxrfd" class="tag">></span><span>  </span></span> <li id="z35ln5v" class="alt"><span>    <span id="3lzdf5n" class="tag"><</span><span id="b5l1ffb" class="tag-name">param-name</span><span id="55tvhfd" class="tag">></span><span>actionPackages</span><span id="3hjdpnv" class="tag"></</span><span id="v55fz5r" class="tag-name">param-name</span><span id="5xjdfd5" class="tag">></span><span>  </span></span> <li id="b53ztzx" class=""><span>    <span id="3rtvpx5" class="tag"><</span><span id="55vn5lj" class="tag-name">param-value</span><span id="vfp5hxp" class="tag">></span><span>demo.actions1,demo.actions2</span><span id="5d51d5d" class="tag"></</span><span id="5n5f5db" class="tag-name">param-value</span><span id="jtv555r" class="tag">></span><span>  </span></span> <li id="vb5lflb" class="alt"><span>  <span id="hv3hrxv" class="tag"></</span><span id="f5z515p" class="tag-name">init-param</span><span id="5htv5b5" class="tag">></span><span>  </span></span> <li id="3ht5fl5" class=""><span><span id="j51h15x" class="tag"></</span><span id="35j1n5p" class="tag-name">filter</span><span id="35rdvd5" class="tag">></span><span>  </span></span> </li> </ol> </div> <br /> 2. 紺轟緥<br /> 鐜板湪鎴戜滑寤虹珛demo.actions1.app.person鍜宒emo.actions2.app.group涓や釜鍖咃紝鍦╠emo.actions1.app.person鍖呬笅寤虹珛ListPeopleAction.java錛屽湪demo.actions2.app.group涓嬪緩绔婰istGroupAction.java銆備綔涓虹ず渚嬶紝榪欎袱涓被鍙槸鍖呭惈涓涓猠xecute鏂規硶錛岃繑鍥?success"鎴?error"錛屽叾瀹冧粈涔堥兘涓嶅仛錛?br /> <div id="5ptvn55" class="code_title">java 浠g爜</div> <div id="hf1155b" class="dp-highlighter"> <div id="3xzt5zf" class="bar"> </div> <ol class="dp-j"> <li id="5555h5z" class="alt"><span><span id="3x155dj" class="keyword">public</span><span> String execute() {  </span></span> <li id="1h3tnbl" class=""><span>    <span id="55zlvnj" class="keyword">return</span><span> </span><span id="bpj3d5d" class="string">"success"</span><span>;  </span></span> <li id="vjdnhpv" class="alt"><span>}  </span> </li> </ol> </div> <br /> 鍦‵ilter鐨勯厤緗腑錛屾垜鎸囧畾actionPackages涓篸emo.actions1,demo.actions2錛屽綋緋葷粺鍚姩鏃訛紝Struts2灝變細鍦ㄨ繖涓や釜鍖呬笅鎵弿鍒癲emo.actions1.app.person.ListPeopleAction鍜宒emo.actions2.app.group.ListGroupAction銆?br /> <br /> 3. Action and Package name<br /> Struts2鎵弿鍒癆ction鍚庯紝浠巃ctionPackages鎸囧畾鐨勫寘寮濮嬶紝瀛愬寘鍚嶄細鎴愪負榪欎釜Action鐨刵amespace錛岃孉ction鐨刵ame鍒欑敱榪欎釜Action鐨勭被鍚嶅喅瀹氥傚皢綾誨悕棣栧瓧姣嶅皬鍐欙紝濡傛灉綾誨悕浠ction緇撳熬錛屽垯鍘繪帀"Action"鍚庣紑錛屽艦鎴愮殑鍚嶅瓧灝辨槸榪欎釜Action鐨勫悕瀛椼傚湪濡備笂鎵榪扮殑紺轟緥涓紝actionPackages鎸囧畾涓篸emo.actions1,demo.actions2錛岄偅涔堜綘鍙互榪欐牱璁塊棶demo.actions1.app.person.ListPeopleAction錛?br />                 http://localhost:8080/app/person/listPeople<br /> <br /> 4. Results<br /> Struts2鏄氳繃"Result"鍜?Results"涓や釜綾葷駭鍒殑annotations鏉ユ寚瀹歊esults鐨勩?br /> 浣滀負紺轟緥錛屾垜浠湪webapp鐩綍涓嬪緩涓や釜html鏂囦歡錛歴uccess.html鍜宔rror.html錛岄殢渚垮啓鐐逛粈涔堝唴瀹歸兘鍙互銆傜幇鍦ㄥ亣璁炬垜浠闂?app/person/listPeople鏃訛紝鎴朅ction榪斿洖success灝辮漿鍒皊uccess.html欏甸潰錛岃嫢鏄痚rror灝辮漿鍒癳rror.html欏甸潰錛岃繖鍙渶瑕佸湪ListPeopleAction綾諱笂鍔犱笂涓孌墊敞瑙e氨鍙互浜嗭細<br /> <div id="1bd5b5b" class="code_title">java 浠g爜</div> <div id="151jlrz" class="dp-highlighter"> <div id="vj5lnl1" class="bar"> </div> <ol class="dp-j"> <li id="zxz55lb" class="alt"><span><span id="thj315x" class="annotation">@Results</span><span>({  </span></span> <li id="15l1zbz" class=""><span>    <span id="zzrt5rh" class="annotation">@Result</span><span>(name=</span><span id="ph55jxv" class="string">"success"</span><span>, type=NullResult.</span><span id="vrdnzfn" class="keyword">class</span><span>, value = </span><span id="5rb15xx" class="string">"/success.html"</span><span>, params = {}),  </span></span> <li id="rz5x5v5" class="alt"><span>    <span id="f3bn555" class="annotation">@Result</span><span>(name=</span><span id="5555thx" class="string">"error"</span><span>, type=NullResult.</span><span id="1tdfzfx" class="keyword">class</span><span>, value = </span><span id="pn5vplt" class="string">"/error.html"</span><span>, params = {})  </span></span> <li id="px55ljh" class=""><span>})  </span> <li id="vdvprh5" class="alt"><span><span id="rx3npnl" class="keyword">public</span><span> </span><span id="5555h5b" class="keyword">class</span><span> ListPeopleAction {  </span></span> <li id="hnrrt5j" class=""><span>    <span id="5n1fhf5" class="keyword">public</span><span> String execute() {  </span></span> <li id="5vpr5jf" class="alt"><span>        <span id="55fxzxz" class="keyword">return</span><span> </span><span id="nvn3x55" class="string">"success"</span><span>;  </span></span> <li id="rhj3lzx" class=""><span>    }  </span> <li id="xn3tfd5" class="alt"><span>}  </span> </li> </ol> </div> <br /> 鍚屼笂錛屾垜浠粰ListGroupAction涔熷姞涓婃敞瑙c?br /> 鐜板湪錛屾垜浠凡緇忓畬鎴愪簡涓涓浂閰嶇疆鐨勭ず渚嬨傛垜浠茍娌℃湁鍦▁ml鏂囦歡閲岄厤緗甃istPeopleAction鍜孡istGroupAction錛屼絾瀹冧滑宸茬粡鍙互宸ヤ綔浜嗭紒<br /> 鐢‥clipse榪愯RunJetty錛岀劧鍚庣敤嫻忚鍣ㄨ闂甴ttp://localhost:8080/app/person/listPeople鍜宧ttp://localhost:8080/app/group/listGroup鐪嬬湅錛屾槸涓嶆槸姝f槸success.html錛堟垨error.html錛夌殑鍐呭錛?br /> <br /> 5. Namespaces<br /> 濡備笂鎵榪幫紝namespace鐢卞寘鍚嶆墍褰㈡垚錛屼絾鎴戜滑鍙互浣跨敤"Namespace"娉ㄨВ鏉ヨ嚜宸辨寚瀹歯amespace銆?br /> <br /> 6. Parent Package<br /> 榪欎釜閰嶇疆鐢ㄥ緱杈冨皯銆係truts2鎻愪緵涓涓?ParentPackage"娉ㄨВ鏉ユ爣璇咥ction搴旇鏄睘浜庡摢涓猵ackage銆?br /> <br /> <h2>涓夈佷嬌鐢–OC</h2> 濡備笂鎵榪幫紝Struts2鐢ㄦ敞瑙f潵瀹炵幇闆墮厤緗傜劧鑰岋紝榪欎笉鏄垜鍠滄鐨勬柟寮忋傚湪鎴戠湅鏉ワ紝榪欎笉榪囨槸灝嗛厤緗粠XML鏍煎紡鎹㈡垚浜嗘敞瑙f柟寮忥紝騫朵笉鏄湡鐨勯浂閰嶇疆銆傝屼笖錛岃繖縐嶆柟寮忎篃鏈繀姣擷ML褰㈠紡鐨勯厤緗洿濂姐傚彟澶栵紝瀵瑰厓鏁版嵁鐨勪慨鏀瑰繀鐒朵細瀵艱嚧欏圭洰鐨勯噸鏂扮紪璇戝拰閮ㄧ講銆傝繕鏈夛紝鐜板湪鐨凷truts2鐗堟湰浼間箮瀵筊esult娉ㄨВ涓殑params鐨勫鐞嗘湁浜涢棶棰樸?br /> 鍏跺疄錛孲truts2鐨刟ctionPackages閰嶇疆宸茬粡浣跨敤浜咰OC錛岄偅涓轟粈涔堜笉鑳戒負Results涔熷疄鐜癈OC錛屼粠鑰屽幓闄よ繖浜涙瘡涓狝ction閮借鍐欑殑娉ㄨВ錛?br /> 鍦ㄤ弗璋ㄧ殑欏圭洰涓紝package銆乤ction鐨勫悕縐板拰欏甸潰鐨勮礬寰勩佸悕縐頒竴瀹氬瓨鍦ㄧ潃鏌愮鍏崇郴銆傛瘮濡傦紝欏甸潰鐨勮礬寰勫彲鑳藉拰package鏄搴旂殑錛岄〉闈㈢殑鍚嶇О鍙兘鍜宎ction鐨勫悕縐版槸瀵瑰簲鐨勶紝鎴栨槸鏍規嵁鏌愮娉曞垯榪愮畻寰楀埌銆傛垜浠煡閬搘ebwork2鍜宻truts2鏈変釜閰嶇疆鍙玤lobal-results銆傛垜浠負浠涔堜笉鑳芥牴鎹繖浜涘搴旇鍒欏啓涓猂esult錛屽皢瀹冮厤鍒癵lobal-results涓紝浠庤岀湡姝e厤鍘籸esult鐨勯厤緗紵<br /> 浜嬪疄涓婏紝鎴戞帹鑽怱truts2鐨勪嬌鐢ㄨ呭彧鐢⊿truts2杈撳嚭XML鎴朖SON錛屾斁寮僓I錛岄〉闈㈣繖灞傝繕鏄嬌鐢ㄦ爣鍑嗙殑HTML銆丆SS鍜屼竴浜汮S緇勪歡鏉ュ睍鐜般傝澶氫漢鍙嶆槧Struts2鎱紝紜疄錛孲truts2鏄參錛屽緢鎱紒鎱㈠湪鍝効錛熷緢澶т竴閮ㄥ垎鍥犵礌鏄疷I榪欏眰寮曡搗鐨勶紝鐗瑰埆鏄嬌鐢ㄤ簡榪囧鐨凷truts2鐨則ag錛屽茍浣跨敤浜哸jax theme銆備絾鏄紝濡傛灉鎴戜滑鏀懼純浜哠truts2鐨勭鎷欑殑UI錛孯esult鍙緭鍑篨ML鎴朖SON錛孶I鍒欎嬌鐢ㄦ爣鍑嗙殑HTML+CSS錛屼嬌鐢↗S緇勪歡錛圖OJO銆丄dobe Spry Framework銆乊UI-Ext絳夛級鏉ユ搷浣淪truts2鐨勮緭鍑烘暟鎹紝鎯呭喌灝嗕細濡備綍錛熸垜浠細寰楀埌涓涓珮鎬ц兘銆侀珮鍙厤鐨勩乁I鍜屽簲鐢ㄦ湇鍔″櫒鐨勮亴璐e垎鍓叉洿涓烘槑紜佸悎鐞嗙殑銆佹洿鏄撲簬闈欐佸寲閮ㄧ講鐨勫紑鍙戠粍鍚堛?br /> 榪欎技涔庢槸闃夊壊浜哠truts2錛屼絾鏄繖鏍烽槈鍓茶繃鐨凷truts2鎽嗚劚浜嗘ц兘浣庝笅鐨勫寘琚憋紝鏇磋交銆佹洿鐜頒唬鍖栥?br /> 鏈変簺鎵繙浜嗭紝璦褰掓浼狅紝涓嶇鏄Struts2杈撳嚭XML鎴朖SON錛岃繕鏄緭鍑洪〉闈紝鎴戜滑閮芥湁鍔炴硶鏍規嵁欏圭洰鐨勮鍒欏啓涓涓猂esult錛屽皢瀹冮厤鍒癵lobal-results涓紝浠庤屽ぇ澶у噺灝慠esult鐨勯厤緗?br /> 鍋囪鎴戜滑璁㏒truts2鍙緭鍑篔SON錛屾湁涓猨sonplugin鍙互鍋氳繖浠朵簨銆備嬌鐢↗sonResult鏃訛紝涓嶅啀闇瑕佺煡閬撻〉闈㈢殑浣嶇疆銆佸悕縐扮瓑淇℃伅錛屽畠浠呬粎鏄暟鎹緭鍑猴紝閭d箞鎴戜滑灝卞彲浠ュ皢榪欎釜Result閰嶆垚鍏ㄥ眬鐨勶紝澶ч儴鍒咥ction灝嗕笉鍐嶉渶瑕丷esult鐨勯厤緗?br /> 浣滀負紺轟緥錛屾垜鍋囪鎴戠殑渚嬪瓙涓緭鍑虹殑涓や釜html欏甸潰錛坰uccess.html鍜宔rror.html錛夋槸JSON錛屾垜浠湅鐪嬫庝箞鍏嶅幓鎴戜緥瀛愪腑鐨勪袱涓狝ction鐨凴esult娉ㄨВ銆?br /> 棣栧厛錛屾垜浠垹鍘籐istPeopleAction鍜孡istGroupAction涓や釜Action鐨勬敞瑙o紝騫朵慨鏀箂truts.xml鏂囦歡錛屽姞鍏ワ細<br /> <div id="r5l1f5h" class="code_title">xml 浠g爜</div> <div id="drdnhnd" class="dp-highlighter"> <div id="hf5v15p" class="bar"> </div> <ol class="dp-xml"> <li id="35h1xft" class="alt"><span><span id="dz5z1hd" class="tag"><</span><span id="rfj3j5j" class="tag-name">package</span><span> </span><span id="tzbdx3p" class="attribute">name</span><span>=</span><span id="trbvxd5" class="attribute-value">"demo-default"</span><span> </span><span id="5j5xrp1" class="attribute">extends</span><span>=</span><span id="xvzrlj3" class="attribute-value">"struts-default"</span><span id="pnhttjh" class="tag">></span><span>  </span></span> <li id="3xxr5p5" class=""><span><span id="bhjlxlr" class="tag"><</span><span id="zx55rx5" class="tag-name">global-results</span><span id="nj5t1n5" class="tag">></span><span>  </span></span> <li id="bbtn3lr" class="alt"><span><span id="5ztfhfd" class="tag"><</span><span id="3v5x55h" class="tag-name">result</span><span> </span><span id="t55fhx5" class="attribute">name</span><span>=</span><span id="t555555" class="attribute-value">"success"</span><span id="h55prp5" class="tag">></span><span>/success.html</span><span id="p355ndb" class="tag"></</span><span id="3hl5ddz" class="tag-name">result</span><span id="vn35xvt" class="tag">></span><span>  </span></span> <li id="5xp5rhf" class=""><span><span id="l3ttfd5" class="tag"></</span><span id="blf55d5" class="tag-name">global-results</span><span id="d5h555f" class="tag">></span><span>  </span></span> <li id="bd35znl" class="alt"><span><span id="3np5ljh" class="tag"></</span><span id="n555tr5" class="tag-name">package</span><span id="555rfvt" class="tag">></span><span>  </span></span> </li> </ol> </div> <br /> <font color="#ff0000">璇瘋浣忚繖鍙槸涓涓ず渚嬶紝涓轟簡鏂逛究錛屾垜娌″湪欏圭洰涓姞鍏sonplugin鏉ヤ綔鐪熷疄鐨勬紨紺猴紝鎴戝彧鏄亣璁捐繖涓猻uccess鏄痡son杈撳嚭錛岃鑰呭彲浠ヨ嚜琛屼嬌鐢╦sonplugin鏉ヤ綔瀹為獙銆?/font><br /> <br /> 鐜板湪錛岀鎴愬姛涓嶈繙浜嗭紝浣嗘槸欏圭洰浠嶇劧涓嶈兘姝e父榪愯銆傛垜浠殑Action榪斿洖success錛屼絾騫朵笉浼氬尮閰嶅埌global-results涓厤緗備負浠涔堝憿錛熷洜涓猴紝鎴戜滑榪欓噷鏄妸global-results閰嶇疆鍒?demo-default"榪欎釜package涓嬬殑錛岃孲truts2鏍規嵁actionPackages鎵懼埌鐨凙ction涓嶄細鍖歸厤鍒拌繖涓猵ackage涓娿傝В鍐沖姙娉曚篃寰堢畝鍗曪紝榪樿寰椾笂闈㈣鍒扮殑Parent Package鍚э紵緇橝ction鍔犱釜娉ㄨВ錛屾寚瀹歅arentPackage涓?demo-default"銆備絾榪欐牱鍙笉鏄垜鍠滄鐨勶紝鍏跺疄鏈夋洿濂界殑鍔炴硶錛屾垜浠湪struts.xml涓姞涓猚onstant灝卞ソ浜嗭細<br /> <div id="dx5ld5z" class="code_title">xml 浠g爜</div> <div id="n33tnvl" class="dp-highlighter"> <div id="55vp5n5" class="bar"> </div> <ol class="dp-xml"> <li id="tb3555d" class="alt"><span><span id="5h51z5d" class="tag"><</span><span id="thn5vtj" class="tag-name">constant</span><span> </span><span id="55fxr5l" class="attribute">name</span><span>=</span><span id="r5hjn55" class="attribute-value">"struts.configuration.classpath.defaultParentPackage"</span><span> </span><span id="r35n55f" class="attribute">value</span><span>=</span><span id="hzbp155" class="attribute-value">"demo-default"</span><span> </span><span id="rnpdx5z" class="tag">/></span><span>  </span></span> </li> </ol> </div> <br /> 鐜板湪錛屽ぇ鍔熷憡鎴愶紒榪愯RunJetty鏉ユ祴璇曚笅鍚э紒浣犲彲浠ヨ闂?app/person/listPeople錛屽彲浠ヨ闂?app/group/listGroup錛岃屾墍鏈夌殑閰嶇疆浠呬粎鏄痺eb.xml鍜宻truts.xml涓殑鍑犺錛屾垜浠殑Java浠g爜涓篃娌℃湁鍔犳敞瑙c傚鏋滃啀鍔犱笂鍑犵櫨涓狝ction鍛紵閰嶇疆浠嶇劧灝辮繖鍑犺銆?br /> 鍙槸錛屾煇浜汚ction紜疄闇瑕侀厤緗庝箞鍔烇紵瀵硅繖浜汚ction錛屼綘鍙互鍔犳敞瑙o紝涔熷彲浠ラ拡瀵硅繖浜汚ction鏉ュ啓浜沊ML閰嶇疆銆備竴涓」鐩腑錛屽ぇ閮ㄥ垎Action鐨勯厤緗槸鍙互閬典粠涓瀹氳鍒欑殑錛屽彲浠ヤ嬌鐢ㄨ鍒欐潵綆鍖栭厤緗紝鍙湁灝戦儴鍒嗛渶瑕侀厤緗紝榪欏氨鏄疌OC銆?br /> <br /> </div> <img src ="http://www.tkk7.com/fuhoujun/aggbug/232312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/fuhoujun/" target="_blank">Loy Fu</a> 2008-10-04 14:08 <a href="http://www.tkk7.com/fuhoujun/archive/2008/10/04/232312.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://gzmandala.com" target="_blank">在线永久看片免费的视频</a>| <a href="http://t66ycom.com" target="_blank">在线aⅴ亚洲中文字幕</a>| <a href="http://2h6m.com" target="_blank">中文字幕第一页亚洲</a>| <a href="http://snbbearing.com" target="_blank">亚洲国产精品人人做人人爱</a>| <a href="http://avdaka.com" target="_blank">日韩在线免费看网站</a>| <a href="http://sx97zc.com" target="_blank">永久久久免费浮力影院</a>| <a href="http://dajiaody.com" target="_blank">在线播放免费播放av片</a>| <a href="http://df6618.com" target="_blank">免费看片A级毛片免费看</a>| <a href="http://mabaolu.com" target="_blank">四虎www成人影院免费观看</a>| <a href="http://www-ttyx.com" target="_blank">影音先锋在线免费观看</a>| <a href="http://www77753.com" target="_blank">在线观看人成视频免费</a>| <a href="http://xxzyyj.com" target="_blank">国产又大又粗又硬又长免费</a>| <a href="http://959901cc.com" target="_blank">四虎www成人影院免费观看</a>| <a href="http://1897tao.com" target="_blank">性感美女视频免费网站午夜</a>| <a href="http://srztw.com" target="_blank">国产精品免费看香蕉</a>| <a href="http://amgzh.com" target="_blank">亚洲国产中文v高清在线观看</a>| <a href="http://szhszszy.com" target="_blank">亚洲乱码国产一区网址</a>| <a href="http://changfafangzhi.com" target="_blank">久久亚洲国产精品123区</a>| <a href="http://sdsupuchem.com" target="_blank">亚洲乱亚洲乱妇无码麻豆</a>| <a href="http://ebhqd.com" target="_blank">久久国产亚洲电影天堂</a>| <a href="http://dqmovie.com" target="_blank">亚洲男人的天堂在线</a>| <a href="http://by22877.com" target="_blank">国产精品高清视亚洲一区二区</a>| <a href="http://fenglufzjx.com" target="_blank">一本天堂ⅴ无码亚洲道久久</a>| <a href="http://079566.com" target="_blank">色窝窝亚洲av网</a>| <a href="http://zqsplc.com" target="_blank">精品97国产免费人成视频</a>| <a href="http://600c81.com" target="_blank">日韩电影免费在线观看</a>| <a href="http://mcsser.com" target="_blank">免费观看无遮挡www的小视频</a>| <a href="http://www-533999.com" target="_blank">久久久久久久久免费看无码</a>| <a href="http://bj-tkld.com" target="_blank">国产一级大片免费看</a>| <a href="http://niutextile.com" target="_blank">亚洲中文字幕无码一区二区三区 </a>| <a href="http://www99383.com" target="_blank">国产成人无码区免费内射一片色欲</a>| <a href="http://www6yg6yg.com" target="_blank">两个人的视频www免费</a>| <a href="http://jt4f.com" target="_blank">精品一区二区三区免费毛片爱 </a>| <a href="http://scdsrq.com" target="_blank">a级毛片高清免费视频就</a>| <a href="http://by11gun.com" target="_blank">18禁美女裸体免费网站</a>| <a href="http://mironpress.com" target="_blank">无码人妻一区二区三区免费</a>| <a href="http://2886868.com" target="_blank">凹凸精品视频分类国产品免费</a>| <a href="http://wwwby1385.com" target="_blank">亚洲人成人77777网站</a>| <a href="http://ahzlgj.com" target="_blank">亚洲免费黄色网址</a>| <a href="http://quxx28.com" target="_blank">国产亚洲蜜芽精品久久</a>| <a href="http://pohezi.com" target="_blank">av永久免费网站在线观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>