The NoteBook of EricKong

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

          #

          1、百度地圖API

          車聯(lián)網(wǎng)API網(wǎng)址:http://developer.baidu.com/map/carhome.htm
          登錄http://lbsyun.baidu.com/apiconsole/key?application=key獲得密鑰
          通過坐標(biāo)取用戶位置(反Geocoding)http://api.map.baidu.com/telematics/v2/reverseGeocoding?location=116.305145,39.982368&ak=yourkey
          測距http://api.map.baidu.com/telematics/v2/distance?waypoints=118.77147503233,32.054128923368;116.3521416286,39.965780080447&ak=yourkey
          獲取經(jīng)緯度http://www.gpsspg.com/maps.htm
          天氣查詢http://api.map.baidu.com/telematics/v2/weather?location=北京&ak=yourkey

          http://api.map.baidu.com/telematics/v2/weather?location=經(jīng)度,緯度&ak=yourkey

          查詢周邊商家http://api.map.baidu.com/telematics/v2/local?location=經(jīng)度,緯度&keyword=類型&ak=yourkey&radius=半徑&number=10
          導(dǎo)航地圖http://developer.baidu.com/map/uri.htm
          http://api.map.baidu.com/direction?origin=latlan:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving&region=西安&output=html&src=yourCompanyName|yourAppName  (mode可以為driving架車、transit公交、walking步行)

          2、Google地圖API

          https://developers.google.com/maps/?hl=zh-cn

          申請(qǐng)密碼https://code.google.com/apis/console
          經(jīng)緯度解析http://maps.googleapis.com/maps/api/geocode/xml?latlng=23.416155105336312,116.6294002532959&sensor=false&language=zh-CN
          測距/測時(shí)https://developers.google.com/maps/documentation/distancematrix/

          http://maps.googleapis.com/maps/api/distancematrix/xml?origins=經(jīng)度,緯度&destinations=經(jīng)度,緯度&mode=walking&language=zh-CN&sensor=false

          (origine起點(diǎn)、destinations終點(diǎn)、sensor感應(yīng)器是否啟動(dòng)gps、mode包含driving/walking/bicyilng、language語言、avoid避開highways高速tolls收費(fèi))
          查詢周邊商家https://developers.google.com/places/

          https://developers.google.com/places/documentation/search?hl=zh-CN

          https://maps.googleapis.com/maps/api/place/search/xml?location=經(jīng)度,緯度&radius=3000&sensor=false&key=yourkey&keyword=餐館&language=zh-CN

          3、高德地圖API

          http://code.autonavi.com/index

          瀏覽器調(diào)用http://code.autonavi.com/URI/browser_guide
          接口格式http://mo.amap.com/?from=經(jīng)度,緯度&to=經(jīng)度,緯度&type=0&opt=1&dev=1

          4、小黃雞(試用每天只能調(diào)100次,30美元/10萬次調(diào)用)

          http://developer.simsimi.com/api?lang=zh_CN

          試用地址http://sandbox.api.simsimi.com/request.p (參數(shù)key密鑰、text用戶的問題、lc語言中文ch)

          5、百度翻譯

          http://developer.baidu.com/ms/translate

          接口http://openapi.baidu.com/public/2.0/bmt/translate  (參數(shù)from源碼語言ch中文、en英文、jp日語、auto自動(dòng))

          http://openapi.baidu.com/public/2.0/bmt/translate?client_id=yourApiKey&q=關(guān)鍵詞&from=auto&to=auto

          6、快遞查詢
          申請(qǐng)KEY  http://www.aikuaidi.cn/api/?type=1

          http://www.aikuaidi.cn/rest/?key=參數(shù)&order=快遞單號(hào)&id=快遞拼音&ord=排序方式&show=

          (圓通yuantong/申通shentong/EMSems/韻達(dá)yunda/順豐shunfeng,ord排序asc/desc,show可以為JSON/XML/HTML)

          7、每日笑話(不限次數(shù),不用申請(qǐng)KEY)

          http://api.94qing.com/?type=joke&msg=

          8、RSS訂閱

          http://www.baidu.com/search/rss.html

          9、刮刮樂(只是源碼地址,需要封裝管理程序)

          http://kuro.tw/scratch.html

          10、第三方接口
          樂享微信http://www.wxapi.cn/  (收費(fèi),不開源)
          365微服務(wù)http://www.weduty.com  (收費(fèi),不開源)
          賓果科技https://github.com/takura/WeChat4DiscuzX-Binguo  (discuz論壇插件、名費(fèi)、開源)
          小I機(jī)器人http://www.xiaoi.com  (智能聊天,收費(fèi),不開源)
          V5智能客服http://www.v5kf.com  (基礎(chǔ)免費(fèi)、增值收費(fèi)、不開源)
          小九機(jī)器人http://www.xiaojo.com  (免費(fèi)、開源)
          微擎http://www.we7.cc/  (免費(fèi)、開源)

          11、百度BAE以及新浪SAE
          百度BAE  http://developer.baidu.com/  (免費(fèi)創(chuàng)建10個(gè)應(yīng)用,每天200M免費(fèi)流量,數(shù)據(jù)庫每月1G免費(fèi)流量,緩存為memcache不免費(fèi)1.6元/GB/天)
          計(jì)費(fèi)  http://developer.baidu.com/dev#/price/charge
          新浪SAE  http://sae.sina.com.cn/ (免費(fèi)創(chuàng)建10個(gè)應(yīng)用)
          計(jì)費(fèi)  http://sae.sina.com.cn/?m=devcenter&catId=155

          12、WAP在線生成

          http://siteapp.baidu.com/

          13、百度應(yīng)用中心

          http://r2.mo.baidu.com/webapp_html.php?version=4_0&fn=webpage_flash

          posted @ 2014-10-08 17:55 Eric_jiang 閱讀(652) | 評(píng)論 (0)編輯 收藏

          微信開放平臺(tái)
            主要面向App開發(fā)者 通常前提是擁有成熟的應(yīng)用程序 之后通過開放平臺(tái) 將內(nèi)容分享至朋友圈 發(fā)送給某個(gè)微信好友.

            微信公眾平臺(tái)

            強(qiáng)調(diào)信息流 既可以向微博一樣主要推送內(nèi)容 也可以像10086一樣 根據(jù)用戶發(fā)來的消息進(jìn)行智能回復(fù) 后臺(tái)可以實(shí)現(xiàn)某些功能.

            詳解:

            微信開放平臺(tái)也即open平臺(tái),公眾平臺(tái)即是mp平臺(tái),目前open 平臺(tái)是騰訊移動(dòng)生活電商團(tuán)隊(duì)——微生活在使用,以下是區(qū)別。

            詳解微生活商家后臺(tái)與公眾平臺(tái)的區(qū)別

            微信是騰訊近兩年崛起的一個(gè)新穎的語音溝通工具,隨著微信5.0內(nèi)測版本的發(fā)布,掃描二維碼、條形碼、甚至街景的功能;搖一搖增加了視頻功能;公眾賬號(hào)分為企業(yè)賬號(hào)和訂閱賬號(hào)等最新變化的出現(xiàn),使得微信“橫掃一切”“O2O神器”等標(biāo)簽更加流行。而從去年開始流行的“微信掃描二維碼 免費(fèi)獲得會(huì)員卡”的微生活團(tuán)隊(duì)正是騰訊移動(dòng)生活電商旗下的全新專注生活電子商務(wù)與O2O的解決方案提供商,大街小巷鋪滿商家二維碼掀起了全國范圍內(nèi)的微信掃描風(fēng)潮。據(jù)了解微生活有專門的商家后臺(tái)幫助商家解決CRM會(huì)員關(guān)系管理、精準(zhǔn)營銷等問題,與微信的公眾平臺(tái)后臺(tái)有所區(qū)別,一下即是筆者總結(jié)的二者的一些區(qū)別和聯(lián)系。

            1、 整體概覽

            5.0之前的微信公眾平臺(tái)媒體屬性貌似更強(qiáng)一些,打開微信公眾平臺(tái)第一眼看見的就是實(shí)時(shí)消息。這里可以看到賬號(hào)當(dāng)前增加了多少粉絲、有多少用戶留言。其次的重點(diǎn)就是開放接口,微信作為一個(gè)大的平臺(tái)需要給各位開發(fā)者以更多的方便,綠色的公眾平臺(tái)API文檔方便開發(fā)者直接點(diǎn)擊進(jìn)入,高級(jí)功能中的開發(fā)模式更為開發(fā)者提供了廣闊的空間。

            然而微生活商家后臺(tái)則沒有實(shí)時(shí)消息這個(gè)功能,因?yàn)橛脩舻牧粞远家呀?jīng)被商家的多客服系統(tǒng)處理完畢,這與微生活的泛會(huì)員管理與營銷平臺(tái)的定位有很大的關(guān)系,時(shí)時(shí)解決會(huì)員的問題,幫助用戶完成訂單、訂位、訂房等工作,甚至是陪用戶閑聊和調(diào)戲,實(shí)現(xiàn)用戶在移動(dòng)端的良好體驗(yàn)。總之,微生活商家后臺(tái)更適合商家去做CRM 管理和會(huì)員營銷。

            從二者的首頁中筆者讀出一個(gè)趨勢——大數(shù)據(jù)管理,對(duì)于商家和媒體來說,數(shù)據(jù)管理必不可少,而從兩個(gè)平臺(tái)首頁明顯的數(shù)據(jù)折線圖來看,二者都focus 在大數(shù)據(jù)上。

            微信開拓了一種語音溝通的新時(shí)尚,而騰訊微生活開拓了創(chuàng)新的富媒體會(huì)員營銷平臺(tái),解決企業(yè)數(shù)據(jù)庫管理、會(huì)員關(guān)系管理、會(huì)員精準(zhǔn)營銷等問題,為傳統(tǒng)商企打開了進(jìn)軍移動(dòng)互聯(lián)網(wǎng)的大門。

            2、 首頁

            微信公眾平臺(tái)功能模塊包括:首頁、實(shí)時(shí)消息、用戶管理、群發(fā)消息、素材管理、設(shè)置、高級(jí)功能。

            打開微信公眾平臺(tái)即可看到實(shí)時(shí)消息、每日新增訂閱人數(shù)和每日接收消息數(shù)的曲線圖表,可以使得用戶時(shí)時(shí)把控每日情況,但是無法看到多日的消息對(duì)比。首頁右側(cè)是系統(tǒng)公告 ,公眾平臺(tái)接口更新等通知。微信未來要做的是個(gè)平臺(tái),開放平臺(tái),首頁的公告是為微信的開發(fā)者進(jìn)行更多的指引。

            微生活商家后臺(tái)功能模塊包括:首頁、會(huì)員、交易、消息、活動(dòng)、設(shè)置 。

            打開微生活商家后臺(tái)首先看到的是會(huì)員趨勢圖,包括新增總量、線下掃碼增量、線上傳播新增量等分類,這比微信公眾平臺(tái)的的會(huì)員增長圖坐標(biāo)要復(fù)雜一些。因?yàn)槲⑸顣?huì)員卡是用戶通過打開微信掃描二維碼后,獲得的一張存在于微信中的虛擬會(huì)員卡,而二維碼可以存在在海報(bào)、桌貼、宣傳冊等線下物料上,也可以放置在微博、微信、論壇、網(wǎng)站等線上渠道。微生活首頁右側(cè)呈現(xiàn)的是今日和昨日的新增會(huì)員和交易次數(shù)、會(huì)員帶動(dòng)交易額。這與微生活致力于成為傳統(tǒng)商企精準(zhǔn)的泛會(huì)員管理與營銷平臺(tái)有著很大的關(guān)系,商家人員登錄商家后臺(tái)可以清楚明了的看到自家店面的整體銷售情況和會(huì)員增長情況,時(shí)時(shí)把控商機(jī)和運(yùn)營情況。

          posted @ 2014-10-06 09:49 Eric_jiang 閱讀(1472) | 評(píng)論 (4)編輯 收藏

          關(guān)于注冊公眾賬號(hào)這塊不詳細(xì)介紹

          注冊完成,審核認(rèn)證完,就可以開始玩了

          1.如何成為開發(fā)者?

          \

          需要填寫接口配置信息,需要自己的服務(wù)器資源,一般自己沒有服務(wù)器,所以可以采用云服務(wù)器,例如BAE,SAE,阿里云服務(wù)器。這里用BAE

          2.打開百度開放云平臺(tái)官網(wǎng),注冊,登陸,點(diǎn)擊開發(fā)者服務(wù)管理

          \

          \加載中...

          2.1.點(diǎn)擊“創(chuàng)建工程”

          \

          填寫工程相關(guān)信息,應(yīng)用名稱自定義,類型選擇java-tomcat,域名唯一,代碼管理工具選擇svn 到這里,bae應(yīng)用創(chuàng)建完了.

          3.現(xiàn)在來實(shí)現(xiàn)TOKEN驗(yàn)證的代碼部分

          3.1.創(chuàng)建一個(gè)Java web工程,我用的是MyEclipse8.5,工程名稱為voastudy,點(diǎn)擊Finish完成。

          \

          3.2.新建一個(gè)servlet,這里是CoreServlet,點(diǎn)擊Next.

          \

           

          3.3.勾選創(chuàng)建web.xml,以及配置servlet,這里的路徑很關(guān)鍵,這是去請(qǐng)求servlet里的方法

          \

           

          3.4.實(shí)現(xiàn)驗(yàn)證TOKEN方法,微信公眾平臺(tái)提供的是PHP的實(shí)例代碼.但其驗(yàn)證本質(zhì)是一樣的,都是要經(jīng)過排序,sha1加密進(jìn)行比較。請(qǐng)參考下面的代碼。這是CoreServlet.java類.

           

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          42
          43
          44
          45
          46
          47
          48
          49
          50
          51
          52
          53
          54
          55
          56
          57
          58
          59
          60
          package wx.sunl.servlet;
            
          import java.io.IOException;
          import java.io.PrintWriter;
            
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
            
          import wx.sunl.util.SignUtil;
            
          @SuppressWarnings("serial")
          public class CoreServlet extends HttpServlet 
          {
              public CoreServlet() {
                  super();
              }
              public void destroy() {
                  super.destroy(); 
              }
            
              /**
               * 驗(yàn)證url和token
               */
              public void doGet(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
            
                  // 微信加密簽名
                  String signature = request.getParameter("signature");
                  // 時(shí)間戮
                  String timestamp = request.getParameter("timestamp");
                  // 隨機(jī)數(shù)
                  String nonce = request.getParameter("nonce");
                  // 隨機(jī)字符串
                  String echostr = request.getParameter("echostr"); 
                    
                  PrintWriter out = response.getWriter();
                  // 通過檢驗(yàn) signature 對(duì)請(qǐng)求進(jìn)行校驗(yàn),若校驗(yàn)成功則原樣返回 echostr,表示接入成功,否則接入失敗
                 if(SignUtil.checkSignature(signature, timestamp, nonce)){
                     out.print(echostr);
                 }
            
                 out.close();
                 out = null
              }
            
              /**
               *用戶向公眾平臺(tái)發(fā)信息并自動(dòng)返回信息
               */
              public void doPost(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
            
                    
              }
            
              public void init() throws ServletException {
              }
            
          }
          其中調(diào)用到了SignUtil類的checkSignature方法,下面是SignUtil.java類.注意:其中一個(gè)靜態(tài)屬性token的值,在最后一步需要用到來驗(yàn)證的.

           

           

          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          17
          18
          19
          20
          21
          22
          23
          24
          25
          26
          27
          28
          29
          30
          31
          32
          33
          34
          35
          36
          37
          38
          39
          40
          41
          42
          43
          44
          45
          46
          47
          48
          49
          50
          51
          52
          53
          54
          55
          56
          57
          58
          59
          60
          61
          62
          63
          64
          65
          66
          67
          68
          69
          70
          71
          72
          73
          74
          75
          package wx.sunl.util;
            
          import java.security.MessageDigest;
          import java.security.NoSuchAlgorithmException;
          import java.util.Arrays;
            
          public class SignUtil {
              /**
               * 與接口配置信息中的 token 要一致,這里賦予什么值,在接口配置信息中的Token就要填寫什么值,
               * 兩邊保持一致即可,建議用項(xiàng)目名稱、公司名稱縮寫等,我在這里用的是項(xiàng)目名稱weixinface
               */
              private static String token = "weixintest";
                
              /**
               * 驗(yàn)證簽名
               * @param signature
               * @param timestamp
               * @param nonce
               * @return
               */
              public static boolean checkSignature(String signature, String timestamp, String nonce){
                  String[] arr = new String[]{token, timestamp, nonce};
                  // 將 token, timestamp, nonce 三個(gè)參數(shù)進(jìn)行字典排序
                  Arrays.sort(arr);
                  StringBuilder content = new StringBuilder();
                  for(int i = 0; i < arr.length; i++){
                      content.append(arr[i]);
                  }
                  MessageDigest md = null;
                  String tmpStr = null;
                    
                  try {
                      md = MessageDigest.getInstance("SHA-1");
                      // 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行 shal 加密
                      byte[] digest = md.digest(content.toString().getBytes());
                      tmpStr = byteToStr(digest);
                  } catch (NoSuchAlgorithmException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  content = null;
                  // 將sha1加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來源于微信
                  return tmpStr != null ? tmpStr.equals(signature.toUpperCase()): false;
              }
                
              /**
               * 將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)制字符串
               * @param digest
               * @return
               */
              private static String byteToStr(byte[] digest) {
                  // TODO Auto-generated method stub
                  String strDigest = "";
                  for(int i = 0; i < digest.length; i++){
                      strDigest += byteToHexStr(digest[i]);
                  }
                  return strDigest;
              }
                
              /**
               * 將字節(jié)轉(zhuǎn)換為十六進(jìn)制字符串
               * @param b
               * @return
               */
              private static String byteToHexStr(byte b) {
                  // TODO Auto-generated method stub
                  char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
                  char[] tempArr = new char[2];
                  tempArr[0] = Digit[(b >>> 4) & 0X0F];
                  tempArr[1] = Digit[b & 0X0F];
                    
                  String s = new String(tempArr);
                  return s;
              }
          }

          4.代碼已經(jīng)寫完了,現(xiàn)在來提交代碼到svn.如果沒有svn客戶端工具,那首先下載(svn版本工具)安裝。打開svn

          \

          4.1.這里的url去百度開放云平臺(tái)去這里復(fù)制

          \

          4.2.粘貼url,打開svn,會(huì)看到服務(wù)器的2個(gè)文件

          \

           

          4.3.代碼提交到svn 首先刪掉root.war

          \

          4.4.java web工程打包成war包,取名ROOT.war,然后提交到svn

          \

           

          4.5.然后將這個(gè)war包提交到svn

          \


          4.6.如果提交成功了,百度開放云平臺(tái)會(huì)檢測到有新版本產(chǎn)生,選中應(yīng)用,點(diǎn)擊“發(fā)布設(shè)置”

          \


          4.7.發(fā)布新版本

          \


          5.發(fā)布成功后,測試是否部署成功?


          5.1.如果看到這個(gè),離成功只差一步啦。<喎?"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140510/2014051009050433.jpg" alt="\">


          5.5.在域名后邊加上請(qǐng)求我們剛剛servlet的請(qǐng)求路徑,上邊的例子是/CoreServlet,如果報(bào)505錯(cuò)誤(why?因?yàn)槟菐讉€(gè)參數(shù)都是空的),說明部署成功了

          \


          6.最后一步,填寫Url 和 Token來驗(yàn)證 成為開發(fā)者。Url:百度應(yīng)用的域名+請(qǐng)求servlet的路徑例如:http://weixintest11.duapp.com/CoreServlet.Token是在程序中自定義的值(在SignUtil.java中定義)



          歡迎吐槽!!!

          posted @ 2014-09-30 11:52 Eric_jiang 閱讀(4418) | 評(píng)論 (2)編輯 收藏

               摘要: Dojo 的這些接口大大簡化了我們的 Web 前端開發(fā)的復(fù)雜度,使得我們能夠在更短的時(shí)間內(nèi)實(shí)現(xiàn)功能更為豐富的應(yīng)用。這篇文章將重點(diǎn)介紹 Dojo 的核心接口所帶給 Web 開發(fā)工程師們的各種便利以及它的一些使用技巧。Dojo 核心接口簡介Dojo 的核心接口主要位于 Dojo 的三大庫(“dojo”,“dijit”和“dojox”...  閱讀全文
          posted @ 2014-09-01 17:20 Eric_jiang 閱讀(590) | 評(píng)論 (0)編輯 收藏

          Define

          先看define。作用是定義一個(gè)模塊(module)。這個(gè)模塊可以被require引用,引用了之后就可以使用define里面的東西。一個(gè)模塊想當(dāng)然,里面干什么事情,不一定全部自己實(shí)現(xiàn)。就像人要coding,除了腦子,也不能沒有電腦、鍵盤。因此,define的第一個(gè)參數(shù)就是將要用到的其他模塊引進(jìn)來。第二個(gè)參數(shù)描述這個(gè)模塊具體干什么,并且給第一個(gè)參數(shù)中的模塊分別起一個(gè)朗朗上口的名字。就像下面這段代碼描述的樣子。

           

          util.js

          [javascript] 
          1. define([ "dojo/dom"], function(dom) {  
          2.     return {  
          3.         setRed: function(id){  
          4.             dom.byId(id).style.color = "red";  
          5.         }  
          6.     };  
          7. });  

          這是一個(gè)工具模塊,其中一個(gè)功能就是把網(wǎng)頁上id對(duì)應(yīng)的DOM節(jié)點(diǎn)變成紅色。當(dāng)我們要使用它的時(shí)候,就可以用require了。

           

          test.jsp

          [html]  
          1. <script>  
          2.     require(  
          3.         [ "dojo/ready", "test/util" ],  
          4.         function(ready, util) {  
          5.             ready(function() {  
          6.                 var id = "selected_text";  
          7.                 util.setRed(id);  
          8.             });  
          9.         });  
          10. </script>  

          Declare

          可以看到,上面的模塊util作為工具模塊,可以在被引用后任意調(diào)用其功能。這是無狀態(tài)的,就好象是一個(gè)singleton的對(duì)象。但如果我們想定義“類”一樣的東西,有狀態(tài),可以創(chuàng)建多個(gè)對(duì)象,就需要在define里用declare。最典型的例子就是dijit下面的諸多UI小控件。

          舉個(gè)很簡單的例子,我希望基于dijit.Dialog,創(chuàng)建一個(gè)有特殊功能的dialog,每次打開后能把上面的一段text標(biāo)記為紅色。

           

          RedTextDialog.js

          [javascript] view plaincopy在CODE上查看代碼片派生到我的代碼片
          1. define([ "dojo/_base/declare", "dijit/Dialog", "dijit/_WidgetBase",  
          2.         "dijit/_TemplatedMixin", "test/util" ], function(declare,  
          3.         Dialog, _WidgetBase, _TemplatedMixin, util) {  
          4.     return declare("test.RedTextDialog", [ Dialog, _WidgetBase, _TemplatedMixin ], {  
          5.         title: "Dialog with Red Text",  
          6.           
          7.         onDownloadEnd : function() {  
          8.             var id = "selected_text";  
          9.             util.setRed(id);  
          10.         }  
          11.     });  
          12. });  

          RedTextDialog可以重寫dijit.Dialog所有的方法,也可以自創(chuàng)方法、變量,實(shí)現(xiàn)自己想要的任意功能。接下來可以用require使用它。

          [html] 
          1. <script>  
          2.     require(  
          3.         [ "dojo/ready", "test/RedTextDialog" ],  
          4.         function(ready, RedTextDialog) {  
          5.             ready(function() {  
          6.                 var dialog = new RedTextDialog();  
          7.                 dialog.show();  
          8.             });  
          9.         });  
          10. </script>  

          可以看到,每次使用RedTextDialog時(shí),都可以創(chuàng)建一個(gè)新的對(duì)象實(shí)例,因此可以做到互相之間沒有關(guān)系。

          目錄結(jié)構(gòu)


          為了在test.jsp中調(diào)用上述js文件,需要在test.jsp聲明js文件的位置。

          [javascript] 
          1. <script>  
          2.     dojoConfig = {  
          3.         isDebug : false,  
          4.         parseOnLoad : true,  
          5.         async : true,  
          6.         packages : [   
          7.             {  
          8.                 name : "test",  
          9.                 location : "../../js/test"  
          10.             }  
          11.         ]  
          12.     };  
          13. </script>  

          最后,約定俗成地,一般define類似util的singleton模塊,js文件的名字第一個(gè)字母小寫;而類似RedTextDialog的類模塊,第一個(gè)字母大寫。

          posted @ 2014-09-01 16:48 Eric_jiang 閱讀(349) | 評(píng)論 (0)編輯 收藏

          spring的 配置文件在啟動(dòng)時(shí),加載的是web-info目錄下的applicationContext.xml,
          運(yùn)行時(shí)使用的是web-info/classes目錄下的applicationContext.xml。

          配置web.xml使這2個(gè)路徑一致:

          <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/classes/applicationContext.xml</param-value>
           </context-param>

          多個(gè)配置文件的加載
          <context-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>
                      classpath*:conf/spring/applicationContext_core*.xml,
                      classpath*:conf/spring/applicationContext_dict*.xml,
                      classpath*:conf/spring/applicationContext_hibernate.xml,
                      classpath*:conf/spring/applicationContext_staff*.xml,
                      classpath*:conf/spring/applicationContext_security.xml
                      classpath*:conf/spring/applicationContext_modules*.xml
                      classpath*:conf/spring/applicationContext_cti*.xml
                      classpath*:conf/spring/applicationContext_apm*.xml
                  </param-value>
              </context-param>

          contextConfigLocation 參數(shù)定義了要裝入的 Spring 配置文件。

          posted @ 2014-08-15 10:11 Eric_jiang 閱讀(252) | 評(píng)論 (1)編輯 收藏

          由于是使用spring mvc來做項(xiàng)目,因此脫離了HttpServletRequest作為參數(shù),不能夠直接使用request,要想使用request可以使用下面的方法:

          在web點(diǎn)xml中配置一個(gè)監(jiān)聽

          <listener>         <listener-class>             org.springframework.web.context.request.RequestContextListener         </listener-class> </listener>
          之后就可以在程序使用了

          HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
          posted @ 2014-08-14 15:54 Eric_jiang 閱讀(366) | 評(píng)論 (0)編輯 收藏

           在xml配置了這個(gè)標(biāo)簽后,spring可以自動(dòng)去掃描base-pack下面或者子包下面的java文件,如果掃描到有@Component @Controller@Service等這些注解的類,則把這些類注冊為bean

          注意:如果配置了<context:component-scan>那么<context:annotation-config/>標(biāo)簽就可以不用再xml中配置了,因?yàn)榍罢甙撕笳摺A硗?lt;context:annotation-config/>還提供了兩個(gè)子標(biāo)簽

          1.        <context:include-filter>

          2.       <context:exclude-filter>

          在說明這兩個(gè)子標(biāo)簽前,先說一下<context:component-scan>有一個(gè)use-default-filters屬性,改屬性默認(rèn)為true,這就意味著會(huì)掃描指定包下的全部的標(biāo)有@Component的類,并注冊成bean.也就是@Component的子注解@Service,@Reposity。所以如果僅僅是在配置文件中這么寫

          <context:component-scan base-package="tv.huan.weisp.web"/>

           Use-default-filter此時(shí)為true那么會(huì)對(duì)base-package包或者子包下的所有的進(jìn)行java類進(jìn)行掃描,并把匹配的java類注冊成bean。

           

           可以發(fā)現(xiàn)這種掃描的粒度有點(diǎn)太大,如果你只想掃描指定包下面的Controller,該怎么辦?此時(shí)子標(biāo)簽<context:incluce-filter>就起到了勇武之地。如下所示

          <context:component-scan base-package="tv.huan.weisp.web .controller">  

          <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>   

          </context:component-scan>  

          這樣就會(huì)只掃描base-package指定下的有@Controller下的java類,并注冊成bean

          但是因?yàn)閡se-dafault-filter在上面并沒有指定,默認(rèn)就為true,所以當(dāng)把上面的配置改成如下所示的時(shí)候,就會(huì)產(chǎn)生與你期望相悖的結(jié)果(注意base-package包值得變化)

          <context:component-scan base-package="tv.huan.weisp.web ">  

          <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>   

          </context:component-scan>  

          此時(shí),spring不僅掃描了@Controller,還掃描了指定包所在的子包service包下注解@Service的java類

          此時(shí)指定的include-filter沒有起到作用,只要把use-default-filter設(shè)置成false就可以了。這樣就可以避免在base-packeage配置多個(gè)包名這種不是很優(yōu)雅的方法來解決這個(gè)問題了。

          另外在我參與的項(xiàng)目中可以發(fā)現(xiàn)在base-package指定的包中有的子包是不含有注解了,所以不用掃描,此時(shí)可以指定<context:exclude-filter>來進(jìn)行過濾,說明此包不需要被掃描。綜合以上說明

          Use-dafault-filters=”false”的情況下:<context:exclude-filter>指定的不掃描,<context:include-filter>指定的掃描

          posted @ 2014-08-13 11:22 Eric_jiang 閱讀(201) | 評(píng)論 (0)編輯 收藏

               摘要: 在安裝SharePoint 2013 服務(wù)器之前,請(qǐng)先了解硬件和軟件要求http://technet.microsoft.com/library/cc262485(office.15)?ocid=fwlink#section4Microsoft SharePoint 產(chǎn)品準(zhǔn)備工具會(huì)為具有內(nèi)置數(shù)據(jù)庫的單臺(tái)服務(wù)器安裝以下必備軟件:Web 服務(wù)器 (IIS) 角色應(yīng)用程序服務(wù)器角色Microsoft ....  閱讀全文
          posted @ 2014-08-11 16:15 Eric_jiang 閱讀(455) | 評(píng)論 (1)編輯 收藏

          var test= { $ : function(id){ return document.getElementById(id); }, addEvent : function(obj,eventType,func){ if(obj.attachEvent){obj.attachEvent("on" + eventType,func);}else{obj.addEventListener(eventType,func,false)}}, delEvent : function(obj,eventType,func){ if(obj.detachEvent){obj.detachEvent("on" + eventType,func)}else{obj.removeEventListener(eventType,func,false)} } };
          posted @ 2014-08-05 15:52 Eric_jiang 閱讀(260) | 評(píng)論 (0)編輯 收藏

          僅列出標(biāo)題
          共57頁: First 上一頁 7 8 9 10 11 12 13 14 15 下一頁 Last 
          主站蜘蛛池模板: 友谊县| 喀喇| 甘德县| 酉阳| 礼泉县| 罗源县| 梅河口市| 孟州市| 北川| 勃利县| 巴南区| 襄垣县| 梅河口市| 增城市| 海晏县| 和林格尔县| 左云县| 元谋县| 黔南| 炉霍县| 平定县| 婺源县| 吉安市| 云龙县| 宁陵县| 瑞丽市| 浦城县| 保康县| 鞍山市| 西宁市| 绥化市| 岳池县| 中牟县| 于田县| 聊城市| 奉化市| 玉树县| 车致| 盱眙县| 井研县| 门源|