锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
緇х畫嫻嬭瘯鍜屾敼榪?涓嶆弧鎰忕殑鍦版柟:@ToSession鏍囩
鏇存柊鏃ュ織:
2006-06-18聽澧炲姞鍜屾敼榪?@ToList 鏍囩,鐢ㄦ潵淇グ涓涓弬鏁頒負java.util.List<T>鐨剆etter鏂規(guī)硶聽
2006-05-23 澧炲姞 VelocityView鎺ュ彛,鏂逛究velocity瑙嗗浘璋冪敤.
2006-05-23 澧炲姞 WebParam鎺ュ彛,灝佽鎺塺equest鍜宺esponse浠ュ強ServletContext
2006-05-22 澧炲姞 5.1 鍒濆鍖?velocity
2006-05-21 澧炲姞 4.1 - 4.2 HttpSession鎿嶄綔
鏇存柊note:
1.HttpServletRequest鐨?a href="file:///D:/jakarta-tomcat-4.1.30/servlet%20api/javax/servlet/ServletRequest.html#getParameterNames()">getParameterNames()聽鏂規(guī)硶榪斿洖鐨凟numeration鐩稿浜庨〉闈㈠弬鏁扮殑鐗╃悊欏哄簭鍒氬ソ鏄浉鍙嶇殑,鎵浠ュ疄鐜癅ToList鏍囩鏃跺欓渶瑕佸厛鐢ㄤ竴涓猄tack鏉ュ鎵鏈夊弬鏁拌繘琛屽弽杞?涓嶇煡tomcat鍦ㄨ繖涓猘pi鏂規(guī)硶涓婃槸鎬庝箞瀹炵幇鐨?涓轟粈涔堝氨鍊掕繃鏉ャ俢璇█鍑芥暟鍙互鏍規(guī)嵁涓嶅悓鐨刢all綾誨瀷鏉ユ寚瀹氫笉鍚岀殑鍘嬫爤鐨勯『搴忥紝鑾潪榪欎釜鎯緥涔熻鐢ㄥ埌servlet閲岄潰鏉ヤ簡錛屾尯鏈夋剰鎬濈殑涓滆タ錛岀湅鏉ラ渶瑕佺暀鎰忎竴涓嬨?br />
闂鍜岃В鍐蟲柟寮?
1.鍏充簬@ToSession鏍囩.濡傛灉鏄櫥闄嗙殑璇?閭d箞灝辨湁涓垽鏂潯浠跺喅瀹氭煇涓猯ogin token鏄惁搴旇琚姞鍒皊ession涓?榪欐椂鍊欏彲浠ュ湪@ToSession鏍囪鐨刧etter鏂規(guī)硶涓姞鍏ラ昏緫鍒ゆ柇,鏉ュ喅瀹氳繑鍥炰竴涓猼oken瀹炰綋鎴栬卬ull(榪欐牱鍋氭湁鐐瑰彜鎬?.).
2.璺緞鐨勯棶棰?姣斿涓涓?a href="http://host/logic/bbs/admin/ListUsers.wff">http://host/logic/bbs/admin/ListUsers.wff 鎽哥増鐨勭浉鍏寵祫婧愮洰褰?姣斿,鍥劇墖,css,js絳?灝卞繀欏誨瓨鍦╳ebproject/bbs/admin鍝嶅簲鐨勭洰褰曚笅,鏈夌偣鍍弒truts鐨勫妯″潡.
寮濮?
Ruby on Rails鏈変釜璁捐鎬濇兂鏄敤緙栫爜瑙勫畾浠f浛綣佺悙鐨勯厤緗枃浠躲俲vm騫沖彴宸茬粡鏈変竴浜涚被浼紃or鐨勫疄鐜幫紝姣斿
grails(http://docs.codehaus.org/display/GRAILS/2006/03/29/Groovy+on+Rails+(Grails)+0.1+Released)
铏界劧鐢變簬java鑷韓鐨勫眬闄愶紝瀹冨緢闅懼仛鍑哄儚ruby鎴栬単roovy閭f牱鍔ㄦ佽璦閭f牱闅忓績鎵嬈茬殑鍔ㄤ綔錛屼絾鏄埄鐢ㄥ畠鐨勮繍琛屾椂鍙嶅皠銆佸姩鎬佷唬鐞嗙瓑鐗規(guī)ф潵灝藉彲鑳藉疄鐜扳滅敤緙栫爜瑙勫畾浠f浛綣佺悙鐨勯厤緗枃浠垛濊繖涓鎬濇兂銆?br />涓嬮潰杞叆姝i銆?/p>
ServletAPI瀵笻TTP鍗忚榪涜浜嗗皝瑁?閫氳繃閰嶇疆Web.xml鏉ユ妸涓嶅悓鐨勮姹傝漿鍙戠粰涓嶅悓鐨剆ervlet鏉ュ鐞嗐俉eb妗嗘灦鍒欑敤涓涓狝ctionServlet錛屾牴鎹嚜宸辯殑瀵笰ction鐨勫畾涔夋潵杞彂璇鋒眰銆?br />鎶涘紑閭d簺綣佺悙鐨勯厤緗枃浠訛紝璁炬兂涓涓嬭繖鏍蜂竴縐嶆柟娉?
1.Web鍔ㄤ綔鐨勫鐞嗗拰鍝嶅簲
鍋囪榪欐牱涓涓狿OST璇鋒眰:
聽 <form action="logic/group/NewTopic.wff" method="post">
Web鍔ㄤ綔瀹炵幇Bean:
聽聽 org.qqsns.web.logic.group.NewTopic聽聽
娉ㄦ剰鍚庨潰鐨刲ogic/group/NewTopic鍜宭ogic.group.NewTopic, 鍔ㄤ綔綾誨拰Web鍔ㄤ綔鏄氳繃璇鋒眰璺緞鍜屽寘鍚嶇浉浜掑叧鑱斻?br />榪欐牱錛屽Web鍔ㄤ綔鐨勫搷搴斿氨渚濊禆浜庣紪璇戞湡鐨勪唬鐮佺殑緇勭粐緇撴瀯鑰屼笉鏄墽琛屾湡鐨勯厤緗枃浠躲傝繖鏍風殑濂藉鏄伩鍏嶄簡緇存姢綣佺悙鐨勯厤緗枃浠?鐗瑰埆鏄湪娌℃湁IDE鏀寔鐨勬儏鍐典笅銆?/p>
org.qqsns.web.logic.group.NewTopic綾繪槸涓涓疄鐜皀et.wff.servlet.WebAction鎺ュ彛鐨凱OJO錛屼笅闈㈡槸NewTopic涓璭xecute鐨勬柟娉曠墖孌?聽聽
聽
聽//Only method must be implemented for interface net.wff.servlet.WebAction
聽public String execute(WebParam param,聽VelocityView view)
聽throws ServletException, IOException{
聽聽...
聽聽//return "redirect /success.html";聽 //璇鋒眰閲嶅畾鍚?br />聽聽return "/success.jsp";聽聽聽聽聽聽聽聽聽聽聽聽聽 //璇鋒眰杞彂
}
execute鏂規(guī)硶鐨勮繑鍥炲兼墜鍔ㄦ寚瀹氫簡涓涓漿鍙戞垨閲嶅畾鍚戠殑璺緞銆?/p>
2.杈撳叆楠岃瘉
鏅氱殑Web妗嗘灦閮藉甫鏁版嵁杈撳叆楠岃瘉鍔熻兘,涓鑸鏉傜▼搴﹀拰鍔熻兘寮哄ぇ涓庡惁鎴愭姣斻?br />榪欓噷綆鍗曞湴瑕佹眰浠巗etter鏂規(guī)硶閲屾姏鍑轟竴涓寘鍚獙璇佷俊鎭殑寮傚父錛屼互姝ゆ潵瀹炵幇杈撳叆寮傚父澶勭悊銆?br />聽聽聽聽聽聽
鏅歴etter鏂規(guī)硶
public void setName(String name){聽
聽聽this.name = name;
}
娣誨姞杈撳叆楠岃瘉鍚庣殑setter鏂規(guī)硶
public void setName(String name) throws InputException{聽聽聽
聽if(name.length()<3)
聽聽聽 throw new InputException("Topic name must has a length greater than 3");聽
聽聽this.name = name;
}
鍦╓aterFallServlet濡備綍涓鐞嗛獙璇佷俊鎭?
聽聽聽 WebAction wa =
聽聽聽 (WebAction)Class.forName(classPath).newInstance();
聽聽聽聽聽聽聽聽聽 //procces forwarding
聽聽聽聽聽聽聽聽聽 try {
聽聽聽聽ActionHelper.setProperties(request,wa);
聽聽聽} catch (InputException e) {
聽聽聽聽//return to input view
聽聽聽聽//header:referer
聽聽聽聽String rtn = request.getHeader("referer");
聽聽聽聽//clear old errors
聽聽聽聽if(rtn.indexOf("?")!=1){
聽聽聽聽聽rtn = rtn.substring(0,rtn.indexOf("?"));
聽聽聽聽}
聽聽聽聽rtn=rtn+"?error="+URLEncoder.encode(e.getMessage(),"UTF-8");
聽聽聽聽response.sendRedirect(rtn);
聽聽聽聽return;
聽聽聽}
榪欐牱楠岃瘉淇℃伅閫氳繃璇鋒眰鍙傛暟浼犲洖鍒拌緭鍏ラ〉闈?
3.鏁版嵁緇戝畾
鍋囪鏈夎繖鏍風殑html杈撳叆:
聽聽聽 <input type="text" name="name"/>
聽聽聽 <input type="text" name="number"/>
聽聽聽 <input type="text" name="price"/>
聽聽聽
聽涓嬮潰鏄疦ewTopic涓璭xecute鐨勬柟娉曞叏閮?聽聽
聽
聽public String execute(WebParam param, VelocityView view)
聽throws ServletException, IOException{
聽聽System.out.println(getName());
聽聽System.out.println(getNumber());
聽聽System.out.println(getPrice());
聽聽System.out.println(getLength());
聽聽return "/success.html";
}
聽聽聽
鑷姩浠巖equest娉ㄥ叆parameter,榪欎篃鏄疭truts DynamicActionForm鐨勫ソ澶勪箣涓銆?br />涓嶈繃榪欓噷瀹炵幇鏇寸被浼煎浜嗙被鍨嬭漿鎹㈢殑<jsp:setProperty name="bean" property="*"/>
鍥犱負Name鐨勭被鍨嬫槸String,Number鐨勭被鍨嬫槸Integer,Price鐨勭被鍨嬫槸float,length鐨勭被鍨嬫槸double.鑷充簬鍏朵粬澶嶆潅鐨勭被鍨?涔熻jsf鐨勮漿鎹㈠櫒鏄釜鏇村ソ鐨勪富鎰忋?br />榪欐牱灝卞垵姝ヨВ鍐充簡鏁版嵁鐨勮緭鍏ョ粦瀹氬拰楠岃瘉銆備綑涓嬬殑灝辨槸涓氬姟閫昏緫鐨勯棶棰樸?/p>
4.濡備綍鎿嶄綔Session涓殑淇℃伅
聽
聽鑾峰彇session涓殑淇℃伅:
聽 @FromSession(
聽聽聽聽 sessionKey=User.key
聽聽聽聽 )
聽public void setCurrentUser(String currentUser) {
聽聽this.currentUser = currentUser;
聽}
聽淇℃伅淇濆瓨鍒皊ession涓?聽
聽 @ToSession(
聽聽聽聽聽 sessionKey = User.key聽聽
聽聽聽 )
聽public String getName() {
聽聽if(login())return name;
聽聽else return null;
聽}
聽榪?涓柟娉曞畾涔夊湪WebAction鐨勫疄鐜扮被涓?br />聽妗嗘灦鍦╡xecute()涔嬪墠鎵ц@FromSession鍔ㄤ綔錛屽湪execute()涔嬪悗鎵ц@ToSession鍔ㄤ綔銆?br />聽榪欓噷浣跨敤浜哸nnotation,鎵浠ヨ姹傚繀欏繪槸jdk5.0浠ヤ笂鐗堟湰.
聽
聽5.1 Velocity
聽 waterfall鍚姩鏃跺欒嚜鍔ㄥ湪WEB-INF鐩綍涓嬪鎵懼茍鍒濆鍖朧elocity.properties鏂囦歡
聽鎿嶄綔:
聽public String execute(WebParam param,聽VelocityView view)
聽throws ServletException, IOException{
聽聽view.addElement("msg","Hello");
聽 view.go("index.vm");
聽聽return null;
}
ServletAPI瀵笻TTP鍗忚榪涜浜嗗皝瑁?閫氳繃閰嶇疆Web.xml鏉ユ妸涓嶅悓鐨勮姹傝漿鍙戠粰涓嶅悓鐨剆ervlet鏉ュ鐞嗐俉eb妗嗘灦鍒欑敤涓涓狝ctionServlet錛屾牴鎹嚜宸辯殑瀵笰ction鐨勫畾涔夋潵杞彂璇鋒眰銆?br />鎶涘紑閭d簺綣佺悙鐨勯厤緗枃浠訛紝璁炬兂涓涓嬭繖鏍蜂竴縐嶆柟娉?
1.Web鍔ㄤ綔鐨勫鐞嗗拰鍝嶅簲
鍋囪榪欐牱涓涓狿OST璇鋒眰:
Web鍔ㄤ綔瀹炵幇Bean:
娉ㄦ剰鍚庨潰鐨?em>logic/group/NewTopic鍜?em>logic.group.NewTopic, 鍔ㄤ綔綾誨拰Web鍔ㄤ綔鏄氳繃璇鋒眰璺緞鍜屽寘鍚嶇浉浜掑叧鑱斻?br />榪欐牱錛屽Web鍔ㄤ綔鐨勫搷搴斿氨渚濊禆浜?strong>緙栬瘧鏈熺殑浠g爜鐨勭粍緇囩粨鏋?/strong>鑰屼笉鏄?strong>鎵ц鏈熺殑閰嶇疆鏂囦歡銆傝繖鏍風殑濂藉鏄伩鍏嶄簡緇存姢綣佺悙鐨勯厤緗枃浠?鐗瑰埆鏄湪娌℃湁IDE鏀寔鐨勬儏鍐典笅銆?/p>
org.qqsns.web.logic.group.NewTopic綾繪槸涓涓疄鐜皀et.wff.servlet.WebAction鎺ュ彛鐨凱OJO錛屼笅闈㈡槸NewTopic涓璭xecute鐨勬柟娉曠墖孌?聽聽聽
聽execute鏂規(guī)硶鐨勮繑鍥炲兼墜鍔ㄦ寚瀹氫簡涓涓漿鍙戞垨閲嶅畾鍚戠殑璺緞銆?/p>
2.杈撳叆楠岃瘉
鏅氱殑Web妗嗘灦閮藉甫鏁版嵁杈撳叆楠岃瘉鍔熻兘,涓鑸鏉傜▼搴﹀拰鍔熻兘寮哄ぇ涓庡惁鎴愭姣斻?br />榪欓噷綆鍗曞湴瑕佹眰浠巗etter鏂規(guī)硶閲屾姏鍑轟竴涓寘鍚獙璇佷俊鎭殑寮傚父錛屼互姝ゆ潵瀹炵幇杈撳叆寮傚父澶勭悊銆?br />聽聽聽聽聽聽
鏅歴etter鏂規(guī)硶
娣誨姞杈撳叆楠岃瘉鍚庣殑setter鏂規(guī)硶
WaterFallServlet鏄浣曞鐞嗛獙璇佷俊鎭殑:
榪欐牱楠岃瘉淇℃伅閫氳繃璇鋒眰鍙傛暟浼犲洖鍒拌緭鍏ラ〉闈?
3.鏁版嵁緇戝畾
鍋囪鏈夎繖鏍風殑html杈撳叆:聽
聽涓嬮潰鏄疦ewTopic涓璭xecute鐨勬柟娉曞叏閮?聽聽聽
鑷姩浠巖equest娉ㄥ叆parameter,榪欎篃璁告槸寰堝浜哄枩嬈truts DynamicActionForm鐨勫師鍥犱箣涓銆?br />涓嶈繃榪欓噷瀹炵幇鏇寸被浼煎浜嗙被鍨嬭漿鎹㈢殑<jsp:setProperty name="bean" property="*"/>
鍥犱負Name鐨勭被鍨嬫槸String,Number鐨勭被鍨嬫槸Integer,Price鐨勭被鍨嬫槸float,length鐨勭被鍨嬫槸double.鑷充簬鍏朵粬澶嶆潅鐨勭被鍨?涔熻jsf鐨勮漿鎹㈠櫒鏄釜鏇村ソ鐨勪富鎰忋?br />榪欐牱灝卞垵姝ヨВ鍐充簡鏁版嵁鐨勮緭鍏ョ粦瀹氬拰楠岃瘉銆備綑涓嬬殑灝辨槸涓氬姟閫昏緫鐨勯棶棰樸俉aterfallWebFramework婧愪唬鐮?
http://m.tkk7.com/Files/zqc/WaterfallWebFramework.rar聽(鍙湁涓涓厤緗枃浠?鍏朵腑鍙湁1琛岄厤緗俊鎭?)
浠ヤ笂灝辨槸妗嗘灦鐨勪富瑕佸姛鑳姐?strong>鐢ㄧ紪鐮佽瀹氫唬鏇塊厤緗枃浠?/strong>錛屼篃璁歌繖浼氭槸涓縐嶆洿鍔犻珮鏁堢巼鐨勫紑鍙戞柟寮忋?br />