?? statfilter.java
字號:
package myitem.renshu;
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import javax.servlet.http.HttpSession;
import java.util.StringTokenizer;
public class StatFilter
implements Filter {
public StatFilter() {
}
public void init(FilterConfig filtercfg) throws javax.servlet.
ServletException {
}
public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain filterchain) throws java.io.IOException,
javax.servlet.ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpSession session = httpRequest.getSession(true);
if (session.getAttribute("isRecorded") == null) {
//如果本次用戶訪問還沒有記錄,就記錄本次用戶信息,并保存到數據庫中
session.setAttribute("isRecorded", Boolean.TRUE);
//在session對象中保存一個變量"isRecorded",并賦值
String ip = httpRequest.getRemoteAddr();
//從請求頭中取出客戶端IP地址
String agent = httpRequest.getHeader("User-Agent");
System.out.println("HTTP-HEAD: ");
System.out.println(agent);
//從請求頭中讀取User-Agent值
StringTokenizer st = new StringTokenizer(agent, ";)");
//構造StringTokenizer對象,使用“;”“)”來分解User-Agent值
st.nextToken();
String browser = st.nextToken();
//得到用戶的瀏覽器名
String os = st.nextToken();
//得到用戶的操作系統名
if (ip == null) {
ip = "未知";
//如果讀取的IP為空,則賦值為“未知”
}
if (browser == null) {
browser = "未知";
//如果讀取的瀏覽器名為空,則賦值為“未知”
}
if (os == null) {
os = "未知";
//如果讀取的操作系統名為空,則賦值為“未知”
}
try {
StatHandle.insert(ip, os.trim(), browser.trim());
//調用業務邏輯,將用戶數據插入到數據庫中
}
catch (Exception es) {
es.printStackTrace();
//在輸入日志中打印異常信息
}
}
filterchain.doFilter(request, response);
//調用下一個過濾器或者直接調用JSP
}
public void destroy()
{
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -