java學(xué)習(xí)

          java學(xué)習(xí)

           

          dwr的簡(jiǎn)單例子

          1.在lib中加入相應(yīng)的dwr.jar包
          2.在web.xml中加入以下代碼:

          <servlet>
          <servlet-name>dwr-invoker</servlet-name>
          <servlet-class>
          org.directwebremoting.servlet.DwrServlet
          </servlet-class>
          <init-param>
          <param-name>debug</param-name>
          <param-value>true</param-value>
          </init-param>
          </servlet>
          <servlet-mapping>
          <servlet-name>dwr-invoker</servlet-name>
          <url-pattern>/dwr/*</url-pattern>
          </servlet-mapping>
          3.在web-inf目錄下新建dwr.xml文件,加入一個(gè)簡(jiǎn)單的配置:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
          <dwr>
          <allow>
          <create creator="new" javascript="service">
          <param name="class" value="helloWorld.Service"/>
          </create>
          </allow>
          </dwr>
          4.新建一個(gè)servlet類,
          public class Service {
          public String sayHello(String yourName){
          return yourName;
          }
          }
          5.新建一個(gè)jsp頁(yè)面如下:
          <html>
            <head>
            
              
              <title>My JSP 'index.jsp' starting page</title>
           <script type='text/javascript' src='/dwr2/dwr/interface/service.js'></script>
            <script type='text/javascript' src='/dwr2/dwr/engine.js'></script>
            <script type='text/javascript' src='/dwr2/dwr/util.js'></script>
          <script type="text/javascript">
          function firstdwr(){
          service.sayHello("yangjunwei",callback);
          }
          function callback(d){
          alert(d);
          }
          </script>
            </head>
            
            <body>
             <input type="button" onclick="firstdwr()"/>
            </body>
          </html>
          當(dāng)點(diǎn)擊按鈕時(shí),就會(huì)彈出yangjunwei,這就完成了一個(gè)簡(jiǎn)單的dwrajax交互

          posted @ 2013-03-16 23:09 楊軍威 閱讀(183) | 評(píng)論 (0)編輯 收藏

          手機(jī)訪問網(wǎng)站攔截請(qǐng)求頭信息類

          public class HttpRequestDeviceUtils {

              /**Wap網(wǎng)關(guān)Via頭信息中特有的描述信息*/
              private static String mobileGateWayHeaders[]=new String[]{
              "ZXWAP",//中興提供的wap網(wǎng)關(guān)的via信息,例如:Via=ZXWAP GateWayZTE Technologies,
              "chinamobile.com",//中國(guó)移動(dòng)的諾基亞wap網(wǎng)關(guān),例如:Via=WTP/1.1 GDSZ-PB-GW003-WAP07.gd.chinamobile.com (Nokia WAP Gateway 4.1 CD1/ECD13_D/4.1.04)
              "monternet.com",//移動(dòng)夢(mèng)網(wǎng)的網(wǎng)關(guān),例如:Via=WTP/1.1 BJBJ-PS-WAP1-GW08.bj1.monternet.com. (Nokia WAP Gateway 4.1 CD1/ECD13_E/4.1.05)
              "infoX",//華為提供的wap網(wǎng)關(guān),例如:Via=HTTP/1.1 GDGZ-PS-GW011-WAP2 (infoX-WISG Huawei Technologies),或Via=infoX WAP Gateway V300R001 Huawei Technologies
              "XMS 724Solutions HTG",//國(guó)外電信運(yùn)營(yíng)商的wap網(wǎng)關(guān),不知道是哪一家
              "wap.lizongbo.com",//自己測(cè)試時(shí)模擬的頭信息
              "Bytemobile",//貌似是一個(gè)給移動(dòng)互聯(lián)網(wǎng)提供解決方案提高網(wǎng)絡(luò)運(yùn)行效率的,例如:Via=1.1 Bytemobile OSN WebProxy/5.1
              };
              /**電腦上的IE或Firefox瀏覽器等的User-Agent關(guān)鍵詞*/
              private static String[] pcHeaders=new String[]{
              "Windows 98",
              "Windows ME",
              "Windows 2000",
              "Windows XP",
              "Windows NT",
              "Ubuntu"
              };
              /**手機(jī)瀏覽器的User-Agent里的關(guān)鍵詞*/
              private static String[] mobileUserAgents=new String[]{
              "Nokia",//諾基亞,有山寨機(jī)也寫這個(gè)的,總還算是手機(jī),Mozilla/5.0 (Nokia5800 XpressMusic)UC AppleWebkit(like Gecko) Safari/530
              "SAMSUNG",//三星手機(jī) SAMSUNG-GT-B7722/1.0+SHP/VPP/R5+Dolfin/1.5+Nextreaming+SMM-MMS/1.2.0+profile/MIDP-2.1+configuration/CLDC-1.1
              "MIDP-2",//j2me2.0,Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1 /110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML like Gecko) Safari/413
              "CLDC1.1",//M600/MIDP2.0/CLDC1.1/Screen-240X320
              "SymbianOS",//塞班系統(tǒng)的,
              "MAUI",//MTK山寨機(jī)默認(rèn)ua
              "UNTRUSTED/1.0",//疑似山寨機(jī)的ua,基本可以確定還是手機(jī)
              "Windows CE",//Windows CE,Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
              "iPhone",//iPhone是否也轉(zhuǎn)wap?不管它,先區(qū)分出來(lái)再說(shuō)。Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; zh-cn) AppleWebKit/532.9 (KHTML like Gecko) Mobile/8B117
              "iPad",//iPad的ua,Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; zh-cn) AppleWebKit/531.21.10 (KHTML like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10
              "Android",//Android是否也轉(zhuǎn)wap?Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; XT800 Build/TITA_M2_16.22.7) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17
              "BlackBerry",//BlackBerry8310/2.7.0.106-4.5.0.182
              "UCWEB",//ucweb是否只給wap頁(yè)面? Nokia5800 XpressMusic/UCWEB7.5.0.66/50/999
              "ucweb",//小寫的ucweb貌似是uc的代理服務(wù)器Mozilla/6.0 (compatible; MSIE 6.0;) Opera ucweb-squid
              "BREW",//很奇怪的ua,例如:REW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId: 40105; Lang: zhcn) ucweb-squid
              "J2ME",//很奇怪的ua,只有J2ME四個(gè)字母
              "YULONG",//宇龍手機(jī),YULONG-CoolpadN68/10.14 IPANEL/2.0 CTC/1.0
              "YuLong",//還是宇龍
              "COOLPAD",//宇龍酷派YL-COOLPADS100/08.10.S100 POLARIS/2.9 CTC/1.0
              "TIANYU",//天語(yǔ)手機(jī)TIANYU-KTOUCH/V209/MIDP2.0/CLDC1.1/Screen-240X320
              "TY-",//天語(yǔ),TY-F6229/701116_6215_V0230 JUPITOR/2.2 CTC/1.0
              "K-Touch",//還是天語(yǔ)K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223 Release/30.07.2008 Browser/WAP2.0
              "Haier",//海爾手機(jī),Haier-HG-M217_CMCC/3.0 Release/12.1.2007 Browser/WAP2.0
              "DOPOD",//多普達(dá)手機(jī)
              "Lenovo",// 聯(lián)想手機(jī),Lenovo-P650WG/S100 LMP/LML Release/2010.02.22 Profile/MIDP2.0 Configuration/CLDC1.1
              "LENOVO",// 聯(lián)想手機(jī),比如:LENOVO-P780/176A
              "HUAQIN",//華勤手機(jī)
              "AIGO-",//愛國(guó)者居然也出過手機(jī),AIGO-800C/2.04 TMSS-BROWSER/1.0.0 CTC/1.0
              "CTC/1.0",//含義不明
              "CTC/2.0",//含義不明
              "CMCC",//移動(dòng)定制手機(jī),K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223 Release/30.07.2008 Browser/WAP2.0
              "DAXIAN",//大顯手機(jī)DAXIAN X180 UP.Browser/6.2.3.2(GUI) MMP/2.0
              "MOT-",//摩托羅拉,MOT-MOTOROKRE6/1.0 LinuxOS/2.4.20 Release/8.4.2006 Browser/Opera8.00 Profile/MIDP2.0 Configuration/CLDC1.1 Software/R533_G_11.10.54R
              "SonyEricsson",// 索愛手機(jī),SonyEricssonP990i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 405) Opera 8.65 [zh-CN]
              "GIONEE",//金立手機(jī)
              "HTC",//HTC手機(jī)
              "ZTE",//中興手機(jī),ZTE-A211/P109A2V1.0.0/WAP2.0 Profile
              "HUAWEI",//華為手機(jī),
              "webOS",//palm手機(jī),Mozilla/5.0 (webOS/1.4.5; U; zh-CN) AppleWebKit/532.2 (KHTML like Gecko) Version/1.0 Safari/532.2 Pre/1.0
              "GoBrowser",//3g GoBrowser.User-Agent=Nokia5230/GoBrowser/2.0.290 Safari
              "IEMobile",//Windows CE手機(jī)自帶瀏覽器,
              "WAP2.0"http://支持wap 2.0的
              };
              /**
              * 根據(jù)當(dāng)前請(qǐng)求的特征,判斷該請(qǐng)求是否來(lái)自手機(jī)終端,主要檢測(cè)特殊的頭信息,以及user-Agent這個(gè)header
              * @param request http請(qǐng)求
              * @return 如果命中手機(jī)特征規(guī)則,則返回對(duì)應(yīng)的特征字符串
              */
              public static boolean isMobileDevice(HttpServletRequest request){
                  boolean b = false;
                  boolean pcFlag = false;
                  boolean mobileFlag = false;
                  String via = request.getHeader("Via");
                  String userAgent = request.getHeader("user-agent");
                  for (int i = 0; via!=null && !via.trim().equals("") && i < mobileGateWayHeaders.length; i++) {
                      if(via.contains(mobileGateWayHeaders[i])){
                          mobileFlag = true;
                          break;
                      }
                  }
                  for (int i = 0;!mobileFlag && userAgent!=null && !userAgent.trim().equals("") && i < mobileUserAgents.length; i++) {
                      if(userAgent.contains(mobileUserAgents[i])){
                          mobileFlag = true;
                          break;
                      }
                  }
                  for (int i = 0; userAgent!=null && !userAgent.trim().equals("") && i < pcHeaders.length; i++) {
                      if(userAgent.contains(pcHeaders[i])){
                          pcFlag = true;
                          break;
                      }
                  }
                  if(mobileFlag==true && pcFlag==false){
                      b=true;
                  }
                  return b;//false pc  true shouji
              
              }

          }

          posted @ 2013-03-15 16:19 楊軍威 閱讀(1146) | 評(píng)論 (0)編輯 收藏

          jfinal控制手機(jī)訪問和電腦訪問,跳轉(zhuǎn)到不同的頁(yè)面

          可以寫一個(gè)類繼承Handler類,攔截所有的請(qǐng)求,得到url,根據(jù)請(qǐng)求頭的信息判斷出是手機(jī)訪問還是電腦訪問,根據(jù)需求跳轉(zhuǎn)到不同的頁(yè)面或者方法中

          posted @ 2013-03-15 14:19 楊軍威 閱讀(914) | 評(píng)論 (0)編輯 收藏

          javascript筆記之onload和表單提交

          <html>
          <head>
          <script>
          function hello(){
          alert("hello");
          }
          function byee(){
          alert("bye");
          }
          function show(){
          var v = document.myform.inname.value;
          var p = document.myform.pwd.value;
          alert(v+p);
          }
          function valia(f){
          var v = document.myform.inname.value;
          var p = document.myform.pwd.value;
          return true;
          }
          </script>
          </head>
          <body onload="hello()" onUnLoad="byee()" >
          <form action="dd" name="myform" onsubmit="return valia(this) "> 
          <input type="text" name="inname"   />
          <input type="text" name="pwd" />
          <input type="submit"  />
          </form>
          </body>
          </html>

          posted @ 2013-03-14 23:21 楊軍威 閱讀(384) | 評(píng)論 (0)編輯 收藏

          火狐偽造請(qǐng)求頭模擬手機(jī)訪問網(wǎng)站

          判斷應(yīng)該屬于程序部分的處理,不屬于前端的范疇,是靠判斷請(qǐng)求頭信息(HTTP_USER_AGENT)進(jìn)行判斷的。
          步驟是:1.
          首先需要安裝三個(gè)Firefox插件:wmlbrowser、XHTML Mobile Profile、User Agent Switcher;(我稱它們?yōu)?#8220;偽娘三賤客”)
          2.
          安裝好后需要設(shè)置 User Agent Switcher ,點(diǎn)擊菜單 工具 → Default User Agent → User Agent Switcher → Options → New→New User Agent... ,Description是你給它的一個(gè)稱呼,比如小三,凹凸曼等等。關(guān)鍵的部分是User Agent里面的東西(這里是請(qǐng)求頭主要的信息,程序會(huì)根據(jù)這個(gè)請(qǐng)求頭進(jìn)行判斷你是否是手持設(shè)備),這里就需要把我們想要模擬的手持設(shè)備的信息填入了。
          3.
          添加好后一路確定,回到瀏覽器界面。工具 →default user agent  →選擇你自己添加的那個(gè) →在瀏覽器地址輸入你想要訪問的地址即可。
          十分大方這里你會(huì)看到幾個(gè)選項(xiàng),Default User Agent (瀏覽器默認(rèn)的信息),Internet Explorer (可以模擬ie6,7,8的頭信息),Search Robots (模擬谷歌,雅虎,msn的蜘蛛),iphone 3.0 (默認(rèn)存在的一個(gè))
          4.
          下面列出幾個(gè)比較常見手機(jī)的User Agent:(如果想要查詢更多的手機(jī)user agent 信息的話,去看這里還有這里)
          iPhone3:
          Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
          Android:
          Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
          諾基亞N95:
          Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaN95/30.0.015; Profile MIDP-2.0 Configuration/CLDC-1.1) AppleWebKit/413 (KHTML, like Gecko) Safari/413
          諾基亞N97:
          Mozilla/5.0 (SymbianOS/9.4; Series60/5.0 NokiaN97-1/20.0.019; Profile/MIDP-2.1 Configuration/CLDC-1.1) AppleWebKit/525 (KHTML, like Gecko) BrowserNG/7.1.18124

          posted @ 2013-03-14 16:13 楊軍威 閱讀(1061) | 評(píng)論 (0)編輯 收藏

          判斷手機(jī)訪問還是電腦訪問

          package pc;

          import javax.servlet.http.HttpServletRequest;
          public class HttpRequestDeviceUtils {

              /**Wap網(wǎng)關(guān)Via頭信息中特有的描述信息*/
              private static String mobileGateWayHeaders[]=new String[]{
              "ZXWAP",//中興提供的wap網(wǎng)關(guān)的via信息,例如:Via=ZXWAP GateWayZTE Technologies,
              "chinamobile.com",//中國(guó)移動(dòng)的諾基亞wap網(wǎng)關(guān),例如:Via=WTP/1.1 GDSZ-PB-GW003-WAP07.gd.chinamobile.com (Nokia WAP Gateway 4.1 CD1/ECD13_D/4.1.04)
              "monternet.com",//移動(dòng)夢(mèng)網(wǎng)的網(wǎng)關(guān),例如:Via=WTP/1.1 BJBJ-PS-WAP1-GW08.bj1.monternet.com. (Nokia WAP Gateway 4.1 CD1/ECD13_E/4.1.05)
              "infoX",//華為提供的wap網(wǎng)關(guān),例如:Via=HTTP/1.1 GDGZ-PS-GW011-WAP2 (infoX-WISG Huawei Technologies),或Via=infoX WAP Gateway V300R001 Huawei Technologies
              "XMS 724Solutions HTG",//國(guó)外電信運(yùn)營(yíng)商的wap網(wǎng)關(guān),不知道是哪一家
              "wap.lizongbo.com",//自己測(cè)試時(shí)模擬的頭信息
              "Bytemobile",//貌似是一個(gè)給移動(dòng)互聯(lián)網(wǎng)提供解決方案提高網(wǎng)絡(luò)運(yùn)行效率的,例如:Via=1.1 Bytemobile OSN WebProxy/5.1
              };
              /**電腦上的IE或Firefox瀏覽器等的User-Agent關(guān)鍵詞*/
              private static String[] pcHeaders=new String[]{
              "Windows 98",
              "Windows ME",
              "Windows 2000",
              "Windows XP",
              "Windows NT",
              "Ubuntu"
              };
              /**手機(jī)瀏覽器的User-Agent里的關(guān)鍵詞*/
              private static String[] mobileUserAgents=new String[]{
              "Nokia",//諾基亞,有山寨機(jī)也寫這個(gè)的,總還算是手機(jī),Mozilla/5.0 (Nokia5800 XpressMusic)UC AppleWebkit(like Gecko) Safari/530
              "SAMSUNG",//三星手機(jī) SAMSUNG-GT-B7722/1.0+SHP/VPP/R5+Dolfin/1.5+Nextreaming+SMM-MMS/1.2.0+profile/MIDP-2.1+configuration/CLDC-1.1
              "MIDP-2",//j2me2.0,Mozilla/5.0 (SymbianOS/9.3; U; Series60/3.2 NokiaE75-1 /110.48.125 Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML like Gecko) Safari/413
              "CLDC1.1",//M600/MIDP2.0/CLDC1.1/Screen-240X320
              "SymbianOS",//塞班系統(tǒng)的,
              "MAUI",//MTK山寨機(jī)默認(rèn)ua
              "UNTRUSTED/1.0",//疑似山寨機(jī)的ua,基本可以確定還是手機(jī)
              "Windows CE",//Windows CE,Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)
              "iPhone",//iPhone是否也轉(zhuǎn)wap?不管它,先區(qū)分出來(lái)再說(shuō)。Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; zh-cn) AppleWebKit/532.9 (KHTML like Gecko) Mobile/8B117
              "iPad",//iPad的ua,Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; zh-cn) AppleWebKit/531.21.10 (KHTML like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10
              "Android",//Android是否也轉(zhuǎn)wap?Mozilla/5.0 (Linux; U; Android 2.1-update1; zh-cn; XT800 Build/TITA_M2_16.22.7) AppleWebKit/530.17 (KHTML like Gecko) Version/4.0 Mobile Safari/530.17
              "BlackBerry",//BlackBerry8310/2.7.0.106-4.5.0.182
              "UCWEB",//ucweb是否只給wap頁(yè)面? Nokia5800 XpressMusic/UCWEB7.5.0.66/50/999
              "ucweb",//小寫的ucweb貌似是uc的代理服務(wù)器Mozilla/6.0 (compatible; MSIE 6.0;) Opera ucweb-squid
              "BREW",//很奇怪的ua,例如:REW-Applet/0x20068888 (BREW/3.1.5.20; DeviceId: 40105; Lang: zhcn) ucweb-squid
              "J2ME",//很奇怪的ua,只有J2ME四個(gè)字母
              "YULONG",//宇龍手機(jī),YULONG-CoolpadN68/10.14 IPANEL/2.0 CTC/1.0
              "YuLong",//還是宇龍
              "COOLPAD",//宇龍酷派YL-COOLPADS100/08.10.S100 POLARIS/2.9 CTC/1.0
              "TIANYU",//天語(yǔ)手機(jī)TIANYU-KTOUCH/V209/MIDP2.0/CLDC1.1/Screen-240X320
              "TY-",//天語(yǔ),TY-F6229/701116_6215_V0230 JUPITOR/2.2 CTC/1.0
              "K-Touch",//還是天語(yǔ)K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223 Release/30.07.2008 Browser/WAP2.0
              "Haier",//海爾手機(jī),Haier-HG-M217_CMCC/3.0 Release/12.1.2007 Browser/WAP2.0
              "DOPOD",//多普達(dá)手機(jī)
              "Lenovo",// 聯(lián)想手機(jī),Lenovo-P650WG/S100 LMP/LML Release/2010.02.22 Profile/MIDP2.0 Configuration/CLDC1.1
              "LENOVO",// 聯(lián)想手機(jī),比如:LENOVO-P780/176A
              "HUAQIN",//華勤手機(jī)
              "AIGO-",//愛國(guó)者居然也出過手機(jī),AIGO-800C/2.04 TMSS-BROWSER/1.0.0 CTC/1.0
              "CTC/1.0",//含義不明
              "CTC/2.0",//含義不明
              "CMCC",//移動(dòng)定制手機(jī),K-Touch_N2200_CMCC/TBG110022_1223_V0801 MTK/6223 Release/30.07.2008 Browser/WAP2.0
              "DAXIAN",//大顯手機(jī)DAXIAN X180 UP.Browser/6.2.3.2(GUI) MMP/2.0
              "MOT-",//摩托羅拉,MOT-MOTOROKRE6/1.0 LinuxOS/2.4.20 Release/8.4.2006 Browser/Opera8.00 Profile/MIDP2.0 Configuration/CLDC1.1 Software/R533_G_11.10.54R
              "SonyEricsson",// 索愛手機(jī),SonyEricssonP990i/R100 Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; 405) Opera 8.65 [zh-CN]
              "GIONEE",//金立手機(jī)
              "HTC",//HTC手機(jī)
              "ZTE",//中興手機(jī),ZTE-A211/P109A2V1.0.0/WAP2.0 Profile
              "HUAWEI",//華為手機(jī),
              "webOS",//palm手機(jī),Mozilla/5.0 (webOS/1.4.5; U; zh-CN) AppleWebKit/532.2 (KHTML like Gecko) Version/1.0 Safari/532.2 Pre/1.0
              "GoBrowser",//3g GoBrowser.User-Agent=Nokia5230/GoBrowser/2.0.290 Safari
              "IEMobile",//Windows CE手機(jī)自帶瀏覽器,
              "WAP2.0"http://支持wap 2.0的
              };
              /**
              * 根據(jù)當(dāng)前請(qǐng)求的特征,判斷該請(qǐng)求是否來(lái)自手機(jī)終端,主要檢測(cè)特殊的頭信息,以及user-Agent這個(gè)header
              * @param request http請(qǐng)求
              * @return 如果命中手機(jī)特征規(guī)則,則返回對(duì)應(yīng)的特征字符串
              */
              public static boolean isMobileDevice(HttpServletRequest request){
                  boolean b = false;
                  boolean pcFlag = false;
                  boolean mobileFlag = false;
                  String via = request.getHeader("Via");
                  String userAgent = request.getHeader("user-agent");
                  for (int i = 0; via!=null && !via.trim().equals("") && i < mobileGateWayHeaders.length; i++) {
                      if(via.contains(mobileGateWayHeaders[i])){
                          mobileFlag = true;
                          break;
                      }
                  }
                  for (int i = 0;!mobileFlag && userAgent!=null && !userAgent.trim().equals("") && i < mobileUserAgents.length; i++) {
                      if(userAgent.contains(mobileUserAgents[i])){
                          mobileFlag = true;
                          break;
                      }
                  }
                  for (int i = 0; userAgent!=null && !userAgent.trim().equals("") && i < pcHeaders.length; i++) {
                      if(userAgent.contains(pcHeaders[i])){
                          pcFlag = true;
                          break;
                      }
                  }
                  if(mobileFlag==true && pcFlag==false){
                      b=true;
                  }
                  return b;//false pc  true shouji
              
              }

          }

          posted @ 2013-03-14 16:07 楊軍威 閱讀(2566) | 評(píng)論 (0)編輯 收藏

          java年月日的操作

           public static List<String> getWeekDay(String strDate) {
                   List<String> list = new ArrayList<String>();//第幾周,周幾
                      String nReturn = null;
                      Calendar c = Calendar.getInstance(); // 實(shí)例化一個(gè)Calendar對(duì)象
                      c.clear(); // 清空Calendar
                      c.set(Integer.parseInt(strDate.substring(0, 4)), Integer
                              .parseInt(strDate.substring(5, 7)) - 1, Integer
                              .parseInt(strDate.substring(8, 10))); // 設(shè)置這個(gè)日期的內(nèi)容
                      System.out.println("------------" + c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH) + 1) + "月"+(c.get(Calendar.DATE))+"日的天數(shù)和周數(shù)-------------");  
                      System.out.println("天數(shù):" + c.getActualMaximum(Calendar.DAY_OF_MONTH));  
                      System.out.println("周數(shù):" + c.getActualMaximum(Calendar.WEEK_OF_MONTH));
                      System.out.println("第幾周:"+c.get(Calendar.DAY_OF_WEEK_IN_MONTH));
                      switch (c.get(Calendar.DAY_OF_WEEK)) {
                      case 1:
                          nReturn = "7";
                          break;
                      case 2:
                          nReturn = "1";
                          break;
                      case 3:
                          nReturn = "2";
                          break;
                      case 4:
                          nReturn = "3";
                          break;
                      case 5:
                          nReturn = "4";
                          break;
                      case 6:
                          nReturn = "5";
                          break;
                      case 7:
                          nReturn = "6";
                          break;
                      default:
                          nReturn = null;
                          break;
                      }
                      list.add(String.valueOf(c.get(Calendar.DAY_OF_WEEK_IN_MONTH)));
                      list.add(nReturn);
                      return list;
                  }

          posted @ 2013-03-12 14:14 楊軍威 閱讀(289) | 評(píng)論 (0)編輯 收藏

          highcharts本地導(dǎo)出圖片,pdf服務(wù)端代碼


          先要在exporting.js中修改導(dǎo)出圖片的url是本地的服務(wù)器地址

          String type = getPara("type");//getRequest().getParameter("type");
                  String svg =getPara("svg");// getRequest().getParameter("svg");
                  String filename = getPara("filename");//getRequest().getParameter("filename");
                  ServletOutputStream out1 =  null;
                  try {
                      //getRequest().setCharacterEncoding("utf-8");
                      
                      System.out.println(type);
                      System.out.println(svg);
                      System.out.println(filename);
                      filename = filename==null?"chart":filename;
                       out1 = getResponse().getOutputStream();
                      if (null != type && null != svg) {
                          svg = svg.replaceAll(":rect", "rect");
                          String ext = "";
                          Transcoder t = null;
                          if (type.equals("image/png")) {
                              ext = "png";
                              t = new PNGTranscoder();
                          } else if (type.equals("image/jpeg")) {
                              ext = "jpg";
                              t = new JPEGTranscoder();
                          } else if(type.equals("image/svg+xml")) {
                                ext = "svg";
                          }else if(type.equals("application/pdf")){
                              t = new PDFTranscoder();
                              ext = "pdf";
                          }
                              
                          getResponse().addHeader("Content-Disposition", "attachment; filename="+ filename + "."+ext);
                          getResponse().addHeader("Content-Type", type);
                          
                          if (null != t) {
                              TranscoderInput input = new TranscoderInput(new StringReader(svg));
                              TranscoderOutput output = new TranscoderOutput(out1);                    
                              try {
                                  t.transcode(input, output);
                              } catch (TranscoderException e) {
                                  out1.print("Problem transcoding stream. See the web logs for more details.");
                                  e.printStackTrace();
                              }
                          } else if (ext.equals("svg")) {
                          //    out.print(svg);
                              OutputStreamWriter writer = new OutputStreamWriter(out1, "UTF-8");
                              writer.append(svg);
                              writer.flush();
                              writer.close();
                          } /*else
                              out.print("Invalid type: " + type);*/
                      } else {
                          //getResponse().addHeader("Content-Type", "text/html");
                         // out.println("Usage:\n\tParameter [svg]: The DOM Element to be converted." +
                         //         "\n\tParameter [type]: The destination MIME type for the elment to be transcoded.");
                      }
                      
                  } catch (Exception e) {
                      e.printStackTrace();
                  }finally{
                      try {
                          out1.flush();
                          getResponse().flushBuffer();
                          out1.close();
                          
                      } catch (Exception e2) {
                      
                      }
                      
                  }
          需要的jar包:

          posted @ 2013-03-12 13:47 楊軍威 閱讀(2150) | 評(píng)論 (0)編輯 收藏

          extjs實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)顯示

          Ext.namespace('Ext.ux');
          Ext.ux.EmRealtimeDisplayPanel = function(treeNode, panelId, config) {
              this.treeNode = treeNode;
              this.panelId = panelId;
              

              var temhum = new Ext.form.ComboBox({
                  name : 'temhunm',
                  fieldLabel : '狀態(tài)',
                  allowBlank : false,
                  blankText : '請(qǐng)選擇溫濕度',
                  editable : false,
                  triggerAction : 'all',//all表示把下拉框列表框的列表值全部顯示出來(lái)
                  store : new Ext.data.ArrayStore({
                      fields : [ 'name', 'value' ],
                      data : [ [ '溫度', '1' ], [ '濕度', '2' ] ]
                  }),
                  mode : 'local',
                  displayField : 'name',
                  valueField : 'value',
                  width : 60
              });
              var storenode = new Ext.data.JsonStore({   //讀配置文件
                  autoLoad:true,   
                  url : path+"/wenshi/getnode",   
                  root : "options",   
                  fields : [ {   
                      name : 'name'  
                  }]   
              });

              var node = new Ext.form.ComboBox({
                  fieldLabel : '節(jié)點(diǎn)',
                  allowBlank : false,
                  blankText : '請(qǐng)選擇節(jié)點(diǎn)',
                  editable : false,
                  triggerAction : 'all',
                  store : storenode,
                  mode : 'local',
                  displayField : 'name',
                  valueField : 'name',
                  width : 60
              });
              
              var dataArr = new Array();
              var store = new Ext.data.ArrayStore({
                      fields: ['data', 'time'],
                      data: dataArr
              });
              

              
              var varNodeId = '';//節(jié)點(diǎn)的id值
              var taskStart = false;
              //定時(shí)器里面的參數(shù)配置
              var task = {
                      run: function(){
                          gridStore.load({
                              params: {
                              'nodeid' : varNodeId,
                              'tem'    :th
                              },
                              callback:function(r){
                                 if(!(typeof(r[0])==='undefined')) {
                                   dataArr.push([r[0].data.data, r[0].data.time]);
                                   store.loadData(dataArr);
                                 }
                              }
                          });
                      },
                      interval: 3000
              };

              var gridStore= new Ext.data.JsonStore({
                  fields:['time', 'data'],
                  autoLoad:true,  
                   baseParams : {
                      'nodeid' : "",
                      'tem'    :""
                  },
                  url :path+'/wenshi/getShishiData',   
                  root : "data"
              });
              var panel1= new Ext.Panel({
                  title: '實(shí)時(shí)曲線圖顯示',
                  width: 700,
                  height: 400,
                  smooth: true,
                  type: 'circle',
                  items: {
                      xtype: 'linechart',
                      url: 'extjs3/resources/charts.swf',
                      store: store,
                      xField: 'time',
                      yField: 'data',
                      xAxis: new Ext.chart.CategoryAxis({
                          title: '時(shí)間(秒)'//00 09:00 分鐘 秒:毫秒
                      }),
                      yAxis: new Ext.chart.NumericAxis({
                          title: '數(shù)值'
                      })
                  },
                         tbar : [
                                 {
                                      xtype    : 'label',
                                      text    : '請(qǐng)選擇節(jié)點(diǎn): '
                                  },
                             node, {
                                  xtype    : 'label',
                                  text    : '請(qǐng)選擇溫濕度: '
                              },
                              temhum,
                          {    
                              text    : '查詢',
                              handler    : function(btn, event) {
                                      var nodeid = node.getValue();
                                      var tem = temhum.getValue();
                                      if (nodeid == undefined || nodeid == ''||tem==''){
                                          return;
                                      } else {
                                          dataArr = new Array();
                                          varNodeId = nodeid;
                                          th = tem;
                                      //    alert(th);
                                          if(!taskStart) {
                                              Ext.TaskMgr.start(task);//定時(shí)執(zhí)行代碼
                                              taskStart  =true;
                                          }
                                      }
                              }
                          }]
              });
              Ext.ux.EmRealtimeDisplayPanel.superclass.constructor.call(this, {
                  id : this.panelId,
                  title : this.treeNode.text,
                  layout        : 'fit',
                  closable : true,
                  preventBodyReset : true,
                  items : [panel1]
              });

          };
          Ext.extend(Ext.ux.EmRealtimeDisplayPanel, Ext.Panel, {});

          Ext.reg('emEmRealtimeDisplayPanel', Ext.ux.EmRealtimeDisplayPanel);

          posted @ 2013-03-08 17:02 楊軍威 閱讀(1969) | 評(píng)論 (0)編輯 收藏

          extjs和highcharts整合顯示數(shù)據(jù)曲線和打印圖片

          Ext.namespace('Ext.ux');

          Ext.ux.WaterRealtimeDisplayPanel = function(treeNode, panelId, config) {
              this.treeNode = treeNode;
              this.panelId = panelId;
              var series=[{"name":"實(shí)時(shí)數(shù)據(jù)顯示","data":[]}];
              
              var temhum = new Ext.form.ComboBox({
                  name : 'temhunm',
                  fieldLabel : '狀態(tài)',
                  allowBlank : false,
                  blankText : '請(qǐng)選擇溫濕度',
                  editable : false,
                  triggerAction : 'all',//all表示把下拉框列表框的列表值全部顯示出來(lái)
                  store : new Ext.data.ArrayStore({
                      fields : [ 'name', 'value' ],
                      data : [ [ '溫度', '1' ], [ '濕度', '2' ] ]
                  }),
                  mode : 'local',
                  displayField : 'name',
                  valueField : 'value',
                  width : 60
              });
              var storeProvince = new Ext.data.JsonStore({   
                  autoLoad:true,   
                  url : path+"/wenshi/getnode",   
                  root : "options",   
                  fields : [ {   
                      name : 'name'  
                  }]
              });
              var nodeCtl = new Ext.form.ComboBox({
                  fieldLabel : '節(jié)點(diǎn)',
                  allowBlank : false,
                  blankText : '請(qǐng)選擇節(jié)點(diǎn)',
                  editable : false,
                  triggerAction : 'all',
                  store : storeProvince,
                  mode : 'local',
                  displayField : 'name',
                  valueField : 'name',
                  width : 140
              });
              var stTime = new Ext.form.DateField({
                          fieldLabel    : '選擇時(shí)間',
                          allowBlank    : false,
                          emptyText    : '請(qǐng)選擇開始日期',
                          editable    : false,
                          format        : 'Y-m-d',
                          maxValue    : new Date(),
                          width        : 130
                      });
              var data = [
                  ['y','年'],
                  ['m','月'],
                  ['d','日']
                //  ['w','周']
              ];

              var store = new Ext.data.SimpleStore({
                  fields: ['value', 'text'],
                  data: data
              });
              var combo = new Ext.form.ComboBox({
                  store: store,
                  fieldLabel:"請(qǐng)選擇時(shí)間對(duì)應(yīng)的類型",
                  emptyText: '請(qǐng)選擇篩選類型',
                  mode: 'local',
                  triggerAction : 'all',
                  valueField: 'value',
                  displayField: 'text'
              });
              Ext.ux.WaterRealtimeDisplayPanel.superclass.constructor.call(this, {
                          id : this.panelId,
                          title : this.treeNode.text,
                          closable : true,
                          autoScroll : true,
                          height : 400,
                          items:[
                              {  
                          layout:'column',  
                          border:false,  
                          items:[{  
                          //columnWidth: .25 ,  
                          layout:'form',  
                          border:false,  
                          labelAlign:'right',  
                          width : 200,  
                          labelWidth:40,  
                          items:[
          temhum,  nodeCtl]  
                          }
                          ,{  
                              layout:'form',  
                              width : 200,  
                              labelWidth:60,  
                              border:false,  
                              labelAlign:'left',  
                              items:[stTime]  
                          },//combo
                          combo
                          ,
                          {    
                              layout:'form',  
                              border:false,  
                              scope:this,  
                              items:[{  
                                  xtype:'button',  
                                  border:false,
                                  width:70,
                                  style:"margin-left:10px",
                                  text:'查詢',  
                                  scope:this,  
                                  handler:function(){
                                      
                                      // 獲取表單對(duì)象  
                                      var _params_ = this.getForm().getValues(false);    
                                      var nodeid = nodeCtl.getValue();//獲取節(jié)點(diǎn)id
                                      var checktype=combo.getValue();//選擇的篩選類型
                                      var checktime=stTime.getValue();//獲取時(shí)間的值
                                      var th = temhum.getValue();
                                      if (th == undefined || th == ''){
                                          Ext.Msg.alert("提示","節(jié)點(diǎn)不能為空");
                                          return;
                                      }
                                      if (nodeid == undefined || nodeid == ''){
                                          Ext.Msg.alert("提示","節(jié)點(diǎn)不能為空");
                                          return;
                                      }
                                      if(!stTime.isValid()){
                                          Ext.Msg.alert('信息', '時(shí)間為必選項(xiàng)');    
                                          return;
                                      }                          
                                      if (checktype == undefined || checktype == ''){
                                          Ext.Msg.alert("提示","篩選類型不能為空");
                                          return;
                                      }
                                      // 獲得統(tǒng)計(jì)【就是顯示的那個(gè)圖】 配置文件對(duì)象  
                                      var _op_ = this.getOptions();
                                      
                                      //首先從后臺(tái)獲得x軸上值
                                      var categories=_op_.xAxis.categories;
                                      categories=[];
                                      $.ajax({  
                                              type:"POST",  // 提交方式  
                                              url:path+'/wenshi/collectHositoryDataName', // 提交地址         
                                              dataType:"json", // 解釋格式  
                                              data:{"nodeid":nodeid,"checktime":checktime.format('Y-m-d'),"checktype":checktype,"th":th},     // 請(qǐng)求參數(shù)  
                                              success:function(iJson){  
                                                  var results = eval(iJson); // 轉(zhuǎn)換成 JSON 數(shù)據(jù)  
                                             var r = results[0].data;
                                           for(var i=0;i<r.length;i++){
                                               categories.push(r[i]);
                                           }
                                              
                                                  _op_.xAxis.categories=categories;
                                               },  
                                              error:function(){  
                                                  Ext.Msg.alert('系統(tǒng)操作','網(wǎng)絡(luò)不通暢或數(shù)據(jù)格式不對(duì)!');  
                                              }  
                                      });
                                     
                                      // 獲得統(tǒng)計(jì) 對(duì)象的 數(shù)據(jù)
                                      var _series_ = _op_.series;                             
                                      // 清空 統(tǒng)計(jì) 對(duì)象的 數(shù)據(jù) 重新加載                              
                                      _series_ = [] ;  
                                      // 創(chuàng)建一個(gè)統(tǒng)計(jì) 對(duì)象胡方法   
                                      var _createChart_ = function (obj){new Highcharts.Chart(obj);};  
                                      // 向后臺(tái)發(fā)送請(qǐng)求   
                                  var d = new Ext.util.DelayedTask(function(){  
                                       $.ajax({  
                                              type:"POST",  // 提交方式  
                                              url:path+'/wenshi/collectHositoryData', // 提交地址         
                                              dataType:"json", // 解釋格式  
                                              data:{"nodeid":nodeid,"checktime":checktime.format('Y-m-d'),"checktype":checktype,"th":th},     // 請(qǐng)求參數(shù)  
                                              success:function(iJson){  
                                                  var results = eval(iJson); // 轉(zhuǎn)換成 JSON 數(shù)據(jù)  
                                                  for(var i =0 ; i < results.length;i++){  // 解釋和裝載數(shù)據(jù)   
                                                      _series_.push({name:results[i].name,data:results[i].data});  
                                                  }  
                                                  _op_.series = _series_; // 賦值   
                                                  _createChart_(_op_);  // 重新創(chuàng)建一個(gè)統(tǒng)計(jì)  
                                               },  
                                              error:function(){  
                                                  Ext.Msg.alert('系統(tǒng)操作','網(wǎng)絡(luò)不通暢或數(shù)據(jù)格式不對(duì)!');  
                                              }  
                                      });
                                   });  
                                   d.delay(1000);
                                  }  
                              }]  
                          }]  
                      },
                      {  
                          xtype:'panel',  // 創(chuàng)建  Highcharts  所依賴的 div   
                          html:'<div id="'+"test"+'" style="width:1000px; height: 500px; margin: 0 auto"></div>'  
                      }
                              ],
                          listeners : {
                              activate : function(p) {
                                    var obj=this.getOptions();
                                    obj.series=series;
                                    var chart =new Highcharts.Chart(obj);
                              }
                          },
                          getOptions:function(){
                              return     {
                                              chart : {
                                                  renderTo :"test",
                                                    type: 'spline'
                                              },
                                              lang : {
                                                  exportButtonTitle : '導(dǎo)出圖表',
                                                  printButtonTitle : '打印報(bào)表'
                                              },
                                              title : {
                                                  text : '節(jié)點(diǎn)歷史參數(shù)曲線圖'
                                              },
                                              xAxis : {
                                                  title : {
                                                      text : '采集時(shí)間'
                                                  }
                                                 ,
                                                  //categories : ['1秒', '2秒','3秒']//設(shè)置x軸上分類名稱
                                              },
                                              yAxis : {
                                                  title : {
                                                      text : '節(jié)點(diǎn)參數(shù)值'
                                                  },
                                                  plotLines: [{  
                                                        value: 0,  
                                                        width: 1,  
                                                        color: '#808080'  
                                                       }]
                                              },
                                              tooltip: {  
                                                          //enabled: false,  //是否顯示提示框
                                                          formatter: function() {  
                                                                  return "時(shí)間:"+this.x +'<br/>'+"參數(shù)值:"+ this.y;
                                                          }  
                                                    }
                                              //,
          //                                   series : [{
          //                                                name : '實(shí)時(shí)數(shù)據(jù)顯示',
          //                                                data : [141, 100, 4]
          //                                            }]
                                          };
                          }
                      });
          };
          Ext.extend(Ext.ux.WaterRealtimeDisplayPanel, Ext.FormPanel, {
          });
          Ext.reg('ljsStudentTuPanel', Ext.ux.WaterRealtimeDisplayPanel);


          后臺(tái)導(dǎo)出圖片的方法是:
          public class ImageController extends Controller{

              public void index(){
                  
                  String type = getPara("type");
                  String svg =getPara("svg");
                  String filename = getPara("filename");
                  ServletOutputStream out1 =  null;
                  try {
                      filename = filename==null?"chart":filename;
                       out1 = getResponse().getOutputStream();
                      if (null != type && null != svg) {
                          svg = svg.replaceAll(":rect", "rect");
                          String ext = "";
                          Transcoder t = null;
                          if (type.equals("image/png")) {
                              ext = "png";
                              t = new PNGTranscoder();
                          } else if (type.equals("image/jpeg")) {
                              ext = "jpg";
                              t = new JPEGTranscoder();
                          } else if(type.equals("image/svg+xml")) {
                                ext = "svg";
                          }else if(type.equals("application/pdf")){
                              t = new PDFTranscoder();
                              ext = "pdf";
                          }
                              
                          getResponse().addHeader("Content-Disposition", "attachment; filename="+ filename + "."+ext);
                          getResponse().addHeader("Content-Type", type);
                          
                          if (null != t) {
                              TranscoderInput input = new TranscoderInput(new StringReader(svg));
                              TranscoderOutput output = new TranscoderOutput(out1);                    
                              try {
                                  t.transcode(input, output);
                              } catch (TranscoderException e) {
                                  out1.print("Problem transcoding stream. See the web logs for more details.");
                                  e.printStackTrace();
                              }
                          } else if (ext.equals("svg")) {
                              OutputStreamWriter writer = new OutputStreamWriter(out1, "UTF-8");
                              writer.append(svg);
                              writer.flush();
                              writer.close();
                          } else
                              out1.print("Invalid type: " + type);
                      } else {
                          //getResponse().addHeader("Content-Type", "text/html");
                         // out.println("Usage:\n\tParameter [svg]: The DOM Element to be converted." +
                         //         "\n\tParameter [type]: The destination MIME type for the elment to be transcoded.");
                      }
                      
                  } catch (Exception e) {
                      e.printStackTrace();
                  }finally{
                      try {
                          out1.flush();
                          getResponse().flushBuffer();
                          out1.close();
                          
                      } catch (Exception e2) {
                      
                      }
                      
                  }
                  
                  renderNull();//不跳轉(zhuǎn)
                  
                  

                  }
          }

          posted @ 2013-03-08 17:01 楊軍威 閱讀(3425) | 評(píng)論 (2)編輯 收藏

          僅列出標(biāo)題
          共43頁(yè): First 上一頁(yè) 29 30 31 32 33 34 35 36 37 下一頁(yè) Last 

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 榆社县| 澄江县| 缙云县| 泽普县| 济南市| 监利县| 奇台县| 乐平市| 丹巴县| 金平| 密云县| 秦皇岛市| 上蔡县| 遂川县| 通化县| 吴堡县| 德昌县| 博兴县| 繁峙县| 尼木县| 休宁县| 元江| 樟树市| 称多县| 信宜市| 五家渠市| 长岛县| 镇沅| 兰西县| 聂拉木县| 赤城县| 东平县| 岳池县| 西青区| 睢宁县| 海城市| 延吉市| 泰顺县| 稷山县| 邢台市| 三原县|