通过检测HTTP请求时CGI环境变量,可以获取客户端浏览器请求的一些环境信息
通过调用下面程序中的outputAllCGI方法,可以在控制台输出部分CGI环境变量。
其中包含一个User-Agent变量,包含了请求的操作系统信息,浏览器信息及版本等内容
通过对这些信息的分析,判断请求的客户端是否为手机客户端,自动返回相应的页面
 
public class UserAgentsUtil {private static String[] phoneBrowersKey = new String[]{"user-agent","noki","eric","wapi","nc21","aur","r380","up.b","winw","upg1","upsi","qwap","jigs","java","alca","nits","not-","my s","wapj","fetc","alav","wapa","ucweb","blackberry","j2me","android","oper","dopod","symbian","iphone","android","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","techfaith","palmsource","alcatel","amoi","ktouch","nexian","ericsson","philips","sagem","wellcom","bunjalloo","maui","smartphone","iemobile","bird","zte-","longcos","pantech","gionee","portalmmm","jig browser","hiptop","benq","haier","^lct","mqqbrowser","320x320","240x320","176x220"};private static String phoneBrowerUrl = "wap/index.jsp";private static String computerBrowerUrl = "web/index.jsp";public static void redirectByUserAgents(HttpServletRequest request, HttpServletResponse response) throws IOException {String userAgent=request.getHeader("user-agent");if (userAgent == null) {return ;}userAgent = userAgent.toLowerCase();for (int i=0; i<phoneBrowersKey.length; i++) {if (userAgent.indexOf(phoneBrowersKey[i]) != -1) {response.sendRedirect(phoneBrowerUrl);return;}}response.sendRedirect(computerBrowerUrl);}public static void outputAllCGI(HttpServletRequest request, HttpServletResponse response, HttpServlet servlet) {String strEnvs[][] = {{ "CONTENT_LENGTH ",String.valueOf(request.getContentLength()) },{ "CONTENT_TYPE ", request.getContentType() },{ "SERVER_PROTOCOL ", request.getProtocol() },{ "SERVER_SOFTWARE ", servlet.getServletContext().getServerInfo() },{ "REMOTE_ADDR ", request.getRemoteAddr() },{ "REMOTE_HOST ", request.getRemoteHost() },{ "REMOTE_USER ", request.getRemoteUser() },{ "SERVER_NAME ", request.getServerName() },{ "SERVER_PORT ", String.valueOf(request.getServerPort()) },{ "AUTH_TYPE ", request.getAuthType() },{ "REQUEST_METHOD ", request.getMethod() },{ "PATH_INFO ", request.getPathInfo() },{ "PATH_TRANSLATED ", request.getPathTranslated() },{ "QUERY_STRING ", request.getQueryString() },{ "REQUEST_URI ", request.getRequestURI() },{ "SCRIPT_NAME ", request.getServletPath() },{ "DOCUMENT_ROOT ", servlet.getServletContext().getRealPath("/ ") } };Enumeration enumNames = request.getHeaderNames();while (enumNames.hasMoreElements()) {String strName = (String) enumNames.nextElement();String strValue = request.getHeader(strName);System.out.println(strName + " : " + strValue);}for (int i=0; i<strEnvs.length; i++) {System.out.println(strEnvs[i][0] + " : " + strEnvs[i][1]);}}
}

转载于:https://www.cnblogs.com/S-E-P/archive/2012/03/13/2394115.html

web应用自动检测客户端浏览器,并转跳到不同页面相关推荐

  1. php浏览器类型检测工具,php检测客户端浏览器类型的简单示例

    这篇文章主要为大家详细介绍了php检测客户端浏览器类型的简单示例,具有一定的参考价值,可以用来参考一下. 对php检测客户端浏览器类型代码感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...

  2. 检测IE浏览器类型并跳转至谷歌浏览器打开网页

    一.检测是否是IE浏览器,然后展现跳转或下载页面 不使用userAgent的原因:可被修改,没有检测ActiveX特性坚定 if (!!window.ActiveXObject || "Ac ...

  3. Python自动检测Chrome浏览器版本号并下载对应驱动文件[chromedriver.exe]

    说明 实现原理是当使用的chromedriver.exe与当前Chrome浏览器版本不一致时会抛出异常,在异常信息中会包含当前Chrome版本信息和Chrome浏览器安装地址信息,通过捕获异常信息,正 ...

  4. 外部浏览器唤醒APP跳转指定页面,点击返回到APP首页

    需求: 分享内容页面中有一个按钮,点击跳转到APP中的指定的某个页面,例如分享了一个文章页面,点击按钮跳转到APP的文章详情页面 页面跳转逻辑分析: 情景1:用户未安装APP,点击跳转直接跳转下载链接 ...

  5. android webview卡顿检测_Android webview隐藏后跳转新页面input输入卡顿与白屏渲染慢的问题说明及修复方案...

    关于此问题的说明: Android System WebView 内核的bug:当webview页面中存在持续渲染(如跑马灯效果.banner轮播等).页面被隐藏后会导致JS阻塞影响页面渲染效率.从6 ...

  6. 设置代理_ie浏览器一键取消自动检测设置并设置代理

    ie浏览器[设置]--[internet选项]--[连接]--[局域网设置] [自动设置]--默认这个[自动检测设置]是打勾的, 这可害了不少使用代理上网的人. 这个自动检测设置检测得并不准确,该走代 ...

  7. 识别wap和web客户端浏览器

    asp代码 <% '+--------------------------------------------------------+ '| 识别WAP或WEB客户端浏览器 (asp版本) ' ...

  8. oracle home 自动检测,64位Oracle客户端上PLSQL无法识别ORACLE_HOME解决方案

    PLSQL到目前为止只有32位的程序,而大多数的桌面系统基本都是使用64位的Windows操作系统,在64位的Windows上,大多数情况下也是安 1.问题 PLSQL到目前为止只有32位的程序,而大 ...

  9. Web笔记-通过版本号控制客户端浏览器中的缓存

    这里举个例子: 通过Python管理静态资源.但有时候,js或者css更新了,浏览器不知道,还使用缓存的情况. 如下所示: 通过在url中带个?这种方式,使得浏览器去获取新的资源 看下根请求下相关链接 ...

最新文章

  1. torch yolov3 minibatch 失败
  2. 【django】 F 和 Q 对象
  3. sql 除以_使用SQL分析游戏运营情况
  4. mysql 1449 : The user specified as a definer ('root'@'%') does not exist 解决方法
  5. mysql实习报告总结_MySQL上机实习报告(一)
  6. C++学习笔记(1)-文件写入
  7. 复旦邱锡鹏组最新综述:A Survey of Transformers!
  8. Java添加水印+图片水印+文字水印
  9. Axure 安装教程
  10. 27.【小学五年级】确定母亲节
  11. 丘成桐女子中学生数学竞赛结果出炉,人大附中拿下金奖,上海4人入围
  12. [渝粤教育] 中国科学技术大学 化学实验安全知识 参考 资料
  13. 康定游记-宝宝征服4300米海拔折多山
  14. Windows 10发布日期提速,将于7月29日上市
  15. 蓝牙耳机哪款性价比高?2023年高性价比蓝牙耳机盘点
  16. [重庆思庄每日技术分享]-oracle11g到ORACLE 816的dblink访问报 ORA-03150错误
  17. 一搜◎欢乐搜索 变相滋生垃圾邮件与病毒
  18. 怎样清除打开方式中的无用项目
  19. 手机闪存速度排行_什么是手机闪存?怎么测试手机闪存速度? 详细始末
  20. 谷粒学院(十五)JWT | 阿里云短信服务 | 登录与注册前后端实现

热门文章

  1. linux系统编程心得体会范文大全,编程心得体会范文
  2. 这样提案,设计比较容易落地
  3. nova4e升级鸿蒙,华为nova4e手机升级更新EMUI10系统感觉比9.1版本的卡顿
  4. python的match对象
  5. 数字英文唯一_day day up和天天向上不近似?英文商标怎样判断近似
  6. 2008年最龌龊语录100句
  7. 重磅! 感恩回馈,程序员的专属年礼来啦!
  8. 北京应用物理计算机与科学,北京应用物理与计算数学研究所
  9. Unity UIToolkit
  10. 一个既能1对1视频聊又能一对多直播的APP--布谷鸟直播源码开发