java后台判断客户端是手机/PC并返回不同页面的实例

 更新时间:2018年01月20日 17:11:44   作者:lkx94  
下面小编就为大家分享一篇java后台判断客户端是手机/PC并返回不同页面的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

这个代码其实不是由我本人发现的,而是在翻看公司项目时无意间发现,觉得很实用所以拿出来大家分享。

框架:Struts2+spring+ibatis,

主要实现是依靠Http请求头Header中的 "User-Agent" 来完成,好了, 废话不多说直接上代码。

Action中:

public String execute() { 
    HttpServletRequest request = ServletActionContext.getRequest(); 
    boolean isMoblie = JudgeIsMoblie(request); 
    if(isMoblie){ 
      return "phone"; 
    } 
    return "pc"; 
  } 
   
  public boolean JudgeIsMoblie(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" }; 
    if (request.getHeader("User-Agent") != null) { 
      for (String mobileAgent : mobileAgents) { 
        <span class="comment" style="margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">//这里本宝宝表示不怎么了解它的内部原理,但是知道个大概意思就得了。</span> 
        if (request.getHeader("User-Agent").toLowerCase() 
            .indexOf(mobileAgent) >= 0) { 
          isMoblie = true; 
          break; 
        } 
      } 
    } 
    return isMoblie; 
  } 

Struts2

<span style="white-space:pre">    
</span><action name="name" class="你自己的action类"> 
      <result name="pc">download/main.jsp</result> 
      <result name="phone">download/productPH.jsp</result> 
    </action> 

好了,代码就只是这么多,木有了木有了。。。 是不是感觉很简单的说,

虽然不是我写出来的,但是看到这个代码,也是有一种收获的,其实很多设置都是包含在请求头中的,因为不管是什么浏览器什么设备,它要通过http去调用一个请求,那么它就必定是有http协议,只要精通http协议,那么啥事都好办(表示本屌目前不懂http协议,而后努力学习学习,再来装逼)~~

以上这篇java后台判断客户端是手机/PC并返回不同页面的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot快速迁移至Quarkus的方法步骤

    SpringBoot快速迁移至Quarkus的方法步骤

    这篇文章主要介绍了SpringBoot快速迁移至Quarkus的方法步骤。文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • SpringBoot集成内存数据库Sqlite的实践

    SpringBoot集成内存数据库Sqlite的实践

    sqlite这样的内存数据库,小巧可爱,做小型服务端演示程序,非常好用,本文主要介绍了SpringBoot集成Sqlite,具有一定的参考价值,感兴趣的可以了解一下
    2021-09-09
  • 如何基于JAVA读取yml配置文件指定key内容

    如何基于JAVA读取yml配置文件指定key内容

    这篇文章主要介绍了如何基于JAVA读取yml配置文件指定key内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 使用Stargate访问K8ssandra的过程之Springboot整合Cassandra

    使用Stargate访问K8ssandra的过程之Springboot整合Cassandra

    这篇文章主要介绍了使用Stargate访问K8ssandra的过程之Springboot整合Cassandra,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Mybatis如何使用@Mapper和@MapperScan注解实现映射关系

    Mybatis如何使用@Mapper和@MapperScan注解实现映射关系

    这篇文章主要介绍了Mybatis使用@Mapper和@MapperScan注解实现映射关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 解读Java中打印输出对象内容为什么可以不写.toString()

    解读Java中打印输出对象内容为什么可以不写.toString()

    这篇文章主要介绍了解读Java中打印输出对象内容为什么可以不写.toString()问题,具有很的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • JDK源码中一些实用的“小技巧”总结

    JDK源码中一些实用的“小技巧”总结

    这篇文章主要给大家总结介绍了关于JDK源码中一些实用的“小技巧”,文中通过示例代码介绍的非常详细,对大家学习或者使用jdk源码具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Java错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sjks.mapper.Use

    Java错误org.apache.ibatis.binding.BindingException: Inval

    本文主要介绍了Java错误org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.sjks.mapper.Use,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 剑指Offer之Java算法习题精讲数组与字符串题

    剑指Offer之Java算法习题精讲数组与字符串题

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03
  • Java aop面向切面编程(aspectJweaver)案例详解

    Java aop面向切面编程(aspectJweaver)案例详解

    这篇文章主要介绍了Java aop面向切面编程(aspectJweaver)案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08

最新评论