Struts程式設計之HelloWord實戰入門篇

來源:互聯網
上載者:User
[目標]

實現一個最簡單的Struts程式。程式包括一個輸入頁和輸出頁,輸入頁。

對於學習程式設計,我們已習慣於從Hello程式開始,實踐證明,這是一個最有效入門方法。下面就著手設計我們的第一個Struts程式----Hello程式。Hello程式的目標是實現從一個輸入JSP頁面中的輸入框輸入一個“Hello”單詞,在另一個輸出JSP頁面中顯示“Hello”一詞。根據Struts架構的要求,這個Hello程式將包含輸入JSP檔案、輸出JSP檔案、Action檔案、FormAction檔案及設定檔。也就是說,這個Hello程式是一個完整的Struts程式,它可直接在Tomact、Resin等伺服器上運行。

[背景知識]

以前使用servlet開發應用系統的人深深感受到在java代碼中嵌入大量html代碼是一件非常痛苦的事,於是sun推出了JSP,解決了java代碼中嵌入html代碼的問題。但是很快程式員們就知道,用JSP“在html代碼中嵌入大量java代碼”跟“在java代碼中嵌入大量html代碼”是一樣的非常痛。JSP是這樣,ASP也是這樣。於是,Craig R. McClanahan借用MVC的思想,把Java web應用程式的java和html分離開放在不同的檔案中,分成了三部分,也就是struts;後來,微軟也學會了這種分離方法,但微軟懶一些,只分成了兩部分,也就是ASP.NET。

Struts (org.apache.struts)是一個開放原始碼的Web應用程式框架,基於MVC設計模式,使用servlet和JSP API建立,可以用來構建複雜的Web應用。它允許我們分解一個應用程式的商業邏輯、控制邏輯和表現邏輯的代碼,使它的重用性和維護性更好。Struts架構是Jakarta工程的一部分,由Apache軟體基金會管理。Struts可以從http://jakarta.apache.org/ struts網站下載。

Struts架構提供以下服務。

作為MVC結構中的controller的servlet.

JSP裡用於bean管理、HTML和javascript產生、模板處理和流程式控制制的JSP標籤庫。

用於國際化訊息的架構。國際化你的Web應用,意味著你的Web應用在使用時可以讓使用者以喜愛的語言顯示。這意味著你需要建立一個應用資源檔,包含每種語言的資訊。

一個JDBC的實現來定義資料來源和資料庫連接池。

一個通用的的錯誤和異常處理機制,包括從一個應用程式資源檔讀取錯誤資訊。

XML文法分析。

檔案上傳工具。

註冊機制。

一個基於Struts的應用程式的展示層(view)使用Struts標籤庫(taglibs)構建。來自客戶的請求被傳遞給叫ActionServlet的servlet,它作為controller.使用了Struts的應用程式,所有需要通過架構的請求都通過ActionServlet傳遞。這個ActionServlet把資料從請求傳遞到ActionForm JavaBean。

ActionForm是代表從一個表單View組件輸入資料的JavaBean。這些表單由JSP用Struts html標籤庫產生。這個beam由 ActionServlet產生,帶request參數,它還請求ActionForm來驗證使用者提交資料的合法性。

ActionServlet通過定義一組ActionMapping來配置。一個ActionMapping是一個對象,它將請求中的URL映射到由應用程式開發人員提供的處理請求的組件。ActionServlet和ActionMapping的配置在XML設定檔中完成。

專用的應用程式用於處理請求的組件叫Action類。在MVC結構中,它們代表模型。它們可能用於驗證使用者輸入的合法性,假如在資訊處理過程中出現了應用程式錯誤,Action類可以建立一個error對象的執行個體,然後儲存慶HTTP request對象中。如果在Action類中的邏輯成功地被招待類給Controller傳遞一個ActionForward對象,代表所需的描繪響應的JSP。ActionForward有兩種:專門轉寄給特定的Action類或全域轉寄(任何一個Action類可以把這些ActionForwards轉給Controller)。

[步驟]

1、開啟Visual Struts開發環境:

(1)把檔案拷貝到本地硬碟的一個目錄下,例如

   F:/JavaWebStudio/

(2) 運行BIN目錄下的JavaWebStudio.exe檔案(同時自動在案頭建立一個捷徑,第二次啟動時,只需點擊案頭的捷徑即可),出現如下啟動介面:

另外,第一次運行JavaWebStudio,會提示是否要自動設定環境變數,建議選擇自動設定。

2、建立一個“空的Struts普通模板”應用程式:

選擇菜單“檔案”—“建立”—“建立項目”,彈出建立項目對話方塊。

在對話方塊中選擇“空的Struts普通用模板”,在項目名稱中輸入“Simple”,package (包名)和位置(項目的路徑)採用預設的值就行,當然也可以根據需要改變。最後點擊“確定”按鈕完成新項目的建立。

從檔案管理工具中可看出Simple項目的檔案結構如下:

Simple

+------config

+------lib

+------src

+------web

-------build.xml

-------hello.prj

在Simple項目根目錄下包含四個子目錄和兩個檔案,這是JSPStudio項目的標準結構,最好不要改變它們預設的名稱,否則會出現問題。

3、利用Struts檔案嚮導建立新的應用:

在JSPStudio檔案管理工具內點擊滑鼠右鍵,在彈出的菜單中選擇“Struts檔案嚮導”進入Struts檔案嚮導對話方塊,也可以選擇菜單“檔案”—“建立”—“ Struts檔案嚮導”進入Struts檔案嚮導對話方塊。

在Struts檔案嚮導對話方塊JSP檔案標籤下的檔案名稱輸入欄中輸入“HellWord”檔案名稱,其它檔案採用預設的設定,點擊“確定”按鈕完成在Struts檔案嚮導。

重新整理JSPStudio檔案管理工具,這時發現web目錄下自動產生了兩個檔案,分別是HellWord.jsp和HellWord.jsp,前者是輸入JSP檔案,後者是輸出JSP檔案;src/emptyprj目錄下自動產生了兩個檔案,分別是HellWord Action.java和HellWord Form.java,前者是Action檔案,後者FormAction檔案。

4、編譯、啟動伺服器:

點擊工具條上的編譯按鈕或選擇菜單“產生”—“編譯”開始項目的編譯。編譯過程和結果在輸出欄中顯示出來,內容如下:

C:/Documents and Settings/Administrator/案頭>F:

F:/>cd F:/JavaWebStudio/JavaWebStudioWorkDir/Simple

F:/JavaWebStudio/JavaWebStudioWorkDir/Simple>ant -buildfile build.xml

Buildfile: build.xml

prepare:

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple

[copy] Copying 2 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF

[copy] Copying 6 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/classes

[copy] Copying 5 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/classes

[mkdir] Created dir: F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/lib

[copy] Copying 18 files to F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/lib

[mkdir] Created dir: F:/JavaWebStudio/JavaWebStudioWorkDir/wars

compile:

[javac] Compiling 3 source files to

F:/JavaWebStudio/jakarta-tomcat-5.0.24/webapps/Simple/WEB-INF/classes

dist:

[jar] Building jar: F:/JavaWebStudio/JavaWebStudioWorkDir/wars/Simple.war

BUILD SUCCESSFUL

Total time: 5 seconds

上述輸出表明利用ant 編譯build.xml所設定的項目已成功。把編譯結果拷貝到tomcat伺服器webapps目錄下,並產生打包檔案Simple.war。

5、啟動伺服器:

點擊工具條上的啟動伺服器按鈕或選擇菜單“運行”—“ 啟動伺服器”啟動伺服器jakarta-tomcat伺服器。

6、運行:

展開檔案管理工具Simple項目下web目錄,可見到HelloWord.jap和HelloWordOut.jsp檔案,通過雙擊開啟HelloWord.jap檔案,。編輯視窗分上下兩部分,上部分是來源程式編輯,下部分是可視化編輯,與Dreamweaver MX編輯視窗相似。

點擊工具條上的運行按鈕或選擇菜單“運行”—“ 運行(web瀏覽)”這時開啟顯示出HelloWord.jsp的運行結果。在運行結果頁面中的輸入框中輸入“Hello Word”,點擊“提交”按鈕,這時轉寄到HelloWordOut.jsp檔案,HelloWordOut.jsp頁面中輸出“Hello Word”一詞。

產生的原始碼如下:

<html><head><title></title>

<META http-equiv=Content-Type content="text/html; charset=gb2312">

</head>

<body bgColor=white>

<base href="http://localhost:8080/Simple/HelloWord.jsp"> <form name="HelloWordForm" method="post" action="/Simple/HelloWordAction.do;jsessionid=CFFAC422C4A779419348832D588CA5BE">

<input type="text" name="mybeanvariable1" value=""> <input type="submit" value="提交"> <input type="reset" value="重寫">

</form>

</body>

</html>

產生的原始碼如下:

<html><head><title></title>

<base href="http://localhost:8080/Simple/HelloWordOut.jsp">

</head>

<body bgcolor="white">

Hello Word

</body>

</html>

[專案檔結構]

config目錄下包含了所有的設定檔和Struts標籤的描述檔案,例如web.xml、struts-config.xml、struts-bean.tld、struts-html.tld、struts-logic.tld和struts-template.tld等檔案。

lib包含了Struts庫檔案和帶用其它庫檔案,例如struts.jar、struts-legacy.jar、commons-lang.jar和xerces.jar等檔案。

src目錄下包含了java原檔案和資源檔,例如ApplicationResources.properties和ApplicationResources_ch.properties資源檔,前者是英語資源檔,後者是中文資源檔。建立時這個目錄裡還有一個子目錄“emptyprj”,這個名稱與建立項目時輸入的package名稱是一至的。Emptyprj目錄下有“filters”、“jdbc”兩個子目錄,前者是過濾器目錄,是中文解決方案,詳細分析請看後面的有關濾器程式設計、中文解決方案章節,後者是資料庫連接池檔案,詳細分析請看後面的Struts資料庫應用程式設計章節。

web目錄下包含了JSP、Html等web檔案和Web檔案用到的圖片檔案。建立時這個目錄是空的。

build.xml檔案是編譯是所需的設定檔,由於JSPStudio採用的是ANT編譯器,所以這個檔案是JSPStudio項目中必不可少的,它是ANT標準的設定檔,所有的項目目錄結構也符合ANT編譯器的要求,可見JSPStudio項目與ANT具有非常好的相容性,這也是JSPStudio的優點之一。

hello.prj檔案是專案檔,XML結構,內容如下:

<projectname>Simple</projectname>

<projecttype>struts</projecttype>

<title>這是一個建立空的Struts普通模板</title>

<package>emptyprj</package>

<typepath>/Jave Web 項目/空的Struts普通模板</typepath>

<projectpath>F:/JavaWebStudio/JavaWebStudioWorkDir/Simple</projectpath>

<projectname>標籤內是項目名稱;<projecttype>標籤內是項目的類型,這個標籤的內容最好不要改變;<title>標籤內是項目的簡單說明,可根據需要填寫;<package>標籤內是預設的package名稱;<typepath>標籤內是項目模板的相對路徑;<projectpath>標籤內是項目儲存的絕對路徑。

[關鍵技術]

Struts使用MVC結構;圖2.1所示的邏輯圖描述了架構的高層結構。

我們現在討論圖中的每個元素。

一個基於Struts的應用程式的展示層(view)使用Struts標籤庫(taglibs)構建。來自客戶的請求被傳遞給叫ActionServlet的servlet,它作為controller.使用了Struts的應用程式,所有需要通過架構的請求都通過ActionServlet傳遞。這個ActionServlet把資料從請求傳遞到ActionForm JavaBean。

ActionMapping

ActionForm (模型的資料)

Action (模型的業邏輯)

發送

ActionServlet (controller)

JSP (view)

taglib (view)

使用

執行個體化

調用

使用

使用

ActionForm是代表從一個表單View組件輸入資料的JavaBean。這些表單由JSP用Struts html標籤庫產生。這個beam由 ActionServlet產生,帶request參數,它還請求ActionForm來驗證使用者提交資料的合法性。

ActionServlet通過定義一組ActionMapping來配置。一個ActionMapping是一個對象,它將請求中的URL映射到由應用程式開發人員提供的處理請求的組件。ActionServlet和ActionMapping的配置在XML設定檔中完成。

專用的應用程式用於處理請求的組件叫Action類。在MVC結構中,它們代表模型。它們可能用於驗證使用者輸入的合法性,假如在資訊處理過程中出現了應用程式錯誤,Action類可以建立一個error對象的執行個體,然後儲存慶HTTP request對象中。如果在Action類中的邏輯成功地被招待類給Controller傳遞一個ActionForward對象,代表所需的描繪響應的JSP。ActionForward有兩種:專門轉寄給特定的Action類或全域轉寄(任何一個Action類可以把這些ActionForwards轉給Controller)。

本例主要檔案之間的關係:

輸入頁面:

HelloWord.jsp

ActionForm (模型的資料)

HelloWordForm.java

ActionServlet (controller)

通過struts-config.xml配置實現

ActionMapping

輸入頁面:

HelloWordOut.jsp

Action (模型的業邏輯)

HelloWordAction.java

[關鍵原始碼分析]

4.3.1 輸入JSP分頁檔

輸入JSP分頁檔名是hello.jsp,主要實現一個帶有文字框的表單,檔案代碼如下:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<html:form action="/helloAction.do" method="post">

<html:text property="mybeanvariable1" />

<html:submit value="提交" />

<html:reset value="重寫" />

</html:form>

</body>

</html:html>

首先是把本頁定義為支援中文顯示,中文編碼採用GB2312格式,程式語言為Java:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

接著定義支援四種Struts標籤bean、html、logic和template,在該檔案中沒用到的標籤可以去掉相應的定義,如果在檔案中還需要用到自訂標籤,也需要在這裡加入相應的定義:

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<%@ taglib uri="/WEB-INF/struts-template.tld" prefix="template" %>

<html:html>就不用說了。<html:base/>標籤對應HTML的<BASE>標籤,用來設定測覽器中檔案的絕對路徑,然後在檔案中只需寫下檔案的相對位置,在測覽器中測覽的時候這些位置會自動附在絕對路徑後面,成為完整的路徑。在文檔中所有相對位址形式的URL是相對於這裡定義的UTRL而言的。一篇文檔中的<BASE>標記不能多於一個,必須放於<head>標籤內,並且應該在任何包含URL地址的語句之前定義。<html:form>這裡用了黑體字,表示是要重點講解的地方。

<html:form action="/helloAction.do" method="post">

<html:text property="mybeanvariable1" />

<html:submit value="提交" />

<html:reset value="重寫" />

</html:form>

<html:form>標籤定義了一個表單,提交時的目標URL是“/helloAction.do”,方法是“post”,Post方法是將使用者在表單中填寫的資料包含在表單的主體中,一起傳送到伺服器上的處理常式中,該萬法沒有字元的限制,它包含了ISO10646的字元集,是一種郵寄的萬式,在測覽器的地址欄不顯示提交的資訊,這種萬式傳送的資料是沒有限制。當然也可以選擇Get方法,Get方法是將表單內容附加在URL地址後面,所以對提交資訊的長度進行了限制,最多不可以超過8192個字元,如果資訊大長,將被截去,從而導致意想不到的結果,而且不能傳送非ASCII碼的字元。表單內包含一個文本輸入框<html:text>,它的值與Bean中屬性為"mybeanvariable1"的變數相對應,如果結mybeanvariable1付了初值,則在啟動這個頁面時文字框中就顯示預設的mybeanvariable1初值。另外表單內還包含了兩個最常見的提交按鈕<html:submit value="提交" />和重寫按鈕<html:reset value="重寫" />。

4.3.2 輸出JSP分頁檔

輸出JSP分頁檔名是helloOut.jsp,主要實現輸入檔案提交的文字框的值,檔案代碼如下:

<%@ page contentType="text/html;charset=GB2312" language="java" %>

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<html:html>

<head>

<title></title>

<html:base/>

</head>

<body bgcolor="white">

<bean:write name="helloForm" property="mybeanvariable1" />

</body>

</html:html>

</body>

</html:html>

輸出檔案與前面輸入檔案唯一不同的是把<html:form>標籤變成了<bean:write>標籤:

<bean:write name="helloForm" property="mybeanvariable1" />

<bean:write>標籤實現Bean屬性值的輸出,其中name儲存Bean名,這裡是“helloForm”,從後面的設定檔可以看出,它對應的類是helloForm類;property儲存屬性名稱,這裡是“mybeanvariable1”,與輸入檔案的文字框取的屬性名稱一至。

4.3.3 ActionForm Bean檔案

Hello程式的ActionForm Bean檔案實現只包含一個變數的Bean,檔案名稱是helloForm.java,檔案代碼如下:

package emptyprj;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

public final class HelloWordForm extends ActionForm

{

private String mybeanvariable1;

public String getMybeanvariable1()

{

return (this.mybeanvariable1);

}

public void setMybeanvariable1(String mybeanvariable1)

{

this.mybeanvariable1=mybeanvariable1;

}

}

首先是定義package名:

package emptyprj;

這是選用了JSPStudio預設的package名emptyprj,需注意的是package名要與目錄名對應。接著引入了ActionForm Bean設計中常用的五個類HttpServletRequest、ActionError、ActionErrors、ActionForm和ActionMapping,這是JSPStudio自動加入的,實際上helloForm類只用於ActionForm類,其它部分可以刪除,但這裡保留它以方便以後擴充程式時用。

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

接下來就是定義了helloForm、一個參數mybeanvariable1和它對應的get()、set()函數,這與普通Bean定義的方法一模一樣。

4.3.4 Action檔案

Hello程式的Action檔案實現對輸入檔案提交的表單的處理,檔案名稱是helloAction.java,檔案代碼如下:

package emptyprj;

import java.lang.reflect.InvocationTargetException;

import java.util.Locale;

import javax.servlet.ServletException;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.PropertyUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionServlet;

import org.apache.struts.util.ModuleException;

import org.apache.struts.util.MessageResources;

public final class HelloWordAction extends Action

{

// 變數定義:

private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");

//函數定義:

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception

{

// Extract attributes and parameters we will need

Locale locale = getLocale(request);

MessageResources messages = getResources(request);

HttpSession session = request.getSession();

HelloWordForm myform = (HelloWordForm) form;

String variable1= myform.getMybeanvariable1();

try

{

if(variable1.trim().equals(""))

{

return new ActionForward(mapping.getInput());

}

//其它代碼

return (mapping.findForward("success"));

}

catch (Exception e)

{

//log.error("出錯", e);

//log.trace("出錯");

throw new RuntimeException(e.getMessage());

}

}

}

首先定義處理函數execute(),可以理解為當Hello輸入檔案表單提交到伺服器的ActionServlet,由ActionServlet調用Action的execute()函數實現商業邏輯處理,處理完成後把結果轉寄到輸出檔案中。execute()函數定義一個helloForm執行個體“myform”,並從提交的輸入ActionForm對象執行個體form中讀取資料,把mybeanvariable1變數的值賦給新的字串變數variable1:

helloForm myform = (helloForm) form;

String variable1= myform.getMybeanvariable1();

接下來是出錯處理,try語句用於組合一個引起異常的代碼塊,它使我們告訴Java要注意有可能出現異常的程式碼片段;catch:一旦擲出一個異常,需要捕獲住這個異常,catch語句使程式員定義一個捕獲;finally:在try/catch塊結尾,程式可能需要確保一個代碼塊不管是否擲出了異常,總是被執行,例如不管發生什麼,我們可能都需要確保關閉特定的檔案; Exceptlon:一種用於存放在代碼中發現的關於一個"exception"或"error"的資訊的類;throws:當某些事需要關注時,我們"擲出"一個異常。這個異常被我們建立的一段處理異常的特殊代碼"抓住"。渙句話說,通過擲出一個異常,我們告訴代碼:出錯啦,需要調用一些特殊的邏輯去處理問題。下面完它的完整結束:

try

{

//正常代碼

}

catch (Exception e)

{

//出錯處理代碼

throw new RuntimeException(e.getMessage());

}

finally

{

//最後都必需進行的處理代碼

}

在try塊中我們進行的變數variable1是否為空白的判斷,如果為空白就轉寄到輸入頁,否則轉寄到定義為success的輸出頁:

if(variable1.trim().equals(""))

{

return new ActionForward(mapping.getInput());

}

//其它代碼

return (mapping.findForward("success"));

mapping.getInput()函數用於擷取輸入頁的URL值,這個值與設定檔struts-config.xml中<action>項的input屬性值相對應。

4.3.5 Struts程式配置

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC

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

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

<struts-config>

<form-beans>

<form-bean name="HelloWordForm"

type="emptyprj.HelloWordForm" />

</form-beans>

<action-mappings>

<action path="/HelloWordAction"

type="emptyprj.HelloWordAction"
name="HelloWordForm"

scope="session"

input="/HelloWord.jsp">

<forward name="success" path="/HelloWordOut.jsp" />

</action>

</action-mappings>

</struts-config>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.