一個(gè)項(xiàng)目中所有資源被訪問都要對訪問量進(jìn)行累加操作
創(chuàng)建一個(gè)int類型的變量计盒,用來保存訪問量射窒,然后把它保存在ServletContext的域中藏杖,這樣可以保存所有的Servlet都可以訪問的到
- 最初時(shí)ServletContext中沒有保存訪問量的屬性
- 當(dāng)本站中第一次被訪問時(shí),創(chuàng)建一個(gè)變量脉顿,設(shè)置值為1保存在> ServletContext中
- 當(dāng)以后的訪問時(shí)蝌麸,就可以從ServletContext中獲取這個(gè)變量,然后在其基礎(chǔ)上加1
- 獲取ServletContext對象艾疟,查看是否存在count屬性来吩,如果存在,說明不是第一次訪問蔽莱,如果不存在弟疆,說明是第一次訪問
第一次訪問:調(diào)用Servlet的Context的setAttribute()傳遞一個(gè)屬性,名字為count值為1
第二次訪問:調(diào)用ServletContext的getAttribute()方法獲得原來的訪問量盗冷,給訪問量進(jìn)行加一操作怠苔,在調(diào)用ServletContext的setAttribute()方法完成設(shè)置
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
@WebServlet(name = "AnLiServlet",urlPatterns = "/AnLiServlet")
public class AnLiServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/* 最初時(shí)ServletContext中沒有保存訪問量的屬性
當(dāng)本站中第一次被訪問時(shí),創(chuàng)建一個(gè)變量仪糖,設(shè)置值為1保存在> ServletContext中
當(dāng)以后的訪問時(shí)柑司,就可以從ServletContext中獲取這個(gè)變量,然后在其基礎(chǔ)上加1
獲取ServletContext對象锅劝,查看是否存在count屬性攒驰,如果存在,說明不是第一次訪問故爵,如果不存在玻粪,說明是第一次訪問*/
ServletContext app = this.getServletContext();
Integer count = (Integer) app.getAttribute("count");
if(count == null){
app.setAttribute("count",1);
}else {
app.setAttribute("count",count+1);
}
/*
向?yàn)g覽器輸出需要使用響應(yīng)對象
*/
PrintWriter pw = response.getWriter();
pw.println("<h1>" + count + "</h1>");
}
}