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

框架: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端/手机web端访问,并返回相应页面相关推荐

  1. pc端/web端/移动端

    参考连接: pc端/web端/移动端开发区别在于什么? - 知乎 (zhihu.com) 移动端是手机端吗(移动端是手机端吗)_公会界 (ghjie.com) (35条消息) 什么是移动端,它和pc端 ...

  2. JAVA版WMS物流仓储管理系统源码,包含PDA端和Web端

    JAVA版WMS仓储管理系统源码 物流仓库管理系统源码 源码免费分享,需要学习可私信. 一.源码介绍: 基于JAVA开发的物流仓库管理系统(支持自营和第三方),包含PDA端和Web端.WMS在经过多家 ...

  3. Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、3D组件库】

    Vue常用的组件库大全[前端工程师必备] (一)移动端 常用组件库 1)Vant ui 2)Cube UI 3)VUX 4) NuTUI 5)Mint ui 6)Varlet UI 7)OnsenUI ...

  4. 在Java开发中,判断list集合为空还是为null的区别

    在Java开发中,判断list集合为空还是为null的区别 案例测试1 为什么输出not null,是因为null判断的是否对List集合分配内存空间,为不是List集合里面内容是否为空 案例测试2 ...

  5. 移动端和web端测试有什么区别

    移动端和web端测试有什么区别 单纯从功能测试的层面上来讲的话,APP 测试.web 测试 在流程和功能测试上是没有区别的. 根据两者载体不一样,则区别如下: 系统结构方面 web项目,b/s架构,基 ...

  6. 响应html广告区分手机pc,typecho博客判断电脑PC和手机WAP端进行广告展示

    特别声明:本文为原创,可自由转载.引用,但需署名作者且注明文章出处,如有侵权请联系! 上一篇文章详细介绍了个人网站typecho博客申请添加投放百度联盟广告的具体步骤https://www.zyglz ...

  7. html5 pc端 客户端 web端的区别,wap版、手机版以及web的区别

    wap版.手机版以及web的区别 手机上的应用通常分为"手机触屏版网站"."手机WAP版网站"."手机APP应用软件",其三者间有何区别呢? ...

  8. 基于java的一款实时聊天系统,包含服务端 + 客户端 + web端

    最终效果 为什么先看最终效果?因为此刻代码已经撸完了.更重要的是我们带着感官的目标去进行后续的分析,可以更好地理解.标题中提到了,整个工程包含三个部分: 1.聊天服务器 聊天服务器的职责一句话解释:负 ...

  9. Magento银联支付模块|Magento1.9 Unionpay中国银联支付插件|支持PC、手机移动端支付|2016最新Unionpay5.0.0支付接口...

    2019独角兽企业重金招聘Python工程师标准>>> 功能 严格按照中国银联Unionpay)接口文档编写代码. 中国银联(Unionpay)异步通知机制,确保订单状态及时更新. ...

最新文章

  1. 一个ASP.NET中使用的MessageBox类
  2. 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  3. TinyOS下TOSSIM仿真
  4. 优化器 - tf.keras.optimizers.SGD()【TensorFlow2入门手册】
  5. 中国发电机行业应用前景与投资策略分析报告2022版
  6. 华为5720设置静态路由不通_【干货分享】交换机与路由器在环路中的处理机制了解一下!...
  7. 线程池的各种使用场景
  8. Memcached 使用 及.NET客户端调用
  9. python转json的函数_pandas.DataFrame.to_json按行转json的方法
  10. mysql 不用缓存_mysql有自己的缓存机制,为什么还要用redis和memcac? 爱问知识人
  11. vb脚本从入门到精通_sqlmap从入门到精通第七章720 绕过WAF脚本space2morecommentamp;space2morehash...
  12. java 接口案例
  13. X86,X86_32,X86_64
  14. 头文件交叉声明的解决办法
  15. c语言 标准正态分布表,标准正态分布表ZP(Z).PDF
  16. 基于 VisualStudio2019 的 ASP.NET 后台环境搭建
  17. 阿里巴巴java规范
  18. 关于红色警戒2不能在Win1064位系统上运行的问题的解决
  19. 三角形的几何公式大全_干货2020高中数学必备公式大全,吃透它们,数学再“捡”20分...
  20. PHP保存微信头像到本地

热门文章

  1. Metal每日分享,纯色图片滤镜效果
  2. element UI 模态层dialog自定义大小
  3. Docker容器技术(三)
  4. 项目管理标准(PMBOK第七版-中文)
  5. GAIL之imitation代码运行(含PBS)
  6. 相机选型与远心镜头选型
  7. 利用OpenCV计算图像的垂直和水平积分投影
  8. pytorch数据抽样 随机取样
  9. “芯片”=“集成电路”=“半导体”吗?
  10. 天干地支(python)