锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.鍒涘緩涓涓湇鍔¢〉闈㈡潵灞曠ず娑堟伅
2.鍒涘緩涓涓狝ction綾繪潵鍒涘緩娑堟伅
3.鍒涘緩涓涓繛鎺ction綾誨拰欏甸潰鐨勬槧灝?br> 璁╂垜浠潵鐪嬬湅榪欎釜Action錛屾湇鍔¢〉闈㈠拰鏄犲皠鐨勪緥瀛愩傚鏋滀綘鍠滄涔熷彲浠ヤ嬌鐢↖DE鏉ョ紪杈戜唬鐮併?br>
浠g爜濡備笅錛?br>棣栧厛錛屽畾涔変竴涓湇鍔¢〉闈㈡樉紺烘暟鎹?br><%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h2><s:property value="message" /></h2>
</body>
</html>
鍏舵錛屾垜浠渶瑕佷竴涓狝ction綾繪潵鍒涘緩娑堟伅
package tutorial;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorld extends ActionSupport {
public static final String MESSAGE = "Struts is up and running...";
private String message;
public String execute() throws Exception {
setMessage(MESSAGE);
return SUCCESS;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
鏈鍚庢垜浠渶瑕佷竴涓槧灝勬潵緇戝畾鎵鏈夈?br>緙栬緫struts.xml鏂囦歡鏉ユ坊鍔燞elloWorld鏄犲皠
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"<struts>
<package name="tutorial" extends="struts-default">
<action name="HelloWorld" class="tutorial.HelloWorld">
<result>/HelloWorld.jsp</result>
</action>
</package>
</struts>
鐒跺悗閮ㄧ講璇ュ簲鐢ㄧ▼搴忥紝鎵撳紑http://localhost:8080/tutorial/HelloWorld.action瑙傚療鍑虹幇浜嗕粈涔堬紝浣犱細鐪嬭涓涓爣棰樹負Hello World錛佺殑欏甸潰騫舵湁涓涓?#8220;Struts is up and running”鐨勬秷鎭?br>
浠g爜鏄浣曞伐浣滅殑錛?br>1.瀹瑰櫒鎺ユ敹鍒癏elloWorld.action鐨勮姹傘傛牴鎹畐eb.xml鐨勮緗紝瀹瑰櫒浼氬鎵炬墍鏈夎鍙戦佸埌org.apache.struts2.dispatcher.FilterDispatcher鐨勮姹傦紝鍖呮嫭鎵鏈夌殑*.action鐨勮姹傘侳ilterDispatcher鏄鏋剁殑鍏ュ彛鐐廣?br>2.妗嗘灦瀵繪壘涓涓槧灝勫悕涓篐elloWorld鐨凙ction綾匯傚畠鎵懼埌涓嶩elloWorld綾葷浉鍏崇殑鏄犲皠錛屽茍璋冪敤Action鐨別xecute鏂規硶銆?br>3.execute鏂規硶璁劇疆浜嗘秷鎭茍榪斿洖SUCCESS銆傚鏋滆繑鍥炵殑鏄疭UCCESS錛屾鏋朵細媯鏌ction綾繪槧灝勭殑鍝釜欏甸潰灝嗚瑁呰澆銆傛鏋朵細鍛婅瘔瀹瑰櫒緇樺埗HelloWorld.jsp浣滀負璇鋒眰鐨勫搷搴斻?br>4.褰揌elloWorld.jsp琚皟鐢紝<s:property value="message" />鏍囩璋冪敤HelloWorld鐨凙ction綾葷殑getter鏂規硶getMessage錛屽茍灝唌essage鐨勫煎悎騫跺埌鍝嶅簲涓幓銆?br>5.涓涓函綺圭殑鍝嶅簲琚彂閫佸洖嫻忚鍣ㄣ?br>
嫻嬭瘯Actions綾伙紝浠g爜濡備笅
package tutorizl
import junit.framework.TestCase;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldTest extends TestCase {
public void testHelloWorld() throws Exception {
HelloWorld hello_world = new HelloWorld();
String results = hello_world.execute();
assertTrue("Expected a success results!", ActionSupport.SUCCESS.equals(results));
assertTrue("Expected the default message!",HelloWorld.MESSAGE.equals(hello_world.getMessage()));
}
}
闇瑕佽浣忕殑鏄?妗嗘灦浣跨敤Action綾繪潵澶勭悊HTML琛ㄥ崟鍜屽叾浠栬姹傦紝Action綾昏繑鍥炰竴涓濡係UCCESS,ERROR,鎴朓NPUT鍚嶇О銆傛牴鎹潵鑷猻truts.xml鐨勬槧灝勶紝涓涓繑鍥炵殑鍚嶇О浼氶夋嫨鐩稿簲鐨勯〉闈紝鍙﹀鐨凙ction錛屾垨鍏朵粬web璧勬簮錛堝浘璞★紝PDF錛夈?br>褰撲竴涓湇鍔$欏甸潰琚粯鍒訛紝澶у鎯呭喌涓嬩細鍖呮嫭鐢盇ction綾繪彁渚涚殑鍔ㄦ佹暟鎹傛鏋朵細鎻愪緵涓緋誨垪鐨凥TML鏍囩鍒涘緩欏甸潰鏉ヤ嬌寰楁樉紺哄姩鎬佹暟鎹洿鍔犵畝鍗曘?/p>
浣跨敤get鏂規硶鏃?闇瑕佷慨鏀?$TOMCAT/conf/server.xml閮ㄧ講鏂囦歡,鍦╟onnectior灞炴т腑娣誨姞URIEncoding="GBK"鍗沖彲
浣跨敤post鏂規硶鏃?鏈?縐嶆柟娉曞彲閫?/font>
1) 瑕嗗啓ActionServlet鐨刾rocess鏂規硶,娣誨姞request.setEncoding("GBK");
2) 娣誨姞涓涓繃婊ゅ櫒SetCharacterEncodingFilter綾?姝ょ被鍙互鍦?TOMCAT\webapps\servlets-examples\WEB-INF\classes\filters鎵懼埌,涓嶈繃鏂逛究璧瘋,鑷繁鍔犱簡鐐逛笢瑗?婧愮爜濡備笅:
public class SetCharacterEncodingFilter implements Filter {
聽private FilterConfig filterConfig;
聽public void destroy()
聽{
聽聽// TODO Auto-generated method stub
聽聽
聽}
聽public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
聽{
聽聽// TODO Auto-generated method stub
聽聽try{
聽聽聽request.setCharacterEncoding("GB2312");
聽聽聽HttpServletResponse res = (HttpServletResponse)response;
聽聽聽res.setHeader("Pragma", "No-cache");
聽聽聽res.setHeader("Cache-Control", "no-cache");
聽聽聽res.setHeader("Pragram", "no-cache");
聽聽聽filterChain.doFilter(request, response);
聽聽}catch(ServletException e)
聽聽{
聽聽聽filterConfig.getServletContext().log(e.getMessage());
聽聽}catch(IOException e)
聽聽{
聽聽聽filterConfig.getServletContext().log(e.getMessage());
聽聽}
聽}
聽public void init(FilterConfig filterConfig) throws ServletException
聽{
聽聽// TODO Auto-generated method stub
聽聽this.filterConfig = filterConfig;
聽}
}
鍦╳eb.xml涓儴緗茶繖涓繃婊ゅ櫒
<filter>
聽聽聽 <filter-name>servfilter</filter-name>
聽聽聽 <filter-class>com.yourcompany.struts.SetCharacterEncodingFilter</filter-class>
聽 </filter>
聽 <filter-mapping>
聽聽聽 <filter-name>servfilter</filter-name>
聽聽聽 <url-pattern>/*</url-pattern>
聽 </filter-mapping>
聽
鍏充簬鍥介檯鍖栭棶棰?鎴戞浘緇忚鏁欒繃鑰佸笀,涓嶈繃鑰佸笀濂藉儚涓嶆槸榪欎釜鏂瑰悜鐨?/font>
鍚庢潵鎵嶅彂鐜版槸涓涓緢鎰氳牏鐨勯棶棰?瑕佹眰鏄疉pplicationResources_zh_CN.properties鎴朅pplicationResources_zh.properties 鑰屾垜鍗寸敤浜咥pplicationResources_cn.properties
鍒囪CN鏄ぇ鍐欑殑
native2ascii -encoding gb2312 application_temp.properties聽 application_CN.properties
native2ascii鍙互鍦?JAVA_HOME/bin涓嬫壘鍒?/font>