作者coin3 (coin3)
看板java
标题Re: [问题] 取得OS名称一则语法的疑问
时间Wed Jun 10 19:06:26 2009
※ 引述《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)
1F:推 legnaleurc:UserAgent 非常好改... 06/10 20:40
2F:→ coin3:不过如果 萤幕解析度~就....没办法了吧!! 06/10 20:58
3F:→ coin3:如果不想用JAVA Script+post的话~getScreenSize也是抓本地的 06/10 21:00