>>分享Java Web开发技术,并且对孙卫琴的《Tomcat与Java Web开发技术详解》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22945 个阅读者 刷新本主题
 * 贴子主题:  在Java Web应用中如何判断客户请求来自移动端访问还是PC端访问 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2024-05-02 10:26:49     消息  查看  搜索  好友  邮件  复制  引用

在web开发做手机站的时候会遇到这个问题,就是如果判断用户的请求是来自手机端还是pc端
我的实现思路是创建一个拦截器,对首页的url进行拦截,在拦截的过程中获取用户请求头中的User-Agent,这个是记录着用户登录设备信息的

网上有工具类,判断请求头User-Agent的工具类
//判断是否为手机浏览器
public static boolean JudgeIsMoblie(HttpServletRequest request) {
boolean isMoblie = false;
String[] mobileAgents = { "iphone", "android","ipad", "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) {
String agent=request.getHeader("User-Agent");
for (String mobileAgent : mobileAgents) {
if (agent.toLowerCase().indexOf(mobileAgent) >= 0&&agent.toLowerCase().indexOf("windows nt")<=0 &&agent.toLowerCase().indexOf("macintosh")<=0) {
isMoblie = true;
break;
}
}
}
return isMoblie;
}

写一个拦截器如果是电脑访问 放行,手机访问的话跳转到手机首页的url

注意在springMvc.xml配置文件配置拦截器的拦截路径&#160;


public class IntercepterMobile extends HandlerInterceptorAdapter{
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    
    
     super.afterCompletion(request, response, handler, ex);
    }

    
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    
  
     super.postHandle(request, response, handler, modelAndView);
        
    
    }
    
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
   boolean judgeIsMoblie = SingletonLoginUtils.JudgeIsMoblie(request);
   if(judgeIsMoblie==true){
   response.sendRedirect("/mobile/index");
   }else{
return true;
   }
  
  
  return true;
}
}

————————————————
原文链接:https://blog.csdn.net/qq_32657581/article/details/71405838


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->Java常用类(下)
  JavaWeb开发-->Web运作原理(Ⅱ)
  JSP与Hibernate开发-->数据库事务的并发问题的解决方案
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->Vue Router路由管理器
  Vue3开发-->绑定CSS样式
  Cookie的各种属性
  HTTP请求方式:GET 对比 POST
  HTTP的状态代码的含义
  JSP 自定义标签
  JSP 生命周期
  Servlet 发送电子邮件
  Json格式实现数据传输
  海量数据如何分页
  JSP中对异常的处理
  如何用Servlet动态生成验证码
  Servlet的非阻塞I/O处理方式
  mysql ON DUPLICATE KEY UPDATE 引起自增ID变化的解决办法
  孙卫琴的JavaWeb视频教程的源代码下载
  Servlet–Listener、Filter、Decorator之用法详解(转移自: 《...
  Java Servlet完全教程
  更多...
 IPIP: 已设置保密
树形列表:   
[url=https://dgbaccarat.or... kericnnoe 2024-05-02 10:26:49
《探索视觉创意:创意专业人士的摄影社交圈》是一个充满... mikhop 2024-05-02 10:26:49
1页 2条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。