Re: [問題] 取得OS名稱一則語法的疑問

看板java作者 (coin3)時間15年前 (2009/06/10 19:06), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《coin3 (coin3)》之銘言: : 以下語法用來偵測operating system : system.getproperty("os.name") : 但有個很不解之處,如果我用JAVA寫了一個Web services : 我使用這串語法~用戶端來Access我的server會執行到這串程式 : 想請問: : 執行結果會顯示用戶的os名稱~還是server的os名稱!!! : 網路找很久了沒人有特別說明它 : 自己也沒有兩台不同os的電腦能夠測~ : 因為寫好的services都是用localhost,完全無從判斷!! : 順便一問:如果測到是server的~要如何才能抓用戶的!! : 想用條件判斷...根據不同OS彈出不同的內容 今天解決了~上來回報一下~但是基於JAVA SCRIPT的安全性 如果對方把我的網頁JAVA SCRIPT抓下來~更改if else輸出內容~ 再利用post傳給目標網址 我設計這樣來做"彈出內容區隔"就失去意義了 至少....JAVA Server端語法安全多了~雖然安全疑慮還是有 小弟我程式能力只能說是基本到不行~套用玩玩API..... 解決方式為.... String Agent = request.getHeader("User-Agent"); //先取得這串語法的輸出內容 //再將資訊分段擷取,而作業系統剛好就是我要的第"三"段,故額外使用兩次 //st.nextToken StringTokenizer st = new StringTokenizer(Agent,";"); st.nextToken(); st.nextToken(); String operatingSys = st.nextToken().toLowerCase(); operatingSys就是我要的內容~已經實驗過該語法為server端抓用戶環境的語法 會用toLowerCase()的原因~不外乎是大小寫要統一 輸出的字串xp下為windows nt 5.1 在2K作業系統則輸出windows nt 5.0 利用indexof將顯示的內容關鍵字抓出來 加上if else判斷 輸出自己想要的內容 例如出現win字眼,則輸出字串改為"Windows" 大概是這樣~ 有需要請安心使用 另外system.getProperty("os.name")....擷取對象為"自身" 亦即哪一台機器編譯的,結果就是哪一台機器的OS名稱,故不適合用來開發JSP Windows XP也是輸出Windows XP 在此分享給想要寫JSP的版友 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.192.13 ※ 編輯: coin3 來自: 220.133.192.13 (06/10 19:11)

06/10 20:40, , 1F
UserAgent 非常好改...
06/10 20:40, 1F

06/10 20:58, , 2F
不過如果 螢幕解析度~就....沒辦法了吧!!
06/10 20:58, 2F

06/10 21:00, , 3F
如果不想用JAVA Script+post的話~getScreenSize也是抓本地的
06/10 21:00, 3F
文章代碼(AID): #1ABvEpPX (java)
文章代碼(AID): #1ABvEpPX (java)