java后臺(tái)判斷客戶端是手機(jī)/PC并返回不同頁(yè)面的實(shí)例
這個(gè)代碼其實(shí)不是由我本人發(fā)現(xiàn)的,而是在翻看公司項(xiàng)目時(shí)無(wú)意間發(fā)現(xiàn),覺(jué)得很實(shí)用所以拿出來(lái)大家分享。
框架:Struts2+spring+ibatis,
主要實(shí)現(xiàn)是依靠Http請(qǐng)求頭Header中的 "User-Agent" 來(lái)完成,好了, 廢話不多說(shuō)直接上代碼。
Action中:
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
<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>
好了,代碼就只是這么多,木有了木有了。。。 是不是感覺(jué)很簡(jiǎn)單的說(shuō),
雖然不是我寫出來(lái)的,但是看到這個(gè)代碼,也是有一種收獲的,其實(shí)很多設(shè)置都是包含在請(qǐng)求頭中的,因?yàn)椴还苁鞘裁礊g覽器什么設(shè)備,它要通過(guò)http去調(diào)用一個(gè)請(qǐng)求,那么它就必定是有http協(xié)議,只要精通http協(xié)議,那么啥事都好辦(表示本屌目前不懂http協(xié)議,而后努力學(xué)習(xí)學(xué)習(xí),再來(lái)裝逼)~~
以上這篇java后臺(tái)判斷客戶端是手機(jī)/PC并返回不同頁(yè)面的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié)
這篇文章主要介紹了Java HttpClient-Restful工具各種請(qǐng)求高度封裝提煉及總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
使用springboot的jar包能夠以service方式啟動(dòng)
這篇文章主要介紹了使用springboot的jar包能夠以service方式啟動(dòng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
SpringBoot項(xiàng)目中Maven剔除無(wú)用Jar引用的最佳實(shí)踐
在?Spring?Boot?項(xiàng)目開(kāi)發(fā)中,Maven?是最常用的構(gòu)建工具之一,通過(guò)?Maven,我們可以輕松地管理項(xiàng)目所需的依賴,而,隨著項(xiàng)目的復(fù)雜化,無(wú)用的?Jar?包引用可能會(huì)逐漸增多,本文旨在詳細(xì)解析如何在?Spring?Boot?項(xiàng)目中剔除無(wú)用的?Jar?引用,需要的朋友可以參考下2025-01-01
Java 數(shù)組分析及簡(jiǎn)單實(shí)例
這篇文章主要介紹了Java 數(shù)組分析及簡(jiǎn)單實(shí)例的相關(guān)資料,在Java中它就是對(duì)象,一個(gè)比較特殊的對(duì)象,需要的朋友可以參考下2017-03-03
Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例
本篇文章主要介紹了Spring Data Jpa實(shí)現(xiàn)分頁(yè)和排序代碼實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-03-03
spring-security關(guān)于hasRole的坑及解決
這篇文章主要介紹了spring-security關(guān)于hasRole的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
Java最簡(jiǎn)潔數(shù)據(jù)結(jié)構(gòu)之冒泡排序快速理解
冒泡排序是編程中數(shù)據(jù)結(jié)構(gòu)繞不過(guò)的一個(gè)基礎(chǔ)點(diǎn),有關(guān)于冒泡排序的文章也有很多,但可能會(huì)比較繚亂未能理解,本章將一子u為簡(jiǎn)潔明了的例圖帶你通關(guān)冒泡排序2021-11-11
SpringBoot整合Thymeleaf與FreeMarker視圖層技術(shù)
在目前的企業(yè)級(jí)應(yīng)用開(kāi)發(fā)中,前后端分離是趨勢(shì),但是視圖層技術(shù)還占有一席之地。Spring Boot 對(duì)視圖層技術(shù)提供了很好的支持,福安防推薦使用的模板引擎是Thymeleaf,不過(guò)想FreeMarker也支持,JSP技術(shù)在這里并不推薦使用2022-08-08
一篇文中細(xì)看Java多線程的創(chuàng)建方式
隨著計(jì)算機(jī)的配置越來(lái)越高,我們需要將進(jìn)程進(jìn)一步優(yōu)化,細(xì)分為線程,充分提高圖形化界面的多線程的開(kāi)發(fā),這篇文章主要給大家介紹了如何通過(guò)一篇文中細(xì)看Java多線程的創(chuàng)建方式,需要的朋友可以參考下2021-07-07

