判断设备是移动端还是pc端

通过JavaScript判断终端类型

1.把请求头信息转为小写  

2.user agent是指用户代理,使服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。


sUserAgent = navigator.userAgent.toLowerCase();

sUserAgent.match('ipad') == "ipad";
sUserAgent.match('ucweb') == "ucweb";
...

<!DOCTYPE html>

<html lang="en">

  <head>

    <meta charset="UTF-8" />

    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>判断是PC还是移动端浏览器</title>

  </head>

  <body></body>

</html>

<script>

  function browserRedirect() {

    var curURL = window.location.href;

    var sUserAgent = navigator.userAgent.toLowerCase();

    var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";

    var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";

    var bIsMidp = sUserAgent.match(/midp/i) == "midp";

    var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";

    var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";

    var bIsAndroid = sUserAgent.match(/android/i) == "android";

    var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";

    var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";

    if (

      bIsIpad ||

      bIsIphoneOs ||

      bIsMidp ||

      bIsUc7 ||

      bIsUc ||

      bIsAndroid ||

      bIsCE ||

      bIsWM

    ) {

      // 移动端浏览器     document.write("phone");    //移动端浏览器

      window.location.href = "https://m.jd.com/";

      // if (curURL.indexOf("jd.com") != -1) {    //     window.location.href = "https://m.jd.com/";    // }

    } else {

      // PC端浏览器

      document.write("pc");

      //  if (curURL.indexOf("jd.com") != -1) {        // window.location.href = "https://www.jd.com/";    //}

    }

  }

  browserRedirect();

</script>

<think>好的,用户想在Spring Boot中区分请求是来自移动端还是PC。我需要回忆一下相关的解决方案。记得Spring Mobile库可以处理设备检测,之前配置过设备视图解析器。用户可能没有提到这个库,所以需要先介绍一下添加依赖的步骤。然后需要配置DeviceDelegatingViewResolver,根据设备类型调整视图路径。可能还需要检查User-Agent来判断设备类型。另外,有些情况下可能需要自定义检测逻辑,比如通过请求头中的User-Agent字符串。记得引用中提到了application.properties的配置,应该结合这些配置来说明如何启用设置前后缀。还需要考虑不同设备的前缀设置是否正确,比如移动端tablet分开处理。最后可能需要一个示例代码来展示如何获取设备信息并返回不同的视图。要确保步骤清晰,从添加依赖到配置再到使用,同时提醒用户可能需要注意的常见问题,比如User-Agent的可靠性以及测试方法。另外,用户可能需要生成相关问题,比如性能优化或自定义检测,这些也需要提前准备。确保回答中的引用正确,如提到的配置文件属性对应引用[1][3]。需要检查是否有遗漏的步骤或配置项,确保用户能顺利实现功能。</think>在Spring Boot中检测请求来自移动端还是PC,可以通过**设备检测库**或**请求头分析**实现。以下是具体实现方法: --- ### **方法一:使用Spring Mobile库** 1. **添加依赖** 在`pom.xml`中引入Spring Mobile依赖: ```xml <dependency> <groupId>org.springframework.mobile</groupId> <artifactId>spring-mobile-device</artifactId> <version>1.1.5.RELEASE</version> </dependency> ``` 2. **配置设备视图解析器** 在`application.properties`中启用设备检测并配置视图前缀/后缀: ```properties spring.mobile.devicedelegatingviewresolver.enabled=true spring.mobile.devicedelegatingviewresolver.mobile-prefix=mobile/ spring.mobile.devicedelegatingviewresolver.tablet-prefix=tablet/ spring.mobile.devicedelegatingviewresolver.normal-prefix=pc/ ``` 这会根据设备类型自动定位到`mobile/`、`tablet/`或`pc/`目录下的视图[^1][^3]。 3. **在Controller中获取设备信息** ```java @Controller public class DeviceController { @GetMapping("/home") public String home(Device device) { if (device.isMobile()) { return "mobile/home"; // 移动端视图 } else if (device.isTablet()) { return "tablet/home"; // 平板视图 } else { return "pc/home"; // PC视图 } } } ``` --- ### **方法二:手动解析User-Agent** 1. **从请求头中获取User-Agent** ```java @GetMapping("/detect") public String detectDevice(HttpServletRequest request) { String userAgent = request.getHeader("User-Agent"); if (userAgent.contains("Mobile")) { return "mobile"; } else { return "pc"; } } ``` 2. **正则表达式匹配(示例)** ```java private boolean isMobile(String userAgent) { return userAgent.matches(".*(Android|iPhone|iPad|iPod|BlackBerry|Windows Phone).*"); } ``` --- ### **注意事项** 1. **User-Agent的局限性** 部分设备可能伪造User-Agent,需结合其他参数(如屏幕尺寸)提高准确性。 2. **响应式设计替代方案** 对于简单场景,推荐使用前端响应式布局替代后检测。 3. **测试方法** 使用浏览器开发者工具切换设备模式(如Chrome的Device Toolbar)模拟不同设备。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值