Detecting a Device
目标:
创建一个可以检测出访问你的站点的设备类型的MVC应用
以便动态的切换适配于设备的视图
自动配置
- DeviceResolverHandlerInterceptor:
自动解析请求头中的“User-Agent“,来判断请求来自以下三种设备之一
1、普通浏览器
2、手机浏览器
3、平板浏览器
- DeviceHandlerMethodArgumentResolver:
允许Spring MVC 使用解析出来的Device对象传递到Controller的方法中。
创建一个Controller
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;
@Controller
public class DeviceDetectionController {
@RequestMapping("/detect-device")
public @ResponseBody String detectDevice(Device device) {
String deviceType = "unknown";
if (device.isNormal()) {
deviceType = "normal";
} else if (device.isMobile()) {
deviceType = "mobile";
} else if (device.isTablet()) {
deviceType = "tablet";
}
return "Hello " + deviceType + " browser!";
}
}
@ResponseBody注解告诉Spring MVC把返回的Object直接写到
Response body(响应体),而不是渲染model到一个视图中。
运行Application
package hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
测试:
通过PC端浏览器访问http://localhost:8080/detect-device返回以下信息:
Hello normal browser!