锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 瀹炵幇鎷︽埅鍔熻兘鐨勭被鏈夛細 涓銆丮ainInteceptor錛屼富鎷︽埅鍣紝鎵浠WR鐨勮繙紼嬭皟鐢ㄩ兘浼氳鎷︽埅錛屽綋鐒訛紝 璋冪敤鏄粏鍒版柟娉曠駭鐨勶紝鍙厤緗殑錛岃綾誨疄鐜頒簡Spring AOP鐨凪ethodBeforeAdvice鎺ュ彛錛岃綾繪湁涓涓泦鍚堟垚鍛樺彉閲忥紝鎴愬憳涓篒Inteceptor銆?/font> 浜屻両Inteceptor錛屾槸涓涓帴鍙o紝浠呮湁涓涓猠xecute(AopContext context)鍑芥暟銆傝鎺ュ彛鏄嫤鎴櫒錛堜笌鍓嶉潰鐨勪富鎷︽埅鍣ㄤ笉鍚岋紝鏈帴鍙e畾涔夌殑鎷︽埅鍣ㄦ槸鍙互鐢辯敤鎴峰幓瀹炵幇錛屽茍涓斿彲浠ユ湁澶氫釜錛夈傚疄鐜版帴鍙e彧闇瑕佸疄鐜版柟娉曘傝繖浜?鎷︽埅鍣ㄤ細琚富鎷︽埅鍣ㄥ洖璋冦?姣斿瑕佸疄鐜頒竴涓韓浠介獙璇佺殑鎷︽埅錛孲ecuityInteceptor錛屽湪閰嶇疆鏂囦歡涓妸榪欎釜鎷︽埅鍣ㄨ緗負涓繪嫤鎴櫒鐨勫睘鎬у嵆鍙幏寰楀洖璋冦?/font> 涓夈丄opContext錛孉op涓婁笅鏂囥傚湪涓繪嫤鎴櫒璋冪敤IInteceptor鐨勫璞℃椂錛屾妸榪欎釜涓婁笅鏂囧璞′綔涓哄弬鏁版潵璋冪敤瀛愭嫤鎴櫒銆備粠璇ヤ笂涓嬫枃鍙幏寰椾竴緋誨垪淇℃伅錛屽HttpSession錛孒ttpRequest絳夈傜敋鑷充綘鍙互鑷凡璁劇疆灞炴с?nbsp; 涓嬮潰鐪嬩竴浜涗唬鐮佺墖鏂? private List<IInterceptor> interceptors;//瀹氫箟涓緋誨垪鐨勫瓙鎷︽埅鍣?/font> public void setInterceptors(List<IInterceptor> interceptors) { 鍦╞efore(Method method, Object[] params, Object target)鏂規硶閲岋細 WebContext ctx = WebContextFactory.get();//鍞竴琚獶WR姹℃煋鐨勫湴鏂?br /> HttpSession session = ctx.getSession(); IInterceptor錛?/font> public interface IInterceptor { AopContext灝變笉蹇呰創鍑烘潵浜嗭紝 闅忚嚜宸插畾涔変簺浠涔堝睘鎬э紝涓嶈繃灝卞唴緗簡涓涓狹ap錛岀敤鏉ヤ繚瀛樻暟鎹艦浜嗐?/font> 涓嬮潰鏉ョ湅鐪嬮厤緗枃浠訛細 <beans> <!--灝嗚鏆撮湶緇橠WR鐨凷ervice--> <!--涓繪嫤鎴櫒錛岀粰瀹冭緗瓙鎷︽埅鍣?-> 灝?榪欐牱錛屽湪閰嶇疆DWR鐨勯厤緗枃浠舵椂錛岄厤緗?lt;creator>鏃朵嬌鐢⊿pring鐨凜reator灝卞彲浠ョ洿鎺ヤ嬌鐢ㄤ笂闈㈢殑Service浜嗐傚綋 DWR榪滅▼璇鋒眰鏃訛紝鍦ㄩ厤緗寖鍥村唴鐨勬柟娉曠殑璋冪敤閮戒細琚富鎷︽埅鍣ㄦ嫤鎴紝騫朵笖閬嶅巻銆佹墽琛屾墍鏈夊瓙鎷︽埅鍣ㄣ傚師鏈夌殑Service涓嶉渶瑕佹敼鍔紝鍙渶瑕佸鍔犱竴涓?Spring鐨勯厤緗枃浠訛紝灝嗗師鏈夌殑Service鍐嶅姞涓灞侫op鐨勮交綰便?/font> 榪欐槸涓縐嶅疄鐜版柟娉曘傚鏋滄湁鍒殑鏂規硶璁〥WR鏇村畨鍏ㄣ佹湁鏁堬紝璇蜂竴瀹氬憡鐭ャ傦細錛? 鍋氭硶鏄湪鏈嶅姟閲屽畾涔夋柟娉曠殑鏃跺欙紝鎶婁互涓婄殑鍏冪礌浣滀負鍙傛暟銆傚湪鏂規硶浣撳唴鐩存帴浣跨敤鍗沖彲銆傝屼笉蹇呮媴蹇冨畠鐨勬潵婧愶紝鏉ユ簮鏄疍WR浼氳嚜宸叉牴鎹弬鏁扮殑綾誨瀷娉ㄥ叆銆傚湪瀹㈡埛绔皟 鐢ㄧ殑鏃跺欎笉闇瑕佹彁渚涜繖涓弬鏁般係ervletContext涔嬬被鐨勪笢瑗夸綔涓篢hreadLocal鐨勫彉閲忎繚瀛樿搗鏉ョ殑銆傜畝鍗曠殑紺轟緥銆?/p>
1銆佹湇鍔′唬鐮?nbsp; 2銆乻pring閰嶇疆鏂囦歡 <beans> 3銆乨wr.xml <dwr> 浠?涓婄殑浠g爜鍙婇厤緗枃浠跺彲浠ヨ揪鍒扮洰鐨勶細DWR涓嶴pring緇撳悎錛孌WR鐩存帴浣跨敤Spring綆$悊鐨凚ean浣滀負鏈嶅姟錛屽綋鐒訛紝鍙桽pring綆$悊鐨凚ean鍔?鑳戒竴鐐歸兘涓嶅噺錛屽鏉傜殑濡傛湁鐫浜嬪姟綆$悊鐨凚ean鍚屾牱鏈夌敤銆?鑰屼笖灝界鏄疭pring綆$悊鐨凚ean錛屾柟娉曠殑鍙傛暟涓湁Servlet鐩稿叧鐨勫弬鏁幫紝DWR鍚屾牱鑷姩娉ㄥ叆銆?/font> 鐜板湪鍘昏皟璇曢〉闈㈢湅鐪嬫垜浠毚闇茬殑鎺ュ彛鍙婃晥鏋滃浣曪紒鍦ㄨ皟璇曢〉闈㈡壘鍒皊tore鐨勬湇鍔★紝鐐瑰嚮榪涘幓錛屽彲浠ヨ鍒版毚闇茬殑鏂規硶鏈変袱涓細 涓涓槸SetAttribute("","",AUTO)錛岀涓変釜鍙傛暟琛ㄦ槑鑷姩娉ㄥ叆錛屽鎴風鍙渶瑕佹彁渚涘墠涓や釜鍙傛暟鍗沖彲銆?/font> 涓涓槸GetAttribute錛?ldquo;”錛孉UTO錛夛紝絎簩涓弬鏁拌〃鏄庤嚜鍔ㄦ敞鍏ワ紝瀹㈡埛鍙渶瑕佹彁渚涗竴涓悕瀛楀弬鏁板彇鍊煎嵆鍙?/font>
]]>
鎴戞槸涓涓伓鐒剁殑鏈轟細鐭ラ亾Jmesa,鎴戝湪鍋氫竴涓暟鎹睍鐜扮郴緇熺殑鏃跺欐兂瀵繪壘ET鐨勫府蹇?浣嗗彂鐜癊T宸變笉鍐嶆洿鏂?浣滆呮妸綺懼姏杞Щ鍒頒簡鏂扮殑欏圭洰涓?涔熷氨鏄繖涓?
JMesa.榪欎釜欏圭洰鐨勭洰鐨勬槸涓哄紑鍙戣呮彁渚涙洿鏈夋晥鐨勮〃鏍煎睍鐜扮殑API,鑰屼笉鏄畝鍗曠殑TagLib.鏃犺浠庣伒媧繪?鏄撴墿灞曟?鏄撶敤鎬?鍧囨瘮ET涓婁簡涓涓眰
嬈?鏈榪慠elease鐨勭増鏈噷闈?騫朵笉鍖呮嫭TagLib.鑰屽湪涓嬩竴涓増鏈?2.1.0)灝嗕細鍔犲叆TagLib,鐩墠TagLib宸辯粡鍙敤,鍦⊿VN閲屽凡
鏈?鍙槸絳夊緟涓嬩竴涓増鏈殑鍙戝竷,鍏墮棿浼氭湁涓浜涙洿鏂?涓嶈繃浼氬吋瀹圭洰鍓嶇殑TagLib鐨?
鍋囧鎴戜粠API寮濮嬩粙緇岼Mesa,鎭愭曞茍涓嶆槸涓ソ鐨勫姙娉?鍍忔垜浠ュ墠鐨勬枃绔犻噷闈㈡湁浠嬬粛,緇撴灉鍙嶅搷涓嶅ぇ.榪欐鍐沖畾浠嶵agLib鍏ユ墜,鏉ョ粰澶у浠嬬粛涓涓婮mesa.
澶у鍙互浠庨檮浠墮噷鎷垮埌涓涓狣emo.娉ㄦ剰Demo渚濊禆JMesa浠ュ強鍏朵粬Lib.鍦↙ib鏂囦歡澶逛笅鏈夎緇嗚鏄?
鐜板湪鏉ョ湅鐪婮Mesa鐨勪嬌鐢?
浼拌姣旇緝瀹規槗鐪嬪緱鎳傜殑浠g爜鍚?
Jmesa
鐨勬絳捐鑼冨綋涓彧鏈変笁涓猅ag:Table,Row,Column.鑰屽綋鍓嶇殑TagLib瀹炵幇涓彧瀹炵幇浜員able鍜孋olumn涓や釜(Row鏄彲閫?
鐨?.鍙﹀姞涓涓狿roperty鐨凾ag.姝ら樁孌?Property鐨凾ag鏄緢鏈夌敤鐨?鍏惰搗鍒扮殑浣滅敤涓嶹ebwork鐨凱ropertyTag鐩稿樊鏃?
鍑? 鐢ㄦ潵鑾峰緱瀵硅薄鐨勬煇涓睘鎬?涔嬫墍浠ヤ嬌鐢≒roperty
Tag鏄洜涓哄綋鍓嶇殑TagLib鏈変釜闄愬埗灝辨槸鏆傛椂涓嶆敮鎸佸JSTL鐨?{}榪欑鍐欐硶.灝嗘潵浼氭敮鎸?灞婃椂Property
Tag涔熶細緇х畫鑾峰緱鍏煎.Jeff姣旇緝鍊懼悜浜庝嬌鐢ㄨ凱浠g殑鏂瑰紡瀹炵幇Tag,閭f牱鍙互鏀寔${}榪欐牱鐨勫啓娉?涓嶈繃浣滀負TagLib鐨勫紑濮?闂涓嶅ぇ.鏈夋椂闂村啀
閲嶆瀯涓涓婽agLib,鏀寔JSTL鐨勫啓娉?
濂戒簡,鏉ヨ涓璇磋繖浜汿ag鐨勪嬌鐢ㄦ柟娉?
Table:
瀹為檯涓?鐪熸Release鐨勭増鏈噷闈㈠皢浼氬姞涓妚ar浠ュ強Limit灞炴?
Attribute
Description
id
琛ㄦ牸鐨処D(蹇呴』)
items
瀵硅薄鎴栬匨ap鐨勯泦鍚?(蹇呴』)
caption
琛ㄦ牸鐨勬爣棰?
theme
琛ㄦ牸鐨勪富棰?鑷畾涔夋牱寮?br>
exportTypes
浣跨敤閫楀彿鍒嗗壊瀵煎嚭鐨勭被鍨?鐩墠鏀寔瀵煎嚭綾誨瀷鏈塁SV,Excel
width
琛ㄦ牸瀹藉害
style
鍗寵〃鏍肩殑Style灞炴?br>
styleClass
浣跨敤鐨凜ss鐨凜lass鍚嶅瓧
border
琛ㄦ牸瀹?br>
cellpadding
琛ㄦ牸灞炴?br>
cellspacing
琛ㄦ牸灞炴?br>
var灞炴у煎嵆鍦–olumn鏍囩閲屽彲浠ヨ幏寰楃殑瀵硅薄鍙橀噺.
Limit灞炴ф槸淇濆瓨鍦ㄥ綋鍓嶈姹傜殑Limit鐨勫璞″悕.
Row:
璇ag鏄彲閫夌殑.瀹為檯涓奐mesa鎻愪緵浜嗕竴緋誨垪榛樿鐨勪簨浠跺搷搴?鏈夊繀瑕佺殑鎯呭喌涓嬫墠浣跨敤.
Attribute
Description
highlighter
鏄惁楂樹寒鏄劇ず
onclick
鐐瑰嚮浜嬩歡
onmouseout
榧犳爣縐誨嚭浜嬩歡
onmouseover
榧犳爣縐誨叆浜嬩歡
Column:
ColumnTag鐨勪嬌鐢ㄦ柟娉曟湁涓嬮潰鍑犵:
Attribute
Description
property
Java瀵硅薄鎴朚ap鐨勫睘鎬у悕
title
鍒楃殑鍚嶇О
filterable
鏄惁鍙寜榪囨護鏉′歡鏌ユ壘
sortable
鏄惁瑕佹帓搴?br>
width
鍒楀
style
Style灞炴?br>
styleClass
浣跨敤鐨凜ss鐨凜lass鐨勫悕瀛?br>
灝嗕粎浠呰緭鍑哄璞′腑Name灞炴у?鍒楀悕鏄疦ame
榪欐牱鍙互寰楀埌鑷畾涔夌殑鍒楀悕,鍙互璁╁垪鍙煡鎵?鍙帓搴?褰撶劧浣燬erver绔渶瑕佺浉搴旀彁渚涙帓搴忓強鏌ユ壘鍔熻兘.涓嶈繃灝辯畻浣犱笉鎻愪緵,瀹㈡埛绔篃浼氭妸褰撳墠緇撴灉鎺掑簭鍜屾煡鎵劇殑.
榪欓噷緇撳悎浜哖ropertyTag.瀹炵幇鑷畾涔夊垪鏄劇ず.鍙互鐏墊椿瀹氬埗鑷繁鐨勫崟鍏冩牸.
鍦–olumnTag閲岄潰,浣跨敤PropertyTag鐨勬椂鍊?鍙互鎸囧畾Name灞炴?濡傛灉涓嶆寚瀹氬垯浣跨敤褰撳墠Column鐨凱roperty灞炴у?
浠ュ悗灝嗘敮鎸?
鐩鎬俊緇忚繃涓婇潰鐨勪竴鐣粙緇?澶у瀵笿mesa鏈変竴瀹氱殑鎰熸ц璇嗕簡鍚?榪樻病鏈?涓嬭澆Demo,鎵旇繘Tomcat 鐨凙pp閲岃窇涓涓嬪氨鏄庣櫧浜?
鏈変粈涔堝緩璁?璇蜂竴瀹氳鍛婅瘔鎴?:).
闄勪歡鍦?http://www.javaeye.com/topics/download/4eaaa38d-e838-459d-aef2-3be6c4d043df
]]>
]]>
MainInteceptor:
this.interceptors = interceptors;
}
AopContext context = new AopContext(); context.setSession(session);
for(Iterator it = interceptors.iterator(); it.hasNext();){
IInterceptor interceptor = (IInterceptor) it.next();
interceptor.execute(context);
}
public void execute(AopContext context);
}
<bean id="bookManager" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyInterfaces">
<value>net.jf.ajax.business.BookManager</value>
</property>
<property name="target">
<ref local="bookManagerImpl"/>
</property>
<property name="interceptorNames">
<list>
<value>dwrAdvisor</value>
</list>
</property>
</bean>
<bean id="bookManagerImpl" class="net.jf.ajax.business.impl.BookManagerImpl"/>
<!--瑁呴厤鍣紵濡傛灉鐪嬩笉鎳傦紝鍏堢湅鐪婼pring鐨凙op鍚?錛歅-->
<bean id="dwrAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
<property name="advice">
<ref local="dwrInterceptor"/>
</property>
<property name="patterns">
<list>
<value>.*.*</value>
</list>
</property>
</bean>
<bean id="dwrInterceptor" class="net.jf.ajax.iterceptor.MainInterceptor">
<property name="interceptors">
<list>
<ref bean="test"/>
</list>
</property>
</bean>
<!--鍏朵腑涓涓瓙鎷︽埅鍣ㄧ殑瀹炵幇-->
<bean id="test" class="net.jf.ajax.iterceptor.TestInterceptor"/>
</beans>
]]>
package net.jf.ajax.session;
import javax.servlet.http.HttpSession;
public class Store {
public void setAttribute(String name,String value,HttpSession session){
session.setAttribute(name,value);
}
public String getAttribute(String name,HttpSession session){
return (String) session.getAttribute(name);
}
}
<bean id="store" class="net.jf.ajax.session.Store">
</bean>
</beans>
<allow>
<create creator="spring" javascript="store">
<param name="beanName" value="store"/>
</create>
</allow>
</dwr>
]]>private String file;
private Resource resource;
public void setResource(Resource resource) {
this.resource = resource;
try {
this.file = resource.getFile().getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
public void setFile(String file) {
this.file = file;
}
Spring閰嶇疆鏂囦歡濡備笅錛?br /> <bean id="mybean" class="net.jf.mybean">
<property name="resource">
<value>/WEB-INF/config.xml</value>
</property>
</bean>
涓婇潰鐨勪緥瀛愭槸鍦╓ebApplicationAContext涓殑銆係pring浼氭牴鎹瓹ontext鐨勮繍琛岀幆澧冨喅瀹氬幓鍝噷鍔犺澆璧勬簮銆傚鏋滄槸Application紼嬪簭銆傚嵆浣跨敤綾諱技ClassPathXmlApplicationContext榪欐牱鐨凜ontext錛孲pring鍒欎細浣跨敤ClassPathSource鏉ヤ唬琛ㄨ祫婧愩傚皢浼氬湪紼嬪簭榪愯鏃剁殑ClassPath涓鎵捐祫婧愩備絾瑕佹敞鎰忎竴鐐廣係pring鐩墠鑳芥壘鍒扮殑璧勬簮鏄湪FileSystem涓殑銆傝屼笉鑳芥壘鍒癑ar鍖呴噷闈㈢殑璧勬簮錛屽氨綆椾綘鐨勮祫婧愮殑紜湪ClassPath褰撲腑銆傝繖涓鐐瑰湪JavaDoc閲屾湁璇存槑銆傛垜鍙堟槸鍦ㄧ姱鏄悓鏍風殑閿欒鍚庢墠鎯沖埌鍘繪煡鎵炬枃妗c傘傘傚樋銆傛暀璁晩銆?br /> 榪欎簺鍙槸寰堢矖嫻呯殑鐢ㄦ硶銆傝涓嬫潵浠ュ蹇?銆傘傚鏋滄湁涓嶆紜垨涓嶅Ε褰撶殑鍦版柟榪樻湜鎸囨銆傦細錛?br />
]]>
瀹㈡埛绔獙璇佺殑渚嬪瓙鍙Webwork鑷繕鐨勪緥瀛?ldquo;showcase”銆備嬌鐢ㄥ鎴風楠岃瘉澶т綋涓婅窡浠ュ墠鐨勬湇鍔″櫒绔獙璇佺浉浼鹼紝鍙槸澶氫簡涓浜涙楠ゃ傚畬鏁寸殑鏈変互涓嬪嚑涓楠わ細
涓銆佺紪鍐橷XXAction-alias-validation.xml錛嶏紞楠岃瘉閰嶇疆鏂囦歡銆?/font>鏂囦歡鏀懼湪闇瑕侀獙璇佺殑Action綾誨悓涓鐩綍涓嬶紝alias鏄彲閫夐」錛屽鏋滄湁鍑犱釜Action浣跨敤浜嗗悓涓涓狝ction綾匯傝屼綘鎯沖鍏朵腑涓涓狝ction榪涜楠岃瘉錛岄偅涔坅lias灝辨槸閭d釜Action鐨勫悕瀛椼傚錛歅ersonAction.java錛岃editPerson,savePerson,deletePerson絳堿ction浣跨敤鍒幫紝鑰屼粎闇瑕佸savePerson榪欎釜鍔ㄤ綔鏉ラ獙璇佹椂錛岄厤緗枃浠跺悕瀛楀氨鏄細PersonAction-savePerson-validation.xml銆俉ebwork鏀寔鐨勫鎴風楠岃瘉綾誨瀷鏈夛細
浜屻侀厤緗甔work.xml錛屼繚璇佹嫤鎴櫒鏍堥噷鏈塚alidation鐨勬嫤鎴櫒
涓夈佺紪鍐橨sp錛圴M鎴朏TL錛夈?/font>榪欓噷鏈夊嚑涓渶瑕佹敞鎰忕殑鍦版柟銆?br /> 1.鍦↗sp鍔犱笂涓涓狧ead鏍囩錛?/font><ww:head/>鐨勭粨鏋滄槸鐢熸垚涓や釜Css鏍峰紡鐨勯摼鎺ワ細
<link rel="stylesheet" href="/bean/webwork/xhtml/styles.css" type="text/css"/>
<link rel="stylesheet" href="/bean/webwork/jscalendar/calendar-blue.css" type="text/css"/>
涓昏鏄幏鍙栨樉紺洪敊璇槸鐨勬牱寮忋?br /> 2銆佷嬌鐢?lt;ww:form>錛屽緢閬楁喚鎴戜滑鍙兘澶熺敤Webwork鐨刄I鏍囩錛岃繖鏍鋒墠鑳戒嬌鐢ㄥ埌濂圭殑瀹㈡埛绔獙璇佹満鍒躲傚湪榪欓噷瑕佹姳鎬ㄤ竴涓嬨傘?lt;ww:form>鐨勬爣絳炬槸鎸烘柟渚匡紝浣嗘槸鍦ㄧ壒瀹氱殑鍦哄悎錛屾垜浠繀欏諱嬌鐢ㄨ嚜宸茬殑鏍峰紡鍜岄鏍肩殑甯冨眬銆傝學ebwork榛樿鐨刋HTML涓婚鐨勬爣絳句細鎶婂竷灞鎼炰貢銆傚綋鐒訛紝鎴戝彲浠ヤ嬌鐢⊿imple涓婚鐨勩備絾鏄湪闇瑕佸鎴風楠岃瘉鐨勬椂鍊欙紝Simple涓婚鏄涓嶉氱殑銆備篃灝辨槸璇磋姹備富棰樺繀欏繪槸XHTML浠ヤ笂銆傘傛垨鑰呰嚜瀹氫箟鐨勪富棰橈紙鑷凡鎻愪緵閿欒淇℃伅鎶ュ憡鍔熻兘錛夈傚懙銆傛病鍔炴硶錛屽厛灝嗗氨鐫鐢╔HTML鍚с?br /> 鍦?lt;ww:form>鐨勬爣絳鵑噷浣跨敤namespace 鍙夾ction灞炴с傚鏋滀綘鐨凙ction鏄?foo/bar/new.action閭d箞錛屼綘蹇呴』榪欐牱鍐欙細
<ww:form namespace="/foo/bar" action="new" validate="true"/>
validate="true"涓鍙ュ皢浼氬湪瀹㈡埛绔敓鎴愪竴鍙ワ細
<script src="/bean/webwork/xhtml/validation.js"></script>
濡傛灉浣犺繖鏍峰啓錛?br /> <ww:form action="/foo/bar/new.action" validate="true"/>錛屼綘灝嗗緱涓嶅埌瀹㈡埛绔獙璇併傝娉ㄦ剰錛岃繖涓粏鑺備笉瀹瑰拷瑙嗐傛垜琚繖涓皬闂鎼炲ぇ澶翠簡銆傚悗鏉ユ煡鏂囨。鐨勬椂鍊欐墠鐭ラ亾Webwork宸茬粡鎻愰啋鎴戜滑瑕佸儚涓婁竴縐嶅啓娉曢偅鏍峰啓銆傚洜涓哄ス瑕佺煡閬撳摢涓悕瀛楃┖闂翠笅鐨勫摢涓狝ction闇瑕佽楠岃瘉錛佺湅鍚с傝繖鏄績鎬ョ殑閿欍備笉鐪嬫枃妗e悗鏋滃氨鑷礋銆?br /> 浠ヤ笂涓ょ鍐欐硶錛屽湪欏甸潰涓婄敓鎴怞s鐨勭粨鏋滄槸涓嶄竴鏍風殑銆傜涓縐嶅啓娉曚細鍦ㄩ〉闈笂鐢熸垚鐩稿簲鐨勯獙璇佽鍒欍傜浜岀鍐欐硶鐢熸垚鐨凧s錛屽彧鏄畝鍗曟竻妤氭姤閿欎俊鎭劧鍚庢彁浜よ姹傚埌鏈嶅姟鍣紝鐢辨湇鍔″櫒鏉ラ獙璇併?br />
鍙渶瑕佽繖涓夋錛學ebwork2.2.2鐨勫鎴風楠岃瘉鍔熻兘灝辯畻鏄嬌鐢ㄤ簡銆傛劅瑙夎繕涓嶉敊銆傚敮涓綰抽椃鐨勮繕鏄疻ebwork寮哄埗鎴戜粈涔堜嬌鐢ㄥス鐨勬ā鏉褲?br /> Ps:鏈夊緢澶氱ず渚嬩唬鐮佹病鍚岃創鍑烘潵錛屾槸鏈夊師鍥燚銆傜幇鍦ㄧ紪杈戞槸浣跨敤FCKEditor錛屽彟澶栦袱涓狤ditor鍦ㄦ垜鐨勬満瀛愪笂鍙樻垚浜嗙櫧鐥淬傚嚭閿欍佸畬鍏ㄤ笉鑳界紪杈戙傘傘傛墜涓婂張娌℃湁濂界殑“XML鍒?HTML”鐨勫ソ宸ュ叿銆傘傛墍浠ユ病鎶婁唬鐮佽創涓婃潵銆傘傝鎯咃紝鍙互鐪媁ebwork鐨凷howcase銆傝繖涓滆タ澶嚭褰╀簡銆傦細P
]]>
浜屻佽欏靛畾涔夌殑contentType.
鍏朵腑欏甸潰鐨勭紪鐮佹槸鍐沖畾鎬х殑鍥犵礌銆備袱鑰呬竴鑷存槸錛屾祻瑙堝櫒浼氭甯告樉紺哄唴瀹癸紝鍚﹀垯鏈夊彲鑳戒駭鐢熶貢鐮佺幇鍍忋?/font>
濡傛灉涓涓狧tml鏂囦歡錛屾枃浠剁紪鐮佷負UTF-8銆俢ontentType璁句負鐩稿悓銆傚垯浣跨敤IE鎴朏irefox鏌ョ湅錛屼袱鑰呴兘浼氳嚜鍔ㄩ夋嫨姝g‘鐨勭紪鐮佸艦寮忔潵瑙i噴銆傚綋鎴戝皢contentType璁句負GB2312錛屼互涓轟細閫犳垚涔辯爜錛岀粨鏋滀笉浼氥傛垜璁や負鍘熷洜鏄繖鏍風殑錛氭枃浠剁紪鐮佽搗鍐沖畾浣滅敤錛屽姞涓奤tf-8鍖呮嫭浜咷B璇ユ湁鐨勫瓧絎︼紝鎵浠ヨ繖縐嶆儏鍐墊槸浠ュぇ鐨勬潵璁よ瘑灝忕殑銆傛病闂銆傦紙涓嶇煡鏄惁鏈夌悊瑙i敊璇? 錛歅錛夈?/font>
涓婅堪鎯呭喌涓轟嬌鐢ㄦ祻瑙堝櫒鐩存帴鎶婂紑緗戦〉鏂囦歡鐨勭粨鏋溿傚綋鎴戜嬌鐢╓ebwork鐨凙ction鏃訛紝灝咹tml鏂囦歡浣滀負緇撴灉鏃訛紙緇撴灉綾誨瀷涓篸ispatcher錛夛紝涔辯爜鍑虹幇浜嗭紒鏂囦歡緙栫爜涓篣TF-8錛岄〉闈㈠畾涔夌殑ContentType涓篣TF-8銆備絾鏄亸鍋忎嬌鐢↖E鍙奆ireFox鍧囧緱鍒頒貢鐮佺殑緇撴灉銆傞儊闂蜂腑鐢‵irefox鏌ョ湅浜嗛〉闈㈢殑灞炴э紝鎯婂鍦板彂鐜伴〉闈㈢紪鐮佸眳鐒舵槸GB2312銆傛垜鐚滄兂鏄疻ebwork鍦―ispatch欏甸潰鐨勬椂鍊欎嬌鐢ㄤ簡榛樿鐨勭紪鐮侊紝鎶婃湰鏉TF-8緙栫爜鐨勯〉闈㈤噸鏂扮敤GB2312緙栫爜涓嬈°備簬鏄瘯鐫鍦ˋction閲岄潰鑾峰緱Response騫舵妸瀛楃緙栫爜鏀逛負UTF-8銆傛渶鍚庡彂鐜扮粨鏋滀緷鐒朵竴鏍楓傝繖鏃訛紝鎴戣寰楀湪Action瀹屾垚鍚庯紝Webwork鎺ヤ笅鏉ヤ嬌鐢ㄤ簡Response錛屾垜鐨勮緗閲嶇疆浜嗐備簬鏄喅瀹氳嚜宸插啓涓涓猄ervlet錛屾寚瀹氬瓧絎︾紪鐮佷負UTF-8錛岀粨鏋滅洿鎺orward鍒版垜鐨凥tml欏甸潰銆傜粨鏋滄紜簡錛佸啀鏌ョ湅欏甸潰淇℃伅錛屼袱鑰呴兘鏄疷TF-8浜嗐?br />
騫蟲椂浣跨敤Webwork鏉ispatch鐨勯兘鏄疛sp錛屼笉鏇懼嚭鐜拌繃榪欐牱鐨勬儏鍐點傚師鍥犳槸Jsp浠嶉渶瑕佺紪璇戯紝緙栬瘧鏃朵細璇誨彇Jsp欏甸潰鎸囧畾鐨凜ontentType鏉ュ喅瀹歊esponse閲岀殑瀛楃緙栫爜銆侶TML鏂囦歡鍒欎笉涓鏍楓傝繖鏃跺彧鑳戒嬌鐢ㄩ粯璁ょ紪鐮併傚鏋滄垜鐨勫伐紼嬫槸Gb2312錛岄偅鏍規湰灝變笉瀛樺湪鍒氭墠鎵璁茬殑闂鐨勩?/font>