这段时间都是在做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小时内与您取得联系。