訪問值棧中的action的普通屬性: username = <s:property value="username"/>
由于下午有公司來面試,耽誤了一些時間,老徐說明天再多補一個小時,太敬業了啊,佩服!
在線支付時針對易寶支付的網關而開設的,眾所周知,易寶已是三大網上支付平臺之一,正好明天易寶來招聘,正好練練,呵呵,下午是面試技巧
好好學習,畢業倒計時:15天
1.支付寶是不能立即拿到現錢的,這也是商家喜歡在線支付的一個原因吧,在線支付是直接和銀行對接的,這樣商家可以立即拿到現錢,避免了和買家產生矛盾后,錢被封的風險。
下面就來實現在線支付吧,首先提出請求,如果通過,會得到賬號和密鑰
我們要做的事有兩項
1.向支付網關發起請求,就是向http發起請求,所謂請求就是我們平常使用Http請求(http://www.xxx.cn/xxx.do),請求方式:Get/Post
<form method=”” action=”https://www.yeepay.com/app-method”>
<input name=”?”,value=””/>
<input name=”url” value=”http://www.itcast.cn/re.do”/>
<input name=”hmac” value=””>
…..
Hmac = MD5(pd_FrpId + p0_Cmd + p8_Url,key);32位,不可逆
支付網關:其實就是一個http路徑
2.接收支付網關返回的支付結果信息
第一次使用瀏覽器重定向技術,
把支付信息發送給:http://www.itcast.cn/re.do?id=21432&result=1
2.相關知識點:
一.接入方式:兩種接入方案
①.直接與銀行對接
優點:因為直接與銀行進行財務結算,交易資金結算比較安全
缺點:開發工作量比較大,而且銀行會不定期升級交易系統,隨著銀行系統的升級,企業也需要作相應改動,所以維護工作量也是比較大的,而且企業每年還需要向銀行交納一定數量的接口使用費。
②.通過中間公司間接與銀行對接
優點:開發工作量較少,因為使用的是中間企業提供的接入規范,所以銀行升級系統,不需要企業作相應修改,除非中間企業的接入規范發生了改變,企業才作相應修改。
缺點:因為是與中間企業進行資金結算,目前所有中間企業都是私企,資金安全是個大問題。
3. 對支付數據進行Md5加密
4. 支付流程:
通過http請求方式向易寶支付網關發起一個支付請求,請求可以是get或post方式提交。
易寶支付網關對企業發來的數據使用用戶的密鑰生成MD5-hmac碼,然后跟企業發來的MD5-hmac碼(即上面表單由hmac字段提供的值)比較是否相同,如果相同即把請求轉發到銀行網關,當用戶支付完成后,銀行網關會引導用戶的瀏覽器重定向到易寶支付網關,然后易寶支付網關再引導用戶的瀏覽器重定向到企業提供的url(即上面表單由p8_Url提供的地址)
接下來我們只需處理結果了
下午是面試技巧:
薪水:一定要寫 ,不要寫區間 4000
心得體會:具體點
責任描述:多寫,詳細,寫開發難點,描述清楚,介紹清楚
對某一模塊詳細描述,對難點的解決過程
描述自己負責的模塊,抓住一點,詳細說,千千不要泛泛而談
不能寫培訓經驗
三好學生,寫一等獎學金是應屆的
愛好還是要寫的
身份證不能造假,教育經歷,通常企業篩選簡歷過程:
從1-2千封中選,讓前臺做/人力去篩選簡歷,要求:
A.只提取兩年工作年限以上(一般企業都是這樣干的)
B.連人力都能判斷出造假的簡歷,排除
C.經過人力,剩下100封
D.面試官
88年可以寫兩年,教育經歷:把畢業信息提前,證書造假
簡歷上可適當造假
薪水:
寫2年,月薪(北京,上海,廣州):
初級:3000 – 4000 4500 -- 8-12
中級:4500 – 6000 7K 其中5K-6K比較多 --
高級:7000 – 1.2W (3-5)
從事Android,薪水如下:
Android 2年 最長就2年
原來做過j2se開發3-4年 8K-1.2W
android 3個月(j2ee 1-2)6K
Android 干半年 4.5K
如果我們老老實實干半年,編碼能力就會沒問題
工作經驗:
1.為什么離職?
我在深圳那邊4K,也不知道北京這邊的行情。
2.當公司準備要你的時候,會讓你填以前公司的地址信息,聯系人信息
造假唄,找個外地的同學
3.入職后,離職證明,隨便蓋個章,離職證明模版網上有一大堆
新公司不想惹麻煩,已經和原來公司解除了勞動合同
4.關于android面試
基礎:
多線程(并發控制),Socket通信,http通信
android:
android的什么項目
項目針對那些手機型號的手機HTC
如何適應各個分辨率的問題,大分辨率靠前
ContentProvider(難度),共享數據
聯系人(如何獲取聯系人)
Activity的生命周期:運行 暫停 停止
前臺生命周期
完整生命周期
意圖:隱式,顯式
組件:廣播,內容提供者,Service 四大組件
MMI:多媒體接口
SQLite:數據庫訪問
項目開發
3人 2-3月
公司部門 人員
研發部/技術部 50-60人
測試部 8-10人
客服部/售后服務
市場部
行政部
今天學習從網上獲得數據,以xml文件輸出。流程:android客戶端 -----已經開發好的CRM(220.113.15.23) -----[客戶資料]--à屏幕
用的是struts1.3的環境
1.搭建環境
1.web.xml配置struts servlet
2.添加jar
3.復制struts-config.xml
環境搞定后,新建jsp文件,寫好文件頭:<?xml version="1.0" encoding="UTF-8"?> 注意
接著新建一個ContactAction
最后配置struts-config.xml文件
新建contact.jsp文件,得到數據
訪問路徑,測試得到的數據,以驗證是否正確,若正確的話,第一步完成
下面是Android應用
2 .①.設計要顯示的界面
②.新建service,可以調用
關鍵代碼:
String path = “http://192.168.1.100:8080/crm/contacts.do”;
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectionTimeout(5*1000);
conn.setRequestMethod(“POST”);
return conn.getInputStream();
在該類中還應該新建sax解析方法,解析文檔,保存數據
③.新建android測試類,以日志形式打印出xml文件中的數據
3.應用HttpURLConnection對象,我們可以向網絡發送請求參數.下面以POST發送為例,寫一些關鍵代碼點
Map<String, String> params =
new
HashMap<String, String>();
params.put("age", "22");
params.put("name", "浪淘沙");
StringBuilder
params = new StringBuilder();
for(Map.Entry<String, String>
entry : params.entrySet()){
params.append(entry.getKey());
params.append("=").append(URLEncoder.encode(entry.getValue(),
"UTF-8"));
params.append("&");
}
if (params.length() > 0)
params.deleteCharAt(params.length() - 1);
byte[] data =
params.toString().getBytes();
4. 為應用添加新的Activity
①:新建一個繼承Activity的類
②:需要在功能清單AndroidManifest.xml文件中添加進上面Activity配置代碼
打開新的Activity,不傳遞參數
通過意圖打開Activity,Intent,用于激活Activity的,在組件之間傳遞數據
在新的Activity中接收前面Activity傳遞過來的參數:
添加參數的另一種方法:Bundle
Bundle類用作攜帶數據,它類似于Map,用于存放key-value名值對形式的值。相對于Map,它提供了各種常用類型的putXxx()/getXxx()方法, putXxx()用于往Bundle對象放入數據,getXxx()方法用于從Bundle對象里獲取數據。Bundle的內部實際上是使用了HashMap<String, Object>類型的變量來存放putXxx()方法放入的值:
5. Intent過濾器
Android鼓勵減少組件間的耦合,因此Android提供了Intent (意圖) ,Intent提供了一種通用的消息系統,它允許在你的應用程序與其它的應用程序間傳遞Intent來執行動作和產生事件。使用Intent可以激活Android應用的三個核心組件:活動、 服務和廣播接收器。
Intent可以劃分成顯式意圖和隱式意圖。
使用SharedPreferences進行數據存儲,是專門用來向用戶提供軟件參數設置功能,
1. SharedPreferences類,它是適合用于保存軟件配置參數。使用SharedPreferences保存數據,其背后是用xml文件存放數據。
2. SharedPreferences使 用xml文件保存 數據,getSharedPreferences(name,mode)方法的第一個參數用于指定該文件的名稱,不用帶后綴,后綴由Android自動加上,方法的第二個參數指 定文件的操作模式,共有四種操作模式。
3.設置軟件參數過程:
①.當用戶點擊保存按鈕時,就激發保存事件
在Activity中的匿名內部類中,得到用戶輸入值
需要注意的是:android.content.SharedPreferences.Editor用于保存參數,該editor最后要commit一下。
最后要Toast.makeText(PreferencesActivity.this, "保存參數成功", 1).show();用于提示保存參數成功
②.如果訪問其他應用中的Preference,前提條件是:該preference創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE權限。如:有個<package name>為cn.itcast的應用使用下面語句創建了preference。
getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);
其他應用要訪問上面應用的preference,首先需要創建上面應用的Context,然后通過Context 訪問preference ,訪問preference時會在應用所在包下的shared_prefs目錄找到preference :
Context otherAppsContext = createPackageContext("cn.itcast",
Context.CONTEXT_IGNORE_SECURITY);
4. 使 用SQLite數 據庫存儲數據
在Android平臺上,集成了一個嵌入式關系型數據庫—SQLite,SQLite3支持 NULL、INTEGER、REAL(浮點數字)、TEXT(字符串文本)和BLOB(二進制對象)數據類型,雖然它支持的類型只有五種, SQLite最大的特點是你可以保存任何類型的數據到任何字段中,無論這 列聲明的數據類型是什么。SQLite可以解析大部分標準SQL語句。
5.開發3g數據庫 軟件需求:
①.用戶初次使用軟件,初始化數據庫
②.用戶升級軟件,自動更新數據庫
為此,類對應提供了兩個重要的方 法,分別是onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion),
6.利用繼承自SQLiteOpenHelper的DatabaseHelper類實現增刪改查,和我們以前的用JDBC實現的增刪改查語法基本一樣,舉例:
SQLiteDatabase db = ....;
db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"傳智播客", 4});
db.close();
需要注意的是SQLiteDatabase的rawQuery() 用于 執行select語句
7.將數據動態顯示在手機屏幕上,用SimpleAparter實現
今天到此結束!