Java判断访问端是移动还是PC

  |   0 评论   |   222 浏览

    在做web开发的时候,往往需要针对PC和移动端进行一定的适配。 这个时候,就需要判断进行移动端和PC端的判断了。
    在Java中,判断两者的主要途径是,根据访问者携带的UA(User-Agent)信息,来识别出访问的设备。话不多说,直接贴代码:

    首先写一个工具类,通过UA识别访问端:
    /**
    * 判断移动端还是PC端
    /
    public class PcOrMobile {
    // 手机端正则表达式
    private 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”;
    // pad端正则表达式
    private static String tableReg = “\b(ipad|tablet|(Nexus 7)|up.browser” + “|[1-4][0-9]{2}x[1-4][0-9]{2})\b”;
    // 移动设备正则匹配:手机端、平板
    private static Pattern phonePat = Pattern.compile(phoneReg, Pattern.CASE_INSENSITIVE);
    private static Pattern tablePat = Pattern.compile(tableReg, Pattern.CASE_INSENSITIVE);
    /
    *
    * 通过UA判断是否是PC端
    * @param userAgent
    * @return
    */
    public static boolean isMobile(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;
    }
    }
    }

    在controller类中,从request中获取UA信息
    /**
    * 判断是否是移动端
    *
    * @param request
    * @return
    */
    private boolean isMobile(HttpServletRequest request) {
    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 = PcOrMobile.isMobile(userAgent);
    // 判断是否为移动端访问
    } catch (Exception e) {
    }
    }
    return isFromMobile;
    }

    这样,就可以通过该方式来识别访问端设备,进行设备的适配了。
    演示地址:http://ruoyixi.top

    移动端样式:
    20191009232412png

    PC端样式:
    20191009232321png

    评论

    发表评论

    validate