Spring客户端设备检测识别
来源:互联网 发布:arma预测模型 软件 编辑:程序博客网 时间:2024/06/05 16:49
参考官方:http://spring.io/guides/gs/device-detection/
本教程将引导你如何在客户端发起请求后使用spring来检测识别不同的设备(NORMAL(非手机平板设备)、MOBILE(手机设备)、TABLET(平板设备))
本教程将实现如下功能
构建一个Spring MVC应用程序,在调用controll时可以识别出不同的设备,然后在客户端中显示不同的内容。
如果要实现该功能,需要什么
大概要花费15分钟
一个最喜欢的文本编辑器或IDE
JDK 1.8或以后
Gradle 2.3 +或Maven 3 +
你也可以使用Spring Tool Suite (STS)直接import该工程
实现方式
如同所有的Spring入门教程,你可以选择一步一步的自己实现,也可以跳过基本的设置步骤。最终,你都将得到一份可以正常运行的代码。
如果选择按步实现,继续下一节。
如果选择跳过基本的安装部分,则执行以下命令从github获取代码:
git clone https://github.com/spring-guides/gs-device-detection.git
切换当前目录到gs-device-detection/initial
,跳到Auto-configuration步骤。
完成后,可以与gs-device-detection/complete
中的代码对比一下,确保正确。
用maven来构建
如果不熟悉maven,请参考Building Java Projects with Maven
建立目录结构
在你选定的工程目录下,建立如下子目录结构;例如,在*nix系统中使用mkdir -p src/main/java/hello命令:
└── src
└── main
└── java
└── hello pom.xml
如下:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifactId>gs-device-detection</artifactId> <version>0.1.0</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.mobile</groupId> <artifactId>spring-mobile-device</artifactId> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-releases</id> <name>Spring Milestone Repository</name> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-releases</id> <name>Spring Milestone Repository</name> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories></project>
注意:本文使用了Spring Boot。
自动配置
依赖Spring mobile,Spring boot自动配置deviceresolverhandlerinterceptor和devicehandlermethodargumentresolver。deviceresolverhandlerinterceptor通过header的user-agent确定该请求是否来自非手机平板(电脑)的浏览器,移动(手机)的浏览器,或者平板电脑的浏览器。devicehandlermethodargumentresolver可以在Spring MVC的控制器方法中判断设备的类型。
创建一个web控制器
src/main/java/hello/DeviceDetectionController.java
package hello;import org.springframework.mobile.device.Device;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class DeviceDetectionController { @RequestMapping("/detect-device") public @ResponseBody String detectDevice(Device device){ String deviceType = "不清楚请求来自什么设备"; if(device.isNormal()){ deviceType = "是电脑浏览器发来的请求"; }else if(device.isMobile()){ deviceType = "是手机浏览器发来的请求"; }else if(device.isTablet()){ deviceType = "是平板浏览器发来的请求"; } return deviceType; }}
在这个例子中,不是依靠一个视图(如JSP)来呈现HTML模型数据,该控制器的返回数据被直接写入到响应主体。在这种情况下,数据是一个字符串,上面写着“是*浏览器发来的请求!”如果发出请求的客户端是一款移动设备。这个“responsebody注释告诉Spring MVC返回对象到响应主体,而不是去通过一个模型渲染到视图。
走一个(运行应用)
src/main/java/hello/Application.java
package hello;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); }}
直接运行main
方法
或者使用 mvn spring-boot:run
运行
然后到不同的设备中通过浏览器访问:http://IP:8080/detect-device.
(注意要把IP改成你的)
我的测试结果如下:
电脑:
手机:
平板:
搞定收工……
- Spring客户端设备检测识别
- Spring之检测设备类型
- eclipse DDMS 检测不到设备 但是adb devices可以识别到设备
- 设备检测
- 能够检测多种设备类型的Spring Mobile
- 客户端检测
- 客户端检测
- 客户端检测
- 客户端检测
- 客户端检测
- 客户端检测
- 客户端检测
- 客户端检测
- JS笔记:检测客户端(引擎、浏览器、平台、操作系统、移动设备)
- 手势识别-----检测拳头
- 工业检测、车牌识别
- 检测与识别
- 语音识别-关键词检测
- maven 热部署项目
- SpringMVC拦截器
- 构建可枚举类型(IEnumerable和IEnumerator接口)
- 20160308
- libuv和libev的区别
- Spring客户端设备检测识别
- JS判断客户端是手机还是PC的2个代码
- 大学毕业需要注意的事项
- Visio画UML用例图没有include关系的解决方法
- Python3.5.1与pyopengl3.1.0环境配置
- 快速排序(Quick Sort)
- <iframe width='738' height='523' class='preview-iframe' scrolling='no' frameborder='0' src='http://d
- 简单线程的实现
- 字符串中查找删除