?? statservlet.java
字號:
package stat;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYDataset;
public class StatServlet
extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
//Initialize global variables
public void init() throws ServletException {
}
/**
* 判斷是哪種操作
* 1,forum_delete:刪除討論區
* 2,forum_add:新增討論區
* 3,forum_update:更新討論區
* 4,forum_select:獲取討論區列表
* 5,forum_view:獲取某一個討論區詳細信息
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
String type = request.getParameter("type");
if (type == null) {
return;
}
else if (type.equalsIgnoreCase("dayStat")) { //每日訪問量統計
dayStat(request, response);
}
else if (type.equalsIgnoreCase("monthStat")) { //每月訪問量統計
monthStat(request, response);
}
else if (type.equalsIgnoreCase("hourStat")) { //每個時間段訪問量統計
hourStat(request, response);
}
else if (type.equalsIgnoreCase("browserStat")) { //客戶端瀏覽器統計
browserStat(request, response);
}
else if (type.equalsIgnoreCase("osStat")) { //客戶端操作系統統計
osStat(request, response);
}
}
/**
* 處理日流量統計
* 1,獲得要統計多少天的流量
* 2,調用StatHandle的getDayStat方法,獲取數據集
* 3,將數據集保存在session中
* 4,如果出現異常,將異常信息保存到request對象中
* 5,如果操作成功,返回line.jsp頁面
* 6,否則返回error.jsp頁面
*/
private void dayStat(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
//操作成功失敗標記
try {
isSuccess = true;
int count = Integer.parseInt(request.getParameter("dayCounts"));
//從請求頭中獲取dayCounts,該參數表示要統計多少天的流量
XYDataset data = StatHandle.getDayStat(count);
//調用StatHandle的getDayStat方法從數據庫中獲取每天的訪問次數并保存在數據集中
request.getSession().setAttribute("dataset", data);
//將數據集保存在session對象中,便于外部程序使用
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("error", es.getMessage());
//如果出現異常,將錯誤信息保存在request對象的error變量中
}
String forward = null;
if (isSuccess) {
request.removeAttribute("error");
forward = "day.jsp";
//如果操作成功,流程轉至line.jsp頁面
}
else {
forward = "error.jsp";
//如果操作失敗,流程轉至error.jsp頁面
}
forward(request, response, forward);
//轉發請求
}
private void monthStat(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
try {
isSuccess = true;
int count = Integer.parseInt(request.getParameter("monthCounts"));
DefaultCategoryDataset data = StatHandle.getMonthStat(count);
request.getSession().setAttribute("dataset", data);
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("error", es.getMessage());
}
String forward = null;
if (isSuccess) {
request.removeAttribute("error");
forward = "month.jsp";
}
else {
forward = "error.jsp";
}
forward(request, response, forward);
}
private void hourStat(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
try {
isSuccess = true;
int dayCounts = Integer.parseInt(request.getParameter("dayCounts"));
int count = Integer.parseInt(request.getParameter("count"));
DefaultCategoryDataset data = StatHandle.getHourStat(dayCounts,
count);
request.getSession().setAttribute("dataset", data);
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("error", es.getMessage());
}
String forward = null;
if (isSuccess) {
request.removeAttribute("error");
forward = "hour.jsp";
}
else {
forward = "error.jsp";
}
forward(request, response, forward);
}
private void osStat(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
try {
isSuccess = true;
DefaultPieDataset data = StatHandle.getosStat();
request.getSession().setAttribute("dataset", data);
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("error", es.getMessage());
}
String forward = null;
if (isSuccess) {
request.removeAttribute("error");
forward = "os.jsp";
}
else {
forward = "error.jsp";
}
forward(request, response, forward);
}
private void browserStat(HttpServletRequest request,
HttpServletResponse response) {
boolean isSuccess = false;
try {
isSuccess = true;
DefaultPieDataset data = StatHandle.getbrowserStat();
request.getSession().setAttribute("dataset", data);
}
catch (Exception es) {
es.printStackTrace();
isSuccess = false;
request.setAttribute("error", es.getMessage());
}
String forward = null;
if (isSuccess) {
request.removeAttribute("error");
forward = "browser.jsp";
}
else {
forward = "error.jsp";
}
forward(request, response, forward);
}
/**
* 將控制流程轉到url所表示的頁面
* @param url String 要轉到的頁面
*/
private void forward(HttpServletRequest request,
HttpServletResponse response, String url) {
try {
request.getRequestDispatcher(response.encodeURL(url)).
forward(request, response);
}
catch (Exception es) {
es.printStackTrace();
}
}
// 127.0.0.1
// /stat/statservlet
// HTTP/1.1
// 127.0.0.1
// 127.0.0.1
// /statservlet
// 127.0.0.1
// null
// null
// /stat
// type=dayStat&dayCounts=5
// http://127.0.0.1/stat/statservlet
// /stat/statservlet
public static void doGet(HttpServletRequest request) {
System.out.println(request.getMethod()); // GET
System.out.println(request.getRequestURI()); // /stat/statservlet
System.out.println(request.getProtocol()); // HTTP/1.1
System.out.println(request.getRemoteAddr()); // 127.0.0.1
System.out.println(request.getRemoteHost()); // 127.0.0.1
System.out.println(request.getServletPath()); // 127.0.0.1
System.out.println(request.getServerName()); // 127.0.0.1
System.out.println(request.getServerPort()); // 127.0.0.1
System.out.println(request.getPathInfo()); // 127.0.0.1
System.out.println(request.getPathTranslated()); // 127.0.0.1
System.out.println(request.getContextPath()); // 127.0.0.1
System.out.println(request.getQueryString()); // 127.0.0.1
System.out.println(request.getRequestURL().toString()); // 127.0.0.1
System.out.println(request.getRequestURI()); // 127.0.0.1
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = (String) headerNames.nextElement();
System.out.println(headerName + "-----" +
request.getHeader(headerName));
}
String Agent = request.getHeader("User-Agent");
StringTokenizer st = new StringTokenizer(Agent, ";");
st.nextToken();
//得到用戶的瀏覽器名
String userbrowser = st.nextToken();
//得到用戶的操作系統名
String useros = st.nextToken();
}
// accept-----*/*
// accept-language-----zh-cn
// accept-encoding-----gzip, deflate
// user-agent-----Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
// host-----127.0.0.1
// connection-----Keep-Alive
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -