㈠ wex5打包ios需要設置xcode嗎
私鑰和profile文件 需要擁有蘋果電腦,在獲得證書以後導出證書時會要求你填寫私鑰密碼,profile文件是在蘋果開發者中心獲得的。
㈡ wex5能否鏈接sql2005
1 概述
本案例實現了對takeout_order(外賣訂單表)表的分頁查詢、關鍵字檢索和修改保存的能力,資料庫表結構參見WeX5自帶的mysql資料庫。
案例代碼分為服務端和客戶端兩部分:
服務端包含一個servlet(com.justep.baas.test.DemoServlet),用於為客戶端提供數據查詢和數據保存的Web服務;
客戶端包含一個.w頁面(/UI2/demo/baas/simpleData/index.w),頁面上的數據集通過ajax請求訪問服務端提供的Web服務,實現數據的增刪改查。
2 服務端
服務端實現了一個servlet(com.justep.baas.test.DemoServlet),用於為客戶端提供數據查詢和數據保存的Web服務。
2.1 導入baas工程
運行「啟動WeX5開發工具.bat」;
打開Java透視圖,選擇菜單「窗口-打開透視圖-Java」;
導入baas工程,選擇菜單「文件-導入」,選擇「常規-現有項目到工作空間中」,「下一步」,「選擇根目錄-瀏覽」,選擇WeX5目錄下「apache-tomcat\webapps\baas」,「完成」。
2.2 JNDI數據源配置
/baas/META-INF/context.xml
<?xml version=「1.0」 encoding=「UTF-8″?>
<Context reloadable=「true」>
<Resource name=「jdbc/takeout」 type=「javax.sql.DataSource」
maxActive=「100」 maxIdle=「30」
driverClassName=「com.mysql.jdbc.Driver」 url=「jdbc:mysql://127.0.0.1:3306/takeout」
username=「root」 password=「x5″ />
</Context>
注意:
Tomcat 6啟動時,自動將「/baas/META-INF/context.xml」復制一份到「\apache-tomcat\conf\Catalina\localhost\baas.xml」。但是當context.xml內容修改後,Tomcat並不會自動更新。所以,修改context.xml的內容後,需要手動更新「\apache-tomcat\conf\Catalina\localhost\baas.xml」。切記!切記!
特別注意:
由於Tomcat 6的bug(https://bz.apache.org/bugzilla/show_bug.cgi?id=44725),不要在Tomcat服務運行時刪除「\apache-tomcat\conf\Catalina\localhost\baas.xml」,否則Tomcat會自動刪除WEB-INF/web.xml。
2.3 Java Servlet
com.justep.baas.test.DemoServlet
// Servlet入口,通過判斷action參數,進入各自對應的實現方法
public void service(ServletRequest request, ServletResponse response) throws ServletException {
try {
String action = request.getParameter(「action」);
if (「queryOrder」.equals(action)) {
queryOrder(request, response);
} else if (「saveOrder」.equals(action)) {
saveOrder(request, response);
}
} catch (Exception e) {
e.printStackTrace();
throw new ServletException(e);
}
}
這里實現了queryOrder和saveOrder兩個action。
// 查詢訂單,實現了分頁查詢和按檢索關鍵字過濾
private static void queryOrder(ServletRequest request, ServletResponse response) throws SQLException, IOException, NamingException {
// 參數序列化
JSONObject params = (JSONObject) JSONObject.parse(request.getParameter(「params」));
// 獲取參數
JSONObject columns = params.getJSONObject(「columns」); // 要返回的數據列定義,裡麵包含列名和列數據類型
Integer limit = params.getInteger(「limit」); // 分頁查詢的行數
Integer offset = params.getInteger(「offset」); // 分頁查詢的行偏移
String search = params.getString(「search」); // 檢索關鍵字
// 存放SQL中的參數值
List<Object> sqlParams = new ArrayList<Object>();
// 存放SQL中的過濾條件
List<String> filters = new ArrayList<String>();
if (!Util.isEmptyString(search)) {
// 增加過濾條件
filters.add(「fUserName LIKE ? OR fPhoneNumber LIKE ? OR fAddress LIKE ? OR fContent LIKE ?」);
// 檢索關鍵字中如果沒有%,則前後自動加%
search = (search.indexOf(「%」) != -1) ? search : 「%」 + search + 「%」;
// 增加參數值,參數的個數和順序必須與過濾條件的?相匹配
for (int i = 0; i < 4; i++) {
sqlParams.add(search);
}
}
Table table = null;
// 獲取數據源連接
Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);
try {
// 執行單表數據查詢,返回Table
table = Util.queryData(conn, TABLE_TAKEOUT_ORDER, columns, filters, 「fCreateTime DESC」, sqlParams, offset, limit);
} finally {
// 必須關閉數據源連接
conn.close();
}
// 輸出Table做為返回結果,這里會自動轉換為Table的JSON格式
Util.writeTableToResponse(response, table);
}
// 保存訂單
private static void saveOrder(ServletRequest request, ServletResponse response) throws ParseException, SQLException, NamingException {
// 參數序列化
JSONObject params = (JSONObject) JSONObject.parse(request.getParameter(「params」));
// 獲取參數
JSONObject data = params.getJSONObject(「data」); // 訂單數據的JSON格式
// JSON轉換Table
Table table = Transform.jsonToTable(data);
// 獲取數據源連接
Connection conn = Util.getConnection(DATASOURCE_TAKEOUT);
try {
// 開啟事務
conn.setAutoCommit(false);
try {
// 保存Table
Util.saveData(conn, table, TABLE_TAKEOUT_ORDER);
// 提交事務
conn.commit();
} catch (SQLException e) {
// 如果發生異常,首先回滾事務,然後把異常繼續拋出
conn.rollback();
throw e;
}
} finally {
// 必須關閉數據源連接
conn.close();
}
}
在上面的代碼中,大多數都是用來處理參數、資料庫連接和事務的代碼,核心代碼其實只有以下幾句:
// 執行單表數據查詢,返回Table
table = Util.queryData(conn, TABLE_TAKEOUT_ORDER, columns, filters, 「fCreateTime DESC」, sqlParams, offset, limit);
// 輸出Table做為返回結果,這里會自動轉換為Table的JSON格式
Util.writeTableToResponse(response, table);
// JSON轉換Table
Table table = Transform.jsonToTable(data);
// 保存Table
Util.saveData(conn, table, TABLE_TAKEOUT_ORDER);
2.4 Servlet配置
/baas/WEB-INF/web.xml
<servlet>
<servlet-name>X5 Baas Demo Servlet</servlet-name>
<servlet-class>com.justep.baas.test.DemoServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>X5 Baas Demo Servlet</servlet-name>
<url-pattern>/demo</url-pattern>
</servlet-mapping>
3 客戶端
客戶端通過data組件的自定義刷新(onCustomRefresh)和自定義保存(onCustomSave)事件,實現頁面數據與後台servlet服務的交互。
㈢ wex5 打包應該選擇哪個瀏覽器
你好朋友建議打開安全衛士功能大全里的默認軟體設置,在里邊設置默認瀏覽器就可以了。
㈣ wex5中設置input組件的內容為空應該怎麼設置
可以通過data的事件onValueChanging實現 參考代碼: /** name:bizData#onValueChanging description: [回調型事件]數據變化中 @param event 它的結構如下:{"source":組件的js對象,"column":關系,"rowIndex":行索引,"value":新值,通過修改它的值.
㈤ wex5 版本更新
1. 發布模式打包的區別:
模式一:發布時使用,智能更新,多版本運行,可以無Web端;
模式二:發布時使用,立即更新,無網路時,無法正常顯示;
2. 版本更新注意事項:
UI資源更新和App更新不同:UI資源更新:系統自動判斷自動更新,App更新則是重新打開App時判斷是否更新,手動更新;
appVersionChecker.js需要在index.js中引用:require(「$UI/XX/appVersionChecker」);
XX_in_server文件是不會被打包到App中的,即使想把它打包到App中,也無法打進去;
【更新UI資源】編譯使用的UI資源,然後復制」WWW」中的文件夾覆蓋上述的「父級文件夾」;
【App更新】XX_in_server.js文件中修改版本號以及更新信息;
3. 打包流程:
(1)推薦選擇模式一,並填寫應用名:
這里寫圖片描述
(2)選擇UI資源和服務地址,注意Web路徑,此路徑要對應伺服器上的部署路徑:
這里寫圖片描述
(3)填寫版本號,如果是升級版本,版本號要比之前的高;如果希望對資源進行加密,可勾選加密資源的單選框:
這里寫圖片描述
(4)配置開發者證書相關,如果是iOS打包,則確保證書文件對應的BundleID和上一步的應用包名保持一致:
這里寫圖片描述
(5)屏幕設置,可固定app界面橫屏或者豎屏顯示:
這里寫圖片描述
(6)插件配置,此處一定要注意,微信或支付寶參數配置時,務必去掉類似空格的字元,保證參數和第三方開放平台上的相關key保持一致:
這里寫圖片描述
(7)配置信息更新,此處是版本升級的重點。此處的資源版本號要和第三步的版本號保持一致,並配置正確的app下載地址(注意埠號),更新說明部分主要是版本推送升級的時候,對話框中顯示的內容:
這里寫圖片描述
(8)打包成功後,將「www」文件夾下的文件拷貝至項目文件夾中(文件夾的名稱和web伺服器項目名保持一致),比如項目文件夾叫「Test」,就將此處的文件拷貝到「Test」文件夾中,文件內容如圖所示:
這里寫圖片描述
這里寫圖片描述
(9)然後在WeX5安裝目錄中找到WEB-INF文件夾,並將此文件夾拷貝至「Test」文件夾中(與上圖文件同級),最後,將項目部署到伺服器中,啟動tomcat即可。
㈥ WeX5運行w文件出現的問題
摘要 500內部伺服器錯誤頁面。
㈦ wex5 attachmentsimple參數是怎麼傳的
假設A是你web站點的伺服器B是你要上傳文件的伺服器
1、在B伺服器上共享一個文件夾upload,並設置好許可權開設用戶test密碼123456並給予test對upload的寫入許可權,同時在該文件夾里放入一個簡單的頁面,隨便什麼都行,輸出幾個字母就可以了【B伺服器上的操作over】2、在A伺服器web站點下面建立一個虛擬目錄,默認加虛擬目錄的時候是沒得選擇其他伺服器的共享文件夾的,你先隨便選擇一個本地的路徑,建立好之後,點擊該
虛擬目錄的屬性,在更改本地路徑的上面,有3個選擇,你選擇「另一台計算機上的共享」,接著設置網路路徑,格式是這樣的:\\{伺服器}\{共享名},
{伺服器}用IP來代替,{共享名}就是那個upload文件夾,填好之後點擊後面的「連接用戶」,輸入剛才在B伺服器上用戶test和密碼
123456(當然,簡單一點,你最好先測試一下,確定A伺服器能訪問B伺服器共享的文件夾,如果A都不能訪問B的共享,那你先解決這個問題先,測試的方
法很簡單,在瀏覽器里輸入\\B伺服器的IP\upload,如果能輸入用戶和密碼之後能看到你剛才隨便建的那個文件,OK,共享是可以訪問的)
3、虛擬目錄設置好了之後,你可以測試一下,在A的web站點下面通過程序獲取一下虛擬目錄的路徑,如果是成功的,路徑應該是伺服器B的IP+upload文件夾。
4、接下來的工作就是上傳文件了,這個時候你直接上傳應該都是可以的,應該你剛才已經輸入過訪問B伺服器upload的帳號和密碼,也就是說A和B已經建立了
信任連接,不過如果你重啟伺服器,剛才建立的連接也就不存在了。所以在A伺服器web站點的Global.asax文件里載入一句話,讓A伺服器站點啟動
的時候就和B建立信任連接
System.Diagnostics.Process.Start("net.exe","use\\\\B伺服器的IP\\upload\"123456\"/user:\"test\"");
上面的語句就是建立信任連接的,放在global.asax的好處就是站點啟動就建立連接,因為這種信任連接是可持續性的,不會象session一樣過期,只有在重啟A伺服器的時候這種信任連接才會消失。
不曉得你明白沒有?不過我可以肯定,這個是可以實現的,因為我剛剛做過這塊。
一種方式:還是通過A伺服器web站點下面的虛擬目錄來訪問,這種情況下,B伺服器只是提供空間
另一種方式:在B伺服器上建立一個站點,指向該目錄,這樣B伺服器分擔了訪問文件時IIS的工作任務
文件上傳保存:
SaveAs(Server.MapPath("abc") + "\\" + filePath.Substring(filePath.LastIndexOf("\\") + 1));
//abc為程序運行站點或者虛擬目錄下的虛擬目錄文件瀏覽:DownloadFile(Server.MapPath("abc") + "//abc.txt");
//abc.txt為B伺服器上的文件privatevoidDownloadFile(stringphysicalFilePath){FileStreamstream=null;try{stream=newFileStream(physicalFilePath,FileMode.Open,FileAccess.Read,FileShare.Read);intbufSize=(int)stream.Length;byte[]buf=newbyte[bufSize];intbytesRead=stream.Read(buf,0
,bufSize);HttpContext.Current.Response.ContentType="application/octet-stream";//attachment是以附件的形式下載,也可以改為online在線找開.
HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(System.IO.Path.GetFileName(physicalFilePath),System.Text.Encoding.UTF8));
HttpContext.Current.Response.OutputStream.Write(buf,0
㈧ 使用WeX5開發APP,queryData方法中對單個表單查詢的過濾條件怎麼寫
開發APP,我一般用「應用之星」網站,挺好的。
你也可以試試。