Spring+Mysql+C3P0 統(tǒng)計網(wǎng)站的訪問量,比如PV(頁面瀏覽量),UV(獨立訪客數(shù)),將統(tǒng)計結(jié)果保存到MYSQL數(shù)據(jù)庫中。 一個javaee利用mvc模式開發(fā)的實例,功能強力,利用面廣,每一個初期開發(fā)者不可少的利用工具。
代碼簡介:
CounterServlet.java
package org.sunxin.ch02.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CounterServlet extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
{
ServletContext context = getServletContext();
Integer count = null;
synchronized(context)
{
count = (Integer) context.getAttribute("counter");
if (null == count)
{
count = new Integer(1);
}
else
{
count = new Integer(count.intValue() + 1);
}
context.setAttribute("counter", count);
}
resp.setContentType("text/html;charset=gb2312");
PrintWriter out = resp.getWriter();
out.println("");
out.println("");
out.println("");
out.println("該頁面已被訪問了" + "" + count + "" + "次");
out.println(" ");
out.close();
}
}
在程序代碼的第17行,調(diào)用getServletContext()方法(從GenericServlet類間接繼承而來)得到Web應(yīng)用程序的上下文對象。為了避免線程安全的問題,我們在第19行使用synchronized關(guān)鍵字對context對象進行同步。第21行,調(diào)用上下文對象的getAttribute()方法獲取counter屬性的值。第21~29行,判斷count是否為null,如果為null,則將它的初始值設(shè)為1。當這個Servlet第一次被訪問的時候,在上下文對象中還沒有保存counter屬性,所以獲取該屬性的值將返回null。如果count不為null,則將count加1。第30行,將count作為counter屬性的值保存到ServletContext對象中。當下一次訪問這個Servlet時,調(diào)用getAttribute()方法取出counter屬性的值不為null,于是執(zhí)行第28行的代碼,將count加1,此時count為2,表明頁面被訪問了兩次。第39行,輸出count,顯示該頁面的訪問次數(shù)。
另外還需要注意的是,訪問次數(shù)在重啟Tomcat服務(wù)器后,將重新從1開始,為了永久保存訪問次數(shù),可以將這個值保存到文件或數(shù)據(jù)庫中。
另外還需要注意的是,訪問次數(shù)在重啟Tomcat服務(wù)器后,將重新從1開始,為了永久保存訪問次數(shù),可以將這個值保存到文件或數(shù)據(jù)庫中。