zoukankan      html  css  js  c++  java
  • java判断是移动端还是pc端

    //  是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),
    // 字符串在编译时会被转码一次,所以是 "\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 checked(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
    */
    @SuppressWarnings("static-access")
    public boolean check(HttpServletRequest request,HttpServletResponse response) 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=this.checked(userAgent);
    //判断是否为移动端访问
    if(isFromMobile){
    session.setAttribute("ua","mobile");
    } else {
    session.setAttribute("ua","pc");
    }
    }catch(Exception e){}
    }else{
    try{
    //获取ua,用来判断是否为移动端访问
    String userAgent = request.getHeader( "USER-AGENT" ).toLowerCase();
    if(null == userAgent){
    userAgent = "";
    }
    isFromMobile=this.checked(userAgent);
    //判断是否为移动端访问
    if(isFromMobile){
    session.setAttribute("ua","mobile");
    } else {
    session.setAttribute("ua","pc");
    }
    }catch(Exception e){}
    isFromMobile=session.getAttribute("ua").equals("mobile");
    }
    return isFromMobile;
    }

    if(check(request, response)){
                mv.setViewName("phone/index");
            }else{
                mv.setViewName("page/index");
            }
  • 相关阅读:
    Oracle db 使用转换函数和条件表达式
    Oracle DB 嵌套函数
    Oracle DB NVL、NVL2、NULLIF、COALESCE函数
    OCP-1Z0-051-V9.02-92题
    OCP-1Z0-051-V9.02-90题
    OCP-1Z0-051-V9.02-89题
    OCP-1Z0-051-V9.02-88题
    OCP-1Z0-051-V9.02-87题
    OCP-1Z0-051-V9.02-86题
    OCP-1Z0-051-V9.02-85题
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/7363693.html
Copyright © 2011-2022 走看看