IOC 依賴關係的轉移 - 高層模組不應該依賴低層模組,而是模組都必須依賴於抽象
Struts 著重的是控制物件的設計
JSF 著重於頁面流程的設計
RMI (Remote Method Invocation) 讓客戶端在使用遠端物件提供的服務時,就如同使用本地物件一樣. - 序列化格式傳遞
DAO 具備增刪改查的java類別 - ICarDAO(interface) CarDAO(class)
web.xml
-->DIspatcherServlet
/WEB-INF/web-config.xml (View, Controller)
/WEB-INF/model-config.xml (Model)
--------------
Hessian Burlap 透過http實現的遠程服務
Hessian - 將物件以中性的二進位訊息使用HTTP進行傳送, 頻寬較小是其優點
Burlap- 物件以XML文件格式 進行傳送,高可讀性
以上可透過Spring web框架 來使用DispatcherServlet
2016年4月11日 星期一
2016年1月17日 星期日
2015年12月23日 星期三
2015年8月3日 星期一
2015年7月9日 星期四
Android 除錯技巧:
1.手機內做log除錯:
new Thread() {
@Override
public void run() {
Log.d("Environment.getExternalStorageDirectory()", String
.valueOf(Environment.getExternalStorageDirectory()));
// Calendar cal = Calendar.getInstance();
// cal.set(Calendar.MILLISECOND, 0);
// long timestamp = cal.getTimeInMillis();
// 直接格式化輸出現在時間的方法
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Date current = new Date();
String dirName = "Demo_upload";
String rootPath = Environment.getExternalStorageDirectory()
+ "/"+dirName+"/";
File file = new File(rootPath);
if (!file.exists()) {
file.mkdirs();
Log.d("upload1","create dirname:"+rootPath);
}
Log.d("upload1","create dirname2:");
File filename = new File(
Environment.getExternalStorageDirectory() + "/"+dirName+"/"
+ sdFormat.format(current) + "_logfile.txt");
try {
filename.createNewFile();
String cmd = "logcat -v time -f " + filename +" upload1:D *:S";
//讓upload1這個tag等極為debug的訊息列出
Log.d("cmd result:", cmd);
Runtime.getRuntime().exec(cmd);
Log.d("cmd final", "");
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
new Thread() {
@Override
public void run() {
Log.d("Environment.getExternalStorageDirectory()", String
.valueOf(Environment.getExternalStorageDirectory()));
// Calendar cal = Calendar.getInstance();
// cal.set(Calendar.MILLISECOND, 0);
// long timestamp = cal.getTimeInMillis();
// 直接格式化輸出現在時間的方法
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Date current = new Date();
String dirName = "Demo_upload";
String rootPath = Environment.getExternalStorageDirectory()
+ "/"+dirName+"/";
File file = new File(rootPath);
if (!file.exists()) {
file.mkdirs();
Log.d("upload1","create dirname:"+rootPath);
}
Log.d("upload1","create dirname2:");
File filename = new File(
Environment.getExternalStorageDirectory() + "/"+dirName+"/"
+ sdFormat.format(current) + "_logfile.txt");
try {
filename.createNewFile();
String cmd = "logcat -v time -f " + filename +" upload1:D *:S";
//讓upload1這個tag等極為debug的訊息列出
Log.d("cmd result:", cmd);
Runtime.getRuntime().exec(cmd);
Log.d("cmd final", "");
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
2015年7月8日 星期三
訂閱:
文章 (Atom)