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过 ...
 
随机推荐
- UIView设置背景渐变色
			
UIView设置背景渐变色 // Allocate bitmap context CGContextRef bitmapContext = CGBitmapContextCreate(NULL, , ...
 - BZOJ 1296 粉刷匠
			
Description windy有\(N\)条木板需要被粉刷.每条木板被分为\(M\)个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. ...
 - [BZOJ 1875] [SDOI 2009] HH去散步【矩阵乘法】
			
题目链接:BZOJ - 1875 题目分析: 这道题如果去掉“不会立刻沿着刚刚走来的路走回”的限制,直接用邻接矩阵跑矩阵乘法就可以了.然而现在加了这个限制,建图的方式就要做一些改变.如果我们把每一条边 ...
 - I2C的主机从机模拟
			
好久没有在csdn上面做笔记了,主要是最近琐碎的事情太多,乱七八糟的事情让自己不能坚定下来做自己喜欢做的事情.上了星期花了两天的时间模拟了I2C的主机和从机通信.一般都是主机模拟,从机直接用硬件I2C ...
 - Maven实战七
			
转载:http://www.iteye.com/topic/973166 前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必 ...
 - JVM中内存回收深入分析,各种垃圾收集器
			
JVM启动有两种模式,client和server 一般JVM启动时会根据主机情况分析选择采用那种模式启动 可发现是server模式 JVM中尤其需要关注的就是HEAP堆区 堆区分为新生代和老年代 新生 ...
 - 基于Node.js的强大爬虫 能直接发布抓取的文章哦
			
基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什 ...
 - Balance(01背包)
			
Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 9163 Accepted: 5617 Description Gigel ...
 - 更改Visual Studio 2010/2012/2008的主题设置
			
一.更改主题: 主题网站:http://studiostyl.es/ Visual Studio 2010发布也已经有一段时间了,不过安装后默认的白底的主题长时间看代码可能会感觉眼睛酸痛,况且时间长了 ...
 - UVa1658 Admiral(拆点法+最小费用流)
			
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51253 [思路] 固定流量的最小费用流. 拆点,将u拆分成u1和u ...