Javaweb determine whether the current request is a mobile device access method

Source: Internet
Author: User

Because the mobile and PC side is slightly different, I think it is best to be in a unified judgment, and do not change the original code, this can reduce the number of bugs to a certain extent. My idea is to first determine whether the current request is mobile, then set a logo to the session, and then you can handle it casually. Whether you are dealing with it alone or in a unified process, you can judge the session directly by reading it.

I encapsulated it into a class that I now share with you:

?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 package com.tgb.util;  import java.util.regex.Matcher; import java.util.regex.Pattern;  /**  * 检测是否为移动端设备访问  *  * @author  :  * @group  :  * @Version  :  * @Date  :  */public 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 :   * @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;   }  } }

How to use:

?
123456789101112131415161718192021222324252627282930313233343536 /**  * 检查访问方式是否为移动端  *  * @Title: check  * @Date :  * @param request  * @throws IOException  */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=CheckMobile.check(userAgent);    //判断是否为移动端访问    if(isFromMobile){     System.out.println("移动端访问");     session.setAttribute("ua","mobile");    } else {     System.out.println("pc端访问");     session.setAttribute("ua","pc");    }   }catch(Exception e){}  }else{   isFromMobile=session.getAttribute("ua").equals("mobile");  }    return isFromMobile; }

In the login, or in the action of the Execute call this method, do not change the original business logic, you can determine whether the request is mobile, and then according to the results to do the corresponding processing, it should be much simpler.

Javaweb determine whether the current request is a mobile device access method

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.