1. 程式人生 > >java後臺中判斷PC端/手機web端訪問,並返回相應頁面

java後臺中判斷PC端/手機web端訪問,並返回相應頁面

      這個程式碼其實不是由我本人發現的,而是在翻看公司專案時無意間發現,覺得很實用所以拿出來大家分享。

框架:Struts2+spring+ibatis,

   主要實現是依靠Http請求頭Header中的 "User-Agent" 來完成,好了, 廢話不多說直接上程式碼。

Action中:

public String execute() {
		HttpServletRequest request = ServletActionContext.getRequest();
		boolean isMoblie = JudgeIsMoblie(request);
		if(isMoblie){
			return "phone";
		}
		return "pc";
	}
	
	public boolean JudgeIsMoblie(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) {
				<span class="comment" style="margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; line-height: 18px;">//這裡本寶寶表示不怎麼了解它的內部原理,但是知道個大概意思就得了。</span>
				if (request.getHeader("User-Agent").toLowerCase()
						.indexOf(mobileAgent) >= 0) {
					isMoblie = true;
					break;
				}
			}
		}
		return isMoblie;
	}


Struts2

<span style="white-space:pre">		</span><action name="name" class="你自己的action類">
			<result name="pc">download/main.jsp</result>
			<result name="phone">download/productPH.jsp</result>
		</action>
好了,程式碼就只是這麼多,木有了木有了。。。  是不是感覺很簡單的說,


雖然不是我寫出來的,但是看到這個程式碼,也是有一種收穫的,其實很多設定都是包含在請求頭中的,因為不管是什麼瀏覽器什麼裝置,它要通過http去呼叫一個請求,那麼它就必定是有http協議,只要精通http協議,那麼啥事都好辦(表示本屌目前不懂http協議,而後努力學習學習,再來裝逼

)~~