一淮椰、判斷UA跳轉(zhuǎn)頁面
UserAgent(UA)
UserAgent是指瀏覽器,它的信息包括硬件平臺蔫磨、系統(tǒng)軟件淘讥、應(yīng)用軟件和用戶個人偏好,通過UA可以分析出瀏覽器名稱堤如、瀏覽器版本號蒲列、渲染引擎窒朋、操作系統(tǒng)。知識擴(kuò)展:
為什么所有主要瀏覽器的 User-Agent 都是 Mozilla/x.0 開頭蝗岖?
【果言科技】 Netscape :曾經(jīng)的瀏覽器霸主侥猩,是如何衰落的?區(qū)分:
一層:區(qū)分PC端 Or 移動端
二層:PC端下區(qū)分IE抵赢、Chrome欺劳、Firefox... || 移動端下區(qū)分Android、IOS...
——方法
用到j(luò)ava.util.regex包下兩個重要的類Pattern和Matcher
- Pattern:一個Pattern是一個正則表達(dá)式編譯后的表現(xiàn)模式瓣俯。
- Matcher:一個Matcher對象是一個狀態(tài)機(jī)器杰标,它依據(jù)Pattern對象作為匹配模式對字符串進(jìn)行匹配檢查。
參考:Java正則表達(dá)式Pattern和Matcher
——實(shí)例代碼(判斷Android還是iphone彩匕,都false的時候是PC)
<%@page import="java.util.regex.Matcher"%>
<%@page import="java.util.regex.Pattern"%>
<%@ page language="java" pageEncoding="UTF-8"%>
<%! //加腔剂!表示java聲明
//匹配字符串
String androidReg = "\\bandroid|Nexus\\b";
String iosReg = "ip(hone|od|ad)";
//由 CASE_INSENSITIVE標(biāo)志啟用時,不區(qū)分大小寫的匹配將以符合 Unicode Standard 的方式完成
Pattern androidPat = Pattern.compile(androidReg, Pattern.CASE_INSENSITIVE);
Pattern iosPat = Pattern.compile(iosReg, Pattern.CASE_INSENSITIVE);
public boolean likeAndroid(String userAgent) {
if(null == userAgent) {
userAgent = "";
}
//匹配
Matcher matcherAndroid = androidPat.matcher(userAgent);
if(matcherAndroid.find()){
return true;
} else {
return false;
}
}
public boolean likeIOS(String userAgent){
if(null == userAgent){
userAgent = "";
}
//匹配
Matcher matcherIOS = iosPat.matcher(userAgent);
if(matcherIOS.find()){
return true;
} else {
return false;
}
}
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String userAgent = request.getHeader("USER-AGENT").toLowerCase();
System.out.println("userAgent: "+userAgent);
if(null == userAgent){
userAgent = "";
}
if(likeAndroid(userAgent)){
System.out.println("likeAndroid: "+true);
//安卓跳百度
response.sendRedirect("https://www.baidu.com");
return;
} else if(likeIOS(userAgent)){
System.out.println("likeIOS: "+true);
//IOS跳谷歌中文
response.sendRedirect("https://www.google.com/?hl=zh_cn");
return;
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>判斷UA跳轉(zhuǎn)</title>
</head>
<body>
<div class="wrap">
//PC下顯示這個
<h1>這是一個判斷UA跳轉(zhuǎn)的頁面</h1>
</div>
</body>
</html>
二驼仪、Java數(shù)據(jù)庫連接
Java Database Connectivity掸犬,簡稱JDBC
易出錯點(diǎn)
- 下載 mysql-connector-java-5.1.39-bin.jar 拷貝到 tomcat 下 lib 目錄
- 下載jakarta-taglibs-standard-1.1.2.zip 包并解壓,將jakarta-taglibs-standard-1.1.2/lib/下的兩個jar文件:standard.jar和jstl.jar文件拷貝到/WEB-INF/lib/下
官方下載地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/ - 在web.xml添加以下配置(該文件在/WEB-INF/下)
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/fmt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/c-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
<taglib-location>/WEB-INF/sql.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
<taglib-location>/WEB-INF/x.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
<taglib-location>/WEB-INF/x-rt.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>