这个代码其实不是由我本人发现的,而是在翻看公司项目时无意间发现,觉得很实用所以拿出来大家分享。
框架:Struts2+spring+ibatis,
主要实现是依靠Http请求头Header中的 "User-Agent" 来完成,好了, 废话不多说直接上代码。
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;">//这里本宝宝表示不怎么了解它的内部原理,但是知道个大概意思就得了。</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>
虽然不是我写出来的,但是看到这个代码,也是有一种收获的,其实很多设置都是包含在请求头中的,因为不管是什么浏览器什么设备,它要通过http去调用一个请求,那么它就必定是有http协议,只要精通http协议,那么啥事都好办(表示本屌目前不懂http协议,而后努力学习学习,再来装逼)~~