1. // \b 是单词边界(连着的两个(字母字符 与 非字母字符) 之间的逻辑上的间隔),
  2. // 字符串在编译时会被转码一次,所以是 "\\b"
  3. // \B 是单词内部逻辑间隔(连着的两个字母字符之间的逻辑上的间隔)
  4. static String phoneReg = "\\b(ip(hone|od)|android|opera m(ob|in)i"
  5. +"|windows (phone|ce)|blackberry"
  6. +"|s(ymbian|eries60|amsung)|p(laybook|alm|rofile/midp"
  7. +"|laystation portable)|nokia|fennec|htc[-_]"
  8. +"|mobile|up.browser|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";
  9. static String tableReg = "\\b(ipad|tablet|(Nexus 7)|up.browser"
  10. +"|[1-4][0-9]{2}x[1-4][0-9]{2})\\b";
  11.  
  12. //移动设备正则匹配:手机端、平板
  13. static Pattern phonePat = Pattern.compile(phoneReg, Pattern.CASE_INSENSITIVE);
  14. static Pattern tablePat = Pattern.compile(tableReg, Pattern.CASE_INSENSITIVE);
  15.  
  16. /**
  17. * 检测是否是移动设备访问
  18. *
  19. * @Title: check
  20. * @Date : 2014-7-7 下午01:29:07
  21. * @param userAgent 浏览器标识
  22. * @return true:移动设备接入,false:pc端接入
  23. */
  24. public static boolean checked(String userAgent){
  25. if(null == userAgent){
  26. userAgent = "";
  27. }
  28. // 匹配
  29. Matcher matcherPhone = phonePat.matcher(userAgent);
  30. Matcher matcherTable = tablePat.matcher(userAgent);
  31. if(matcherPhone.find() || matcherTable.find()){
  32. return true;
  33. } else {
  34. return false;
  35. }
  36. }
  37. /**
  38. * 检查访问方式是否为移动端
  39. *
  40. * @Title: check
  41. * @Date : 2014-7-7 下午03:55:19
  42. * @param request
  43. * @throws IOException
  44. */
  45. @SuppressWarnings("static-access")
  46. public boolean check(HttpServletRequest request,HttpServletResponse response) throws IOException{
  47. boolean isFromMobile=false;
  48.  
  49. HttpSession session= request.getSession();
  50. //检查是否已经记录访问方式(移动端或pc端)
  51. if(null==session.getAttribute("ua")){
  52. try{
  53. //获取ua,用来判断是否为移动端访问
  54. String userAgent = request.getHeader( "USER-AGENT" ).toLowerCase();
  55. if(null == userAgent){
  56. userAgent = "";
  57. }
  58. isFromMobile=this.checked(userAgent);
  59. //判断是否为移动端访问
  60. if(isFromMobile){
  61. session.setAttribute("ua","mobile");
  62. } else {
  63. session.setAttribute("ua","pc");
  64. }
  65. }catch(Exception e){}
  66. }else{
  67. try{
  68. //获取ua,用来判断是否为移动端访问
  69. String userAgent = request.getHeader( "USER-AGENT" ).toLowerCase();
  70. if(null == userAgent){
  71. userAgent = "";
  72. }
  73. isFromMobile=this.checked(userAgent);
  74. //判断是否为移动端访问
  75. if(isFromMobile){
  76. session.setAttribute("ua","mobile");
  77. } else {
  78. session.setAttribute("ua","pc");
  79. }
  80. }catch(Exception e){}
  81. isFromMobile=session.getAttribute("ua").equals("mobile");
  82. }
  83. return isFromMobile;
  84. }
  1. if(check(request, response)){
  2. mv.setViewName("phone/index");
  3. }else{
  4. mv.setViewName("page/index");
  5. }

java判断是移动端还是pc端的更多相关文章

  1. JavaScript判断移动端及pc端访问不同的网站

    JavaScript判断移动端及pc端访问不同的网站 现在很多网站都是分为两个版本,一个pc端的一个移动端的(响应式除外),针对这两个版本,就需要对访问的设备进行判断,如果是pc,就直接访问pc网站, ...

  2. js判断游览器是移动端还是PC端

    js判断网页游览器是移动端还是PC端 <script type="text/javascript"> function browserRedirect() { var ...

  3. js判断是移动端还是pc端

    运行页面的时候,执行到js会判断来自于移动端还是pc端,如果是移动端则跳转制定链接地址,这样在手机端会有额外的不必要浪费的加载时间 var browser={ versions:function(){ ...

  4. js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结

    1.js常见的判断移动端或者pc端或者安卓和苹果浏览器的方法总结 : http://www.haorooms.com/post/js_pc_iosandmobile 2.Js判断客户端是否为PC还是手 ...

  5. JS判断当前使用设备是pc端还是web端(转MirageFireFox)

    js判断当前设备 最近用bootstrap做自适应,发现仍然很难很好的兼容web端和PC端的现实. 仔细观察百度,淘宝,京东等大型网站,发现这些网站都有对应不同客户端的子站. 站点 PC端url we ...

  6. 判断是移动端还是PC端

    // 判断是移动端还是PC端 $http_user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? strtolower($_SERVER['HTTP_USE ...

  7. js判断移动端还是PC端

    function isMobile(){ var sUserAgent= navigator.userAgent.toLowerCase(), bIsIpad= sUserAgent.match(/i ...

  8. JS 判断移动端与PC端

    js判断移动端与pc端   这里介绍下使用device.js插件来判断移动端设备 地址:https://github.com/matthewhudson/device.js 示例: 1 2 3 4 5 ...

  9. JS判断移动端还是PC端(改造自腾讯网) 仅用于宣传动画,下载页等

    JS判断移动端还是PC端(改造自腾讯网 http://www.qq.com/) 本脚本仅用于宣传动画,下载页( ipad 也算pc端)等,  ionic 用 ionic.platform 即可( io ...

随机推荐

  1. git log退出方法

    英文状态下按Q

  2. nginx根据http_user_agent防DDOS

    前端squid反向代理到nginx nginx根据http_user_agent防DDOS 首先查看访问日志,找出可疑访问 找到http_user_agent 的特征,然后再作过滤 "Moz ...

  3. json解析为泛型对象

    一.方法 public <T> T jsonToObjByType(String str, Type type) { try { if (isValidJson(str)) { retur ...

  4. 第二篇:呈现内容_第一节:Control呈现

    一.Control的呈现过程 在上个章节““生死有序”的控件生命周期”中,我们提到Render是控件开发的主角,但在控件树的“合成模式(Composite)”部分这位主角却缺席了(戏份太多的缘由).哦 ...

  5. [转]Intellij IDEA快捷键与使用小技巧

    Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ ...

  6. [转]Intellij idea创建javaWeb以及Servlet简单实现

    准备:1. 安装jdk1.72. 安装tomcat1.8 一.创建并设置javaweb工程 1.创建javaweb工程File --> New --> Project... 设置工程名字: ...

  7. How to compare dates in Java

    How to compare dates in JavaBy mkyong | January 18, 2010 | Updated : November 15, 2016 | Viewed : 93 ...

  8. shell curl 下载图片并另存为(重命名)

    curl -o fuck.png http://img30.360buyimg.com/imgzone/jfs/t19711/232/1837927836/150222/e4cd87bb/5ad990 ...

  9. 转 分享我在阿里工作十年接触过Java框架设计模式

    转 原文: 分享我在阿里工作十年接触过Java框架设计模式 一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者 ...

  10. Knockout与Require框架同时使用时的visible绑定的问题,造成的影响,以及解决的方法。

    Knockout 可以将 visible 绑定到DOM 元素上,使得该元素的hidden 或visible 状态取决于绑定的值. 查看以下knockout的描述,http://knockoutjs.c ...