网站首页> 博客> java实现判断是手机端还是pc端访问

java实现判断是手机端还是pc端访问

好文 2261
格式化记忆
收藏

    ONE源码为了更适应手机端用户的需求,近期也正在对手机端网站进行了改造,那么问题来了,要怎么判断用户是通过手机wap或者app访问的网站还是通过电脑访问的网站,下面就介绍一种方法。利用java的过滤器(filter)。

    

我的实现思路是创建一个拦截器,对首页的url进行拦截,在拦截的过程中获取用户请求头中的User-Agent,这个是记录着用户登录设备信息的

网上有工具类,判断请求头User-Agent的工具类

这个是一个工具类:


  1. //判断是否为手机浏览器  

  2.     public static boolean JudgeIsMoblie(HttpServletRequest request) {  

  3.         boolean isMoblie = false;  

  4.         String[] mobileAgents = { "iphone""android","ipad""phone""mobile""wap""netfront""java""opera mobi",  

  5.                 "opera mini""ucweb""windows ce""symbian""series""webos""sony""blackberry""dopod",  

  6.                 "nokia""samsung""palmsource""xda""pieplus""meizu""midp""cldc""motorola""foma",  

  7.                 "docomo""up.browser""up.link""blazer""helio""hosin""huawei""novarra""coolpad""webos",  

  8.                 "techfaith""palmsource""alcatel""amoi""ktouch""nexian""ericsson""philips""sagem",  

  9.                 "wellcom""bunjalloo""maui""smartphone""iemobile""spice""bird""zte-""longcos",  

  10.                 "pantech""gionee""portalmmm""jig browser""hiptop""benq""haier""^lct""320x320",  

  11.                 "240x320""176x220""w3c ""acs-""alav""alca""amoi""audi""avan""benq""bird""blac",  

  12.                 "blaz""brew""cell""cldc""cmd-""dang""doco""eric""hipt""inno""ipaq""java""jigs",  

  13.                 "kddi""keji""leno""lg-c""lg-d""lg-g""lge-""maui""maxo""midp""mits""mmef""mobi",  

  14.                 "mot-""moto""mwbp""nec-""newt""noki""oper""palm""pana""pant""phil""play""port",  

  15.                 "prox""qwap""sage""sams""sany""sch-""sec-""send""seri""sgh-""shar""sie-""siem",  

  16.                 "smal""smar""sony""sph-""symb""t-mo""teli""tim-""tosh""tsm-""upg1""upsi""vk-v",  

  17.                 "voda""wap-""wapa""wapi""wapp""wapr""webc""winw""winw""xda""xda-",  

  18.                 "Googlebot-Mobile" };  

  19.         if (request.getHeader("User-Agent") != null) {  

  20.             String agent=request.getHeader("User-Agent");  

  21.             for (String mobileAgent : mobileAgents) {  

  22.                 if (agent.toLowerCase().indexOf(mobileAgent) >= 0&&agent.toLowerCase().indexOf("windows nt")<=0 &&agent.toLowerCase().indexOf("macintosh")<=0) {  

  23.                     isMoblie = true;  

  24.                     break;  

  25.                 }  

  26.             }  

  27.         }  

  28.         return isMoblie;  

  29.     }  


写一个拦截器如果是电脑访问 放行,手机访问的话跳转到手机首页的url

注意在springMvc.xml配置文件配置拦截器的拦截路径 

拦截器:


  1. public class IntercepterMobile extends HandlerInterceptorAdapter{  

  2.       public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {  

  3.               

  4.               

  5.             super.afterCompletion(request, response, handler, ex);  

  6.         }  

  7.   

  8.           

  9.         public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {  

  10.               

  11.       

  12.             super.postHandle(request, response, handler, modelAndView);  

  13.               

  14.            

  15.         }  

  16.           

  17.        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {  

  18.            boolean judgeIsMoblie = SingletonLoginUtils.JudgeIsMoblie(request);  

  19.            if(judgeIsMoblie==true){  

  20.                response.sendRedirect("/mobile/index");  

  21.            }else{  

  22.                 return true;  

  23.            }  

  24.              

  25.         

  26.       return true;  

  27.     }  

  28. }  


  • 没有任何评论
个评论
格式化记忆

格式化记忆 (铂金)

96286金币 (276)粉丝 (31)源码

一切皆有可能!!!

 

加入微信群,不定期分享源码和经验
签到活跃榜 连续签到送额外金币
最新博客
校园跑腿系统外卖系统软件平台大学生创业平台搭建 667
壹脉销客智能名片CRM系统小程序可二开源码交付部署 654
为啥没搞了 1025
Nginx 的 5 大应用场景,太实用了! 1248
CentOS 8-stream 安装Postgresql 详细教程 1492
JAVA智慧校园管理系统小程序源码 电子班牌 Sass 模式 1233
Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 982
Java智慧校园系统源码 智慧校园源码 智慧学校源码 智慧校园管理系统源码 小程序+电子班牌 984
致远OA权限 1676
发博客会有金币吗 1013