服务端判断客户端是移动端浏览器还是PC端浏览器

在开发过程中,有时候业务要求需要对移动端和PC端分别处理,如果是移动端,那么返回页面A,如果是PC端,那么返回页面B,而判断浏览器是移动端还是PC端,我们一般通过user-agent判断,服务端和前端js都可以获取到user-agent并作出判断,这里分享的是服务端做这个处理。
java代码:

    /**
     * 判断是否是手机浏览器
     * @param request
     * @return
     */
    public static Boolean isMoblieBrowser(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" };
        String ua = request.getHeader("user-agent");
        if (org.apache.commons.lang3.StringUtils.isNotBlank(ua)) {
            for (String mobileAgent : mobileAgents) {
                if (ua.toLowerCase().indexOf(mobileAgent) >= 0) {
                    isMoblie = true;
                    break;
                }
            }
        }

        return isMoblie;
    }

这里将常用到的手机浏览器ua关键词列举出来放在一个数组里,然后获取当前浏览器的ua,判断当前浏览器的ua是否包含上面数组里的某一个,若找到了包含的元素,则是手机浏览器。
测试方法代码:

    @RequestMapping("")
    public ModelAndView test(HttpServletRequest request) {
        ModelAndView mv = new ModelAndView();
        System.out.println("是否手机浏览器:"+isMoblieBrowser(request));
        if(isMoblieBrowser(request)){
            mv.setViewName("mobile");
        }else{
            mv.setViewName("pc");
        }
        return mv;
    }

这里通过判断是否是手机浏览器然后返回不同的页面,进行不同的业务处理。
原文作者技术博客://www.greatytc.com/u/ac4daaeecdfe
95后前端妹子一枚,爱阅读,爱交友,将工作中遇到的问题记录在这里,希望给每一个看到的你能带来一点帮助。
欢迎留言交流

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基础知识篇:Http Header之User-AgentUser Agent中文名为用户代理,是Http协议中...
    iPhone阅读 15,864评论 0 13
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,796评论 1 92
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,646评论 1 45
  • 我们去西山岛露营,开了一个小时的车,开到了之后我们就去烤烧烤,我烤了肉串,由于还有薯片,还有鱿鱼,还有香肠,我考的...
    Cato的时光阅读 416评论 0 0
  • 序 苏彧,你会等我吗? 和苏彧分手了。说是分手,可是他们两个人好像都没有明确告知彼此,到此为止。 只是谁也不知道这...