java后台如何判断是移动端还是pc端的访问请求
主要是根据 HttpServletRequest request 中的请求头所带的参数 user-agent来获取:
String userAgent = request.getHeader("user-agent");
if (userAgent.indexOf("Android") != -1) {
// 安卓
String defaultFailureUrl = "/login_moblie.jsp";
System.out.println("Android访问!!!" + "没有登录,返回的页面===" +defaultFailureUrl);
......
} else if (userAgent.indexOf("iPhone") != -1 || userAgent.indexOf("iPad") != -1) {
// 苹果
String defaultFailureUrl = "/login_moblie.jsp";
System.out.println("iPhone/iPad访问!!!"+ "没有登录,返回的页面==="+ defaultFailureUrl);
......
} else { // 电脑
String defaultFailureUrl = "/login.jsp";
System.out.println("电脑访问!!!"+ "没有登录,返回的页面===" + defaultFailureUrl);
......//逻辑处理
}
对判断后添加自己的逻辑处理。
下面是不同的访问打印的结果:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36
电脑访问!!!没有登录,返回的页面===/login.jsp
//安卓端
Mozilla/5.0 (Linux; Android 6.0; MZ-M5 Note Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.94 Mobile Safari/537.36
Android访问!!!没有登录,返回的页面===/login_moblie.jsp
//苹果端
Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53
iPhone/iPad访问!!!没有登录,返回的页面===s/login_moblie.jsp
//安卓
Mozilla/5.0 (Linux; Android 6.0; DIG-AL00 Build/HUAWEIDIG-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043305 Safari/537.36 MicroMessenger/6.5.10.1080 NetType/WIFI Language/zh_CN
Android访问!!!没有登录,返回的页面===/login_moblie.jsp