JavaWeb開發基礎:Application的知識點簡述
Application的概念比較簡單,相比cookie(只允許客戶端訪問),session(一個客戶端只能訪問特定的session內存),但是application裏面的內存是可以供所有的客戶端訪問的內容。
比如,我們想要知道某一時段訪問這個服務器的客戶端有多少。
我們常規的做法有:
- 插入數據庫
- 寫入文件
- 寫入application裏面
現在,就簡單說說application這個東西。
context的概念:
context裏面有很多webapplication,每一個application裏面運行很多servlet。
每一個web application運行的環境叫做context,翻譯做中文叫做 上下文。
他的概念上非常抽象。可以稱作web application在內存中運行的表現。
利用application:
application是一塊可以讓所有客戶端訪問的公用的內存,那麼我們可以做一些事情比如記錄訪客數量等不隱私的活動。
代碼示例如下:
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.util.Date;
public class TestServletContext extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
//拿到內存中屬於所有客戶端的內存
ServletContext application = this.getServletContext();
Integer accessCount = (Integer) application.getAttribute("accessCount");
if (accessCount == null) {
accessCount = new Integer(0);
} else {
accessCount = new Integer(accessCount.intValue() + 1);
}
// Use setAttribute instead of putValue in version 2.2.
application.setAttribute("accessCount", accessCount);
out.println("<html><head><title>Session追蹤</title></head>"
+ "<BODY BGCOLOR=\"#FDF5E6\">\n" + "<H1 ALIGN=\"CENTER\">"
+ accessCount + "\n" + "</TABLE>\n" + "</BODY></HTML>"
+ "</H1>\n");
}
}
ServletContext application = this.getServletContext();
上面這串代碼,獲取了servlet中的application。這裏直接調用父類httpservlet的方法。
getServletContext()
setServletContext()
這兩個方法和session的使用都差不多。注意鍵值對的名一定是String。