這個(gè)代碼其實(shí)不是由我本人發(fā)現(xiàn)的,而是在翻看公司項(xiàng)目時(shí)無意間發(fā)現(xiàn),覺得很實(shí)用所以拿出來大家分享。
框架:Struts2+spring+ibatis,
主要實(shí)現(xiàn)是依靠Http請(qǐng)求頭Header中的 "User-Agent" 來完成,好了, 廢話不多說直接上代碼。
Action中:
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
|
public String execute() { HttpServletRequest request = ServletActionContext.getRequest(); boolean isMoblie = JudgeIsMoblie(request); if(isMoblie){ return "phone"; } return "pc"; } public boolean JudgeIsMoblie(HttpServletRequest request) { boolean isMoblie = false; String[] mobileAgents = { "iphone", "android", "phone", "mobile", "wap", "netfront", "java", "opera mobi", "opera mini", "ucweb", "windows ce", "symbian", "series", "webos", "sony", "blackberry", "dopod", "nokia", "samsung", "palmsource", "xda", "pieplus", "meizu", "midp", "cldc", "motorola", "foma", "docomo", "up.browser", "up.link", "blazer", "helio", "hosin", "huawei", "novarra", "coolpad", "webos", "techfaith", "palmsource", "alcatel", "amoi", "ktouch", "nexian", "ericsson", "philips", "sagem", "wellcom", "bunjalloo", "maui", "smartphone", "iemobile", "spice", "bird", "zte-", "longcos", "pantech", "gionee", "portalmmm", "jig browser", "hiptop", "benq", "haier", "^lct", "320x320", "240x320", "176x220", "w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq", "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang", "doco", "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi", "keji", "leno", "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo", "midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", "palm", "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", "sany", "sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony", "sph-", "symb", "t-mo", "teli", "tim-", /*"tosh",*/ "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", "wapr", "webc", "winw", "winw", "xda", "xda-", "Googlebot-Mobile" }; if (request.getHeader("User-Agent") != null) { for (String mobileAgent : mobileAgents) { < span class = "comment" style = "margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;" >//這里本寶寶表示不怎么了解它的內(nèi)部原理,但是知道個(gè)大概意思就得了。</ span > if (request.getHeader("User-Agent").toLowerCase() .indexOf(mobileAgent) >= 0) { isMoblie = true; break; } } } return isMoblie; } |
Struts2
1
2
3
4
5
|
< span style = "white-space:pre" > </ span >< action name = "name" class = "你自己的action類" > < result name = "pc" >download/main.jsp</ result > < result name = "phone" >download/productPH.jsp</ result > </ action > |
好了,代碼就只是這么多,木有了木有了。。。 是不是感覺很簡(jiǎn)單的說,
雖然不是我寫出來的,但是看到這個(gè)代碼,也是有一種收獲的,其實(shí)很多設(shè)置都是包含在請(qǐng)求頭中的,因?yàn)椴还苁鞘裁礊g覽器什么設(shè)備,它要通過http去調(diào)用一個(gè)請(qǐng)求,那么它就必定是有http協(xié)議,只要精通http協(xié)議,那么啥事都好辦(表示本屌目前不懂http協(xié)議,而后努力學(xué)習(xí)學(xué)習(xí),再來裝逼)~~
以上這篇java后臺(tái)判斷客戶端是手機(jī)/PC并返回不同頁面的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:http://blog.csdn.net/lkx94/article/details/52237279