Filter过滤器实现同一地址手机和电脑页面不同

- String[] mobileAgents = { “iphone”, “android”, “phone”, “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”, “webos”, “techfaith”,
- “palmsource”, “alcatel”, “amoi”, “ktouch”, “nexian”,
- “ericsson”, “philips”, “sagem”, “wellcom”, “bunjalloo”, “maui”,
- “smartphone”, “iemobile”, “spice”, “bird”, “zte-“, “longcos”,
- “pantech”, “gionee”, “portalmmm”, “jig browser”, “hiptop”,
- “benq”, “haier”, “^lct”, “320×320”, “240×320”, “176×220”,
- “w3c “, “acs-“, “alav”, “alca”, “amoi”, “audi”, “avan”, “benq”,
- “bird”, “blac”, “blaz”, “brew”, “cell”, “cldc”, “cmd-“, “dang”,
- “doco”, “eric”, “hipt”, “inno”, “ipaq”, “java”, “jigs”, “kddi”,
- “keji”, “leno”, “lg-c”, “lg-d”, “lg-g”, “lge-“, “maui”, “maxo”,
- “midp”, “mits”, “mmef”, “mobi”, “mot-“, “moto”, “mwbp”, “nec-“,
- “newt”, “noki”, “oper”, “palm”, “pana”, “pant”, “phil”, “play”,
- “port”, “prox”, “qwap”, “sage”, “sams”, “sany”, “sch-“, “sec-“,
- “send”, “seri”, “sgh-“, “shar”, “sie-“, “siem”, “smal”, “smar”,
- “sony”, “sph-“, “symb”, “t-mo”, “teli”, “tim-“, “tosh”, “tsm-“,
- “upg1”, “upsi”, “vk-v”, “voda”, “wap-“, “wapa”, “wapi”, “wapp”,
- “wapr”, “webc”, “winw”, “winw”, “xda”, “xda-“,
- “Googlebot-Mobile” };
- /**
- * 判断是否是手机访问
- *
- * @param request
- * @return
- */
- public boolean isMoblie(HttpServletRequest request) {
- boolean isMoblie = false;
- String[] mobileAgents = { "iphone", "android", "phone", "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", "webos", "techfaith",
- "palmsource", "alcatel", "amoi", "ktouch", "nexian",
- "ericsson", "philips", "sagem", "wellcom", "bunjalloo", "maui",
- "smartphone", "iemobile", "spice", "bird", "zte-", "longcos",
- "pantech", "gionee", "portalmmm", "jig browser", "hiptop",
- "benq", "haier", "^lct", "320x320", "240x320", "176x220",
- "w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq",
- "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang",
- "doco", "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi",
- "keji", "leno", "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo",
- "midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-",
- "newt", "noki", "oper", "palm", "pana", "pant", "phil", "play",
- "port", "prox", "qwap", "sage", "sams", "sany", "sch-", "sec-",
- "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar",
- "sony", "sph-", "symb", "t-mo", "teli", "tim-", "tosh", "tsm-",
- "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp",
- "wapr", "webc", "winw", "winw", "xda", "xda-",
- "Googlebot-Mobile" };
- if (request.getHeader("User-Agent") != null) {
- for (String mobileAgent : mobileAgents) {
- if (request.getHeader("User-Agent").toLowerCase()
- .indexOf(mobileAgent) >= 0) {
- isMoblie = true;
- break;
- }
- }
- }
- return isMoblie;
- }
- public class WapFilter implements Filter {
- @Override
- public void doFilter(ServletRequest request, ServletResponse response,
- FilterChain chain) throws IOException, ServletException {
- response.setContentType("text/html;charset=utf-8");
- HttpServletRequest httpRequest = (HttpServletRequest) request;
- String uri = httpRequest.getRequestURI();
- if (isMoblie(httpRequest)) {
- httpRequest.getRequestDispatcher("/wap" + uri).forward(request,
- response);
- } else {
- chain.doFilter(request, response);// 电脑放行
- }
- }
- //省略其他代码……
- }
- <filter>
- <filter-name>wapfilter</filter-name>
- <filter-class>cn.dtblog.filter.WapFilter</filter-class>
- </filter><filter-mapping>
- <filter-name>wapfilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
电脑地址 | 拼接wap后的手机网址 |
/index.jsp | /wap/index.jsp |
/about.jsp | /wap/about.jsp |
原文由博主 乐智 编辑撰写,版权归博主所有。
原文地址 http://www.dtblog.cn/1105.html 转载请注明出处!
Filter过滤器实现同一地址手机和电脑页面不同的更多相关文章
- 用sublime server 启动本地服务器(手机访问电脑页面)
安装sublime server 插件包 1.Ctrl + shift + p install package ...
- SpringBoot+Shiro学习(七):Filter过滤器管理
SpringBoot+Shiro学习(七):Filter过滤器管理 Hiwayz 关注 0.5 2018.09.06 19:09* 字数 1070 阅读 5922评论 1喜欢 20 先从我们写的一个 ...
- Filter(过滤器)学习
一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...
- 安卓手机与电脑无线传输文件(利用ftp服务)
安卓手机与电脑无线传输文件(利用ftp服务) 手机与电脑无线传输文件,手机开启ftp服务,电脑能够对手机内全部文件进行全方位管理,包括上传.下载.新建.删除等,而且手机和电脑能够双向传输,很方便.手机 ...
- WIFI环境下Android手机和电脑通信
前面已经写过一篇java实现最基础的socket网络通信,这篇和之前那篇大同小异,只是将客户端代码移植到手机中,然后获取本机IP的方法略有不同. 先讲一下本篇中用到Android studio的使用吧 ...
- 手机访问电脑wampServer本地环境页面
1. 电脑需要安装好wamp,我这里用的2.0版本,下载地址 http://pan.baidu.com/s/1jG31hbS 2. 电脑需要有个wifi,我用的360wifi 3. 启动 ...
- JavaWeb(五)Filter过滤器
Filter过滤器 Fileter介绍 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Serv ...
- SpringBoot使用Filter过滤器处理是否登录的过滤时,用response.sendRedirect()转发报错
1.使用response.sendRedirect("/login")时报错,控制台报错如下: Cannot call sendError() after the response ...
- java使用Filter过滤器对Response返回值进行修改
转:java使用Filter过滤器对Response返回值进行修改 练习时只做了对request 的处理,这里记录一下,filter 对 response的处理. 原文地址:java使用Filter过 ...
随机推荐
- Day12(补充) Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- EJB
Enterprise JavaBean,企业级javabean,是J2EE的一部分,定义了一个用于 开发基于组件的企业多重应用程序的标准.其特点包括网络服务支持和核心开发工具(SDK). 是Jav ...
- 关于org.openqa.selenium.ElementNotVisibleException
最近在使用Selenium,编写最简单的百度search脚本,结果使用name来定位元素抛出了如下exception: 在定位百度的输入框,使用By.name()定位失败,但是使用By.id()和By ...
- map和lambda
同事问我python里,比如一个列表: a = ['1', '2', '3'] 如何变成: b = ['1x', '2x', '3x'] 好吧,果断不知道-原来pthon中有map函数,查看帮助文档: ...
- 关于MYSQL优化(持续更新)
*利用MYSQL数据缓存提高效率,注意事项: 1.应用环境:不经常改变的表及对此表相同的查询 2.不适用于服务器端编写的语句 3.根据数据使用频率,合理分解表 4.合理使用默认条件,提高命中率 5.统 ...
- linux中bin和xbin下可执行程序的区别
/bin下的都是Linux最基础的,所有用户都可以使用的外部命令 /sbin下的都是只有超级用户root才能使用的.管理Linux系统的外部命令 /usr/bin以及/usr/local/bin下的都 ...
- [转]加盐hash保存密码的正确方式
0x00 背景 大多数的web开发者都会遇到设计用户账号系统的需求.账号系统最重要的一个方面就是如何保护用户的密码.一些大公司的用户数据库泄露事件也时有发生,所以我们必须采取一些措施来保护用户的密码, ...
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条
Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Ap ...
- Transformation
hdu4578:http://acm.hdu.edu.cn/showproblem.php?pid=4578 题意:给一个序列 {an},有 4 种操作.1.将一段区间的数全部加 c.2.将一段区间的 ...
- codeforces C. Prime Swaps
题意:给你n个数,然后在交换次数小于等于5×n的情况下使得这个序列变成升序,输出次数; 思路:哥德巴赫猜想:任何一个大于5的数都可以写成三个质数之和.尽可能的找大的素数,从1的位置向右逐步的调整,每一 ...