Re: [問題] 取得OS名稱一則語法的疑問
※ 引述《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
06/10 20:40, 1F
→
06/10 20:58, , 2F
06/10 20:58, 2F
→
06/10 21:00, , 3F
06/10 21:00, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):