全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

javaweb判断当前请求是否为移动设备访问的方法

这段时间都是在做pc端的业务,结果经理找到我说,可能要做移动端的应用,后台逻辑还是用我写的逻辑,但是需要改动一些,看看怎么处理。

由于移动端和pc端还是稍微有些区别的,我觉得最好是在一个地儿统一判断,而且不要改动原先的代码,这样可以从一定程度上减少bug的数量。我的想法是首先应该判断当前请求是否为移动端,然后设一个标识到session中,然后就可以随便处理了。不管你是单独处理,还是统一处理,直接读取session就可以做相应的判断了。

我封装成了一个类,现在分享给大家:

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; 
  } 
 } 
} 

 使用方式:

 /** 
 * 检查访问方式是否为移动端 
 * 
 * @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; 
} 

在登录的时候,或者在action的execute中调用这个方法,不用改动原先的业务逻辑,即可判断请求的是否为移动端,然后再根据结果去做相应处理,应该就简单多了。

其实我在做的过程中,还是遇到了一个比较头疼的问题。经理说移动端的应用要求使用json格式,所以我想统一做一个处理,如果是从移动端访问,那么就把request和session中设置的Attribute全部读取到map或者list中,然后再转化为json格式输出。想法的美好的,结果有点小残酷。就拿登录来说,登录以后要跳转到list.jsp页,结果现在直接输出list中的数据了,但是页面没有跳转。页面跳转和返回json是冲突的。输出json的话,输出流就会关闭,不让再跳转,否则会提示错误。不知道大家有没有好的解决方案,如果不行的话,只能每个请求单独处理了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# javaweb  # 移动设备  # Javaweb请求转发及重定向实现详解  # JavaWeb请求转发和请求包含实现过程解析  # Javaweb应用使用限流处理大量的并发请求详解  # javaweb中ajax请求后台servlet(实例)  # javaweb如何实现请求和响应  # 使用CORS实现JavaWeb跨域请求问题的方法  # javaweb servlet中使用请求转发乱码的实现  # JavaWeb中请求转发和请求重定向的区别以及使用  # 跳转  # 是在  # 然后再  # 就可以  # 判断是否  # 我想  # 就会  # 我在  # 成了  # 你是  # 我说  # 我觉得  # 是从  # 这段  # 就把  # 要做  # 给大家  # 去做  # 做一个  # 转化为 


相关文章: 网站app免费制作软件,能免费看各大网站视频的手机app?  如何选择域名并搭建高效网站?  建站主机是什么?如何选择适合的建站主机?  魔方云NAT建站如何实现端口转发?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  开心动漫网站制作软件下载,十分开心动画为何停播?  如何快速搭建高效简练网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  常州企业建站如何选择最佳模板?  如何用AWS免费套餐快速搭建高效网站?  高端建站三要素:定制模板、企业官网与响应式设计优化  南平网站制作公司,2025年南平市事业单位报名时间?  如何快速建站并高效导出源代码?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  内部网站制作流程,如何建立公司内部网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  如何快速生成专业多端适配建站电话?  b2c电商网站制作流程,b2c水平综合的电商平台?  平台云上自主建站:模板化设计与智能工具打造高效网站  如何在Windows服务器上快速搭建网站?  建设网站制作价格,怎样建立自己的公司网站?  nginx修改上传文件大小限制的方法  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  建站之星×万网:智能建站系统+自助建站平台一键生成  如何访问已购建站主机并解决登录问题?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何通过NAT技术实现内网高效建站?  寿县云建站:智能SEO优化与多行业模板快速上线指南  如何快速搭建二级域名独立网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  小程序网站制作需要准备什么资料,如何制作小程序?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  建站之星后台管理:高效配置与模板优化提升用户体验  常州企业网站制作公司,全国继续教育网怎么登录?  建站之星如何实现网站加密操作?  电商网站制作价格怎么算,网上拍卖流程以及规则?  ,南京靠谱的征婚网站?  如何挑选优质建站一级代理提升网站排名?  企业微网站怎么做,公司网站和公众号有什么区别?  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何快速启动建站代理加盟业务?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。