`
learnmore
  • 浏览: 602730 次
  • 性别: 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’]来获取手机用户浏览器的用户代理,然后匹配已有的各种手机浏览器代理库,如果含有匹配的关键字,则...

    跨终端的文件加载及缓存.pdf

    它可以与CDN(内容分发网络)结合,根据用户代理(User-Agent)信息来判断终端类型,从而提供定制化的文件。然而,User-Agent信息可能被篡改,导致识别错误。为解决这个问题,开发者通常有两种策略:一是对比前后端...

    js判断浏览器终端

    本文介绍了如何使用 JavaScript 来判断用户的浏览器终端类型,并提供了一个具体的代码示例。通过对 `navigator.userAgent` 的分析,可以实现根据不同设备类型进行相应的页面跳转或其他操作。同时,也讨论了一些扩展...

    原生js判断手机终端/安卓系统、ios系统

    总结来说,通过分析User-Agent字符串,我们可以轻松地使用原生JavaScript判断用户所使用的手机终端类型,如Android或iOS,并据此提供定制化的用户体验。这种方法适用于各种Web应用,特别是在考虑设备兼容性和优化...

    计量自动化终端故障判断及处理.pdf

    按照通信方式,又可以分为无线公网、230Hz无线专网、电力线窄带载波、RS485通信、北斗卫星、光纤等终端通信类型。 二、故障判断及处理 2.1 终端与主站通信异常 2.1.1 故障分析 通信异常通常表现为终端离线、在线...

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

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

    判断客户端是iOS还是Android

    在前端开发中,判断客户端是iOS还是Android等移动终端是非常重要的。通过JavaScript可以实现这种判断。下面是相关知识点的总结: 一、判断浏览器类型 在JavaScript中,可以通过两种方法来判断浏览器类型:一种是...

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

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

    电信设备-便于检测硬件类型的移动终端.zip

    "电信设备-便于检测硬件类型的移动终端.zip"这个压缩包文件显然包含了与移动设备硬件检测相关的详细资料,主要聚焦于如何识别和理解不同类型的硬件组件。让我们深入探讨这个主题。 首先,移动终端通常指的是智能...

    单片机与电脑超级终端通信

    它可以模拟不同类型的终端设备,如调制解调器、串口打印机等。用户可以通过超级终端设置波特率、数据位、停止位、校验位等参数,与单片机建立连接,并实时查看从单片机接收到的字符。 6. **周期发送**:为了实现...

    分布式馈线终端的开发与应用.pdf

    在研究内容及目标方面,主要包含了以下几个方面:1) 实现终端设备的三遥(遥控、遥测、遥信)、故障判断及事项记录等功能;2) 对软件进行分布式设计,实现软件的分布式安装与管理;3) 对硬件进行分置式设计,实现...

    pos 终端规范文档

    1. **交易确认机制**:为了解决蜂鸣器和指示灯在实际应用中无法清晰区分卡片受理成功或失败的问题,规范建议改进终端的反馈机制,比如通过调整蜂鸣器声音的间隔或模式,使用户能更准确地判断交易状态。 2. **交易...

    广东大客户负荷管理终端异常报警判断标准与处理规范(试行).pdf

    ### 广东大客户负荷管理终端异常报警判断标准与处理规范(试行)解析 #### 前言 在电力行业中,对于大客户的电力负荷管理至关重要。随着用电需求的增长和技术的进步,建立一套有效的电力负荷管理系统变得尤为关键。...

    TTERMPRO_终端工具

    压缩包中的文件“bcc7e55eac2340238cbf89b91f4202e7”很可能是TTERMPRO_终端工具的可执行文件或配置文件,具体的用途可能需要根据文件类型和内容来判断。在使用前,确保正确解压并运行该文件,遵循软件提供的指南...

    基于javascript实现判断移动终端浏览器版本信息

    3. 移动终端类型的判断 - 是否为移动终端:如果`userAgent`中包含与移动设备相关的字符串,如“Mobile”,则认为是移动终端。 - 是否为iOS终端:通过检测`userAgent`中是否包含特定的iOS标识字符串来判断。 - 是否为...

    中国电信物联网NB-IoT终端测试方法_现网分册(2018.v1)

    - **测试结果判断准则**:包括预期结果的测试结果判断准则和测试用例的测试结果判断准则两部分,用于指导如何判定测试是否成功。 - **测试编号组成**:采用统一的格式表示不同的测试案例,便于管理和追踪。 - **简化...

Global site tag (gtag.js) - Google Analytics