`
learnmore
  • 浏览: 590171 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

判断终端类型

 
阅读更多
public static class CheckMobile {  
        
        // \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),    
        // 字符串在编译时会被转码一次,所以是 "\\b"    
        // \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔)    
         static String phoneReg = "\\b(ip(hone|od)|android|opera m(ob|in)i"    
                +"|windows (phone|ce)|blackberry"    
                +"|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp"    
                +"|laystation portable)|nokia|fennec|htc[-_]"    
                +"|mobile|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";    
         static String tableReg = "\\b(ipad|tablet|(Nexus 7)|up.browser"    
                +"|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";    
          
        //移动设备正则匹配:手机端、平板  
         static Pattern phonePat = Pattern.compile(phoneReg, Pattern.CASE_INSENSITIVE);    
         static Pattern tablePat = Pattern.compile(tableReg, Pattern.CASE_INSENSITIVE);    
            
        /** 
         * 检测是否是移动设备访问 
         *  
         * @Title: check 
         * @Date : 2014-7-7 下午01:29:07 
         * @param userAgent 浏览器标识 
         * @return true:移动设备接入,false:pc端接入 
         */  
        public static boolean check(String userAgent){    
            if(null == userAgent){    
                userAgent = "";    
            }    
            // 匹配    
            Matcher matcherPhone = phonePat.matcher(userAgent);    
            Matcher matcherTable = tablePat.matcher(userAgent);    
            if(matcherPhone.find() || matcherTable.find()){    
                return true;    
            } else {    
                return false;    
            }    
        }  
    }
    
    /** 
     * 检查访问方式是否为移动端 
     *  
     * @Title: check 
     * @Date : 2014-7-7 下午03:55:19 
     * @param request 
     * @throws IOException  
     */  
    public boolean check(HttpServletRequest request) throws IOException{  
        boolean isFromMobile=false;  
          
        HttpSession session= request.getSession();
       //检查是否已经记录访问方式(移动端或pc端)  
        if(null==session.getAttribute("ua")){  
            try{  
                //获取ua,用来判断是否为移动端访问  
                String userAgent = request.getHeader( "USER-AGENT" ).toLowerCase();    
                if(null == userAgent){    
                    userAgent = "";    
                }  
                isFromMobile=CheckMobile.check(userAgent);  
                //判断是否为移动端访问  
                if(isFromMobile){  
                    logger.info("移动端访问");  
                    session.setAttribute("ua","mobile");  
                } else {  
                	logger.info("pc端访问");  
                    session.setAttribute("ua","pc");
                }  
            }catch(Exception e){}  
        }else{  
            isFromMobile=session.getAttribute("ua").equals("mobile");  
        }  
          
        return isFromMobile;  
    } 
分享到:
评论

相关推荐

    js判断终端类型、textarea根据内容自适应高度

    里面包含了两个javascript方法,一个是判断终端类型的,根据userAgent判断访问网页的是什么类型的终端 第二个方法,是使textarea根据内容的多少,自动设置相应的高度,使文字不被隐藏

    终端类型检测

    Mobile_Detect 是一个轻量级的开源移动设备(手机)检测的 PHP Class, 2 它使用 User-Agent 中的字符串,并结合 ... ... 4 可以检测出所用的设备类型(包括操作类型,以及手机品牌等都能检测)和浏览器的详细信息。

    判断访客终端类型集锦

    本文将介绍分别使用PHP和JAVASCRIPT代码判断用户终端类型。 PHP版 我们使用PHP的$_SERVER[‘HTTP_USER_AGENT’]来获取手机用户浏览器的用户代理,然后匹配已有的各种手机浏览器代理库,如果含有匹配的关键字,则...

    Javascript自定义函数判断网站访问类型是PC还是移动终端

    如果,能够判断出访问Web网页的类型(PC还是移动终端)。就可以对症下药,找出解决的办法! 访问的类型为移动终端我们就用.gif代替Flash(.swf后缀)动画,PC端就不做改变。这样就比较完美了! 如下所示,函数 ...

    js判断客户端是iOS还是Android等移动终端的方法

    判断原理: JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是...如何判断是否为移动终端 利用正则match, 匹配navigator.

    PHP验证终端类型是否为手机的简单实例

    下面小编就为大家带来一篇PHP验证终端类型是否为手机的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    jquery判断iPhone、Android设备类型

    最近做了一版微信宣传页,通过JQ来判断设备,并进行下载  微信内置浏览器对下载链接进行了屏蔽,所以先进行判断,如果是微信内置浏览器,则跳转应用宝链接,如果不是,则判断是iPhone/Adroid/PC 并... //android终端

    利用JS判断客户端类型你应该知道的四种方法

    它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标 识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或

    NAT类型测试的小工具

    NAT类型测试工具,检查判断自己或对方的nat类型。公开的免费STUN服务器 当SIP终端在使用私有IP地址时,可能需要配置stun服务器 公开的免费STUN服务器有: stunserver.org 测试是OK的

    2023年电赛综合测评B题国一方案

    本装置可测量:同轴线缆的长度、终端电阻负载、终端电容负载。 主控使用梁山派开发板...保持长度不变,终端接入电阻或电容负载,正确判断负载类型并测量值,误差不大于 10% 线缆长度 ≤ 1m,测量长度,误差不大于 1%

    百度判断手机终端并自动跳转js代码及使用实例

    百度目前为站长提供了判断手机终端类型并自动实现跳转的js脚本,极大的方便了广大站长及web开发人员。其js脚本的使用方法极其简单。 代码如下: [removed][removed] [removed]uaredirect(“手机站”,”WEB站”);...

    Android开发人员不得不收集的代码

    finishOtherActivities : 结束所有其他类型的 Activity finishAllActivities : 结束所有 Activity finishAllActivitiesExceptNewest: 结束除最新之外的所有 Activity App 相关 -> AppUtils.java -> Demo ...

    UserAgentUtils-1.5.jar

    java判断request请求是手机还是pc终端,这个是是判断了是否是移动端还是PC端,如果需要继续判断移动端的类型 我会写好了 再次分享给大家 喜欢的点个赞

    基于zigbee的多传感器组网项目

    可以接收终端数据,判断数据属性 将接收数据显示在OLED屏上 当有来电时,发送短信到指定号码 当接收数值低于预警值,发送短信 可以和不同的终端完成组网,通过用不同的端点ID 开启串口0将数据发送到上位机,开启串口...

    模拟shell(minishell)(myshell)

    cat -> 在终端显示文件类型 chmod -> 改变文件权限操作 ln -> 创建文件硬链接 ln -s -> 创建文件软连接 ***具有终端输入日记记录功能 其中 Main.c: 主要用于调用Terminal.c以及Command.c中的函数接口 Terminal.c: ...

    Android网络工具类NetworkUtils详解

    网络工具类NetworkUtils,供大家参考,具体内容如下 ...获取移动终端类型 getPhoneType 获取当前的网络类型(WIFI,2G,3G,4G) getNetWorkType、getNetWorkTypeName 代码: import android.content.C

Global site tag (gtag.js) - Google Analytics