python监听器_监听器 - python成长中 - 博客园
監(jiān)聽器介紹
監(jiān)聽器 - Listener
監(jiān)聽器(Listener)是J2EE Servlet模塊下的組件
Listener的作用對web應(yīng)用對象的行為進(jìn)行監(jiān)控
通過Listener監(jiān)聽自動觸發(fā)指定的功能代碼
第一個監(jiān)聽器
packagecom.imooc.listener;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;
@WebListenerpublic class FirstListener implementsServletContextListener {
@Overridepublic voidcontextDestroyed(ServletContextEvent arg0) {//TODO Auto-generated method stub
System.out.println("監(jiān)聽器銷毀");
}
@Overridepublic voidcontextInitialized(ServletContextEvent arg0) {//TODO Auto-generated method stub
System.out.println("監(jiān)聽器初始化");
}
}
com.imooc.listener.FirstListener
內(nèi)置對象監(jiān)聽器
案例應(yīng)用
請求流量分析統(tǒng)計
packagecom.imooc.total;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjavax.servlet.ServletContext;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;importjavax.servlet.ServletRequestEvent;importjavax.servlet.ServletRequestListener;public class RequestTotal implementsServletContextListener,ServletRequestListener {
@Overridepublic voidrequestDestroyed(ServletRequestEvent arg0) {//TODO Auto-generated method stub
}
@Overridepublic voidrequestInitialized(ServletRequestEvent arg0) {/*** 監(jiān)聽請求,每次請求來臨時,記錄時間段的請求次數(shù)
**/
//獲取ServletContext對象
ServletContext context =arg0.getServletContext();//取出屬性對象
List timeArray = (List) context.getAttribute("timeArray");
List valueArray = (List) context.getAttribute("valueArray");//定義一個時間類型的對象
Date date = newDate();//時間格式化
SimpleDateFormat hourMinute = new SimpleDateFormat("HH:mm");//對小時和分鐘格式化
String time =hourMinute.format(date);//判斷當(dāng)前時間在不在集合里
if(timeArray.indexOf(time) == -1) {//時間集合里增加這個時間段
timeArray.add(time);//在請求記錄集合里,初始化有一次請求
valueArray.add(1);//保存ServletContext對象里
context.setAttribute("timeArray", timeArray);
context.setAttribute("valueArray", valueArray);
}else{//獲取該時間段索引
int index =timeArray.indexOf(time);//根據(jù)索引獲取值
int value =valueArray.get(index);//根據(jù)索引累加值
valueArray.set(index, value+1);//保存屬性
context.setAttribute("valueArray", valueArray);
}
}
@Overridepublic voidcontextDestroyed(ServletContextEvent arg0) {//TODO Auto-generated method stub
}
@Overridepublic voidcontextInitialized(ServletContextEvent arg0) {//初始化時間集合,累加請求集合
List timeArray= newArrayList();
List valueArray= newArrayList();//獲取ServletContext對象
ServletContext context =arg0.getServletContext();//把timeArray當(dāng)屬性保存在ServletContext里
context.setAttribute("timeArray", timeArray);
context.setAttribute("valueArray", valueArray);
}
}
xml配置
request-total
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
com.imooc.total.RequestTotal
入門百度Echarts組件
Insert title here$.ajax(
{
url:"./rt",
type:"get",
dataType:"json",
success : function(json) {//data = jQuery.parseJSON(data);//dataType指明了返回數(shù)據(jù)為json類型,故不需要再反序列化
console.log(json);
console.log(json.timeArray);
console.log(json.vauleArray);//基于準(zhǔn)備好的dom,初始化echarts實例
var myChart = echarts.init(document.getElementById('main'));//指定圖表的配置項和數(shù)據(jù)
var option ={
title: {
text:'請求流量數(shù)據(jù)表'},
tooltip: {},
legend: {
data:['訪問量']
},
xAxis: {
data: json.timeArray
},
yAxis: {},
series: [{
name:'次數(shù)',
type:'bar',
data: json.valueArray
}]
};//使用剛指定的配置項和數(shù)據(jù)顯示圖表。
myChart.setOption(option);
},
error:function(){
alert("請求失敗");
}
}
)
}
window.setInterval("showCase()",1000);
packagecom.imooc.total;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.List;importjavax.servlet.ServletContext;importjavax.servlet.ServletContextEvent;importjavax.servlet.ServletContextListener;importjavax.servlet.ServletRequestEvent;importjavax.servlet.ServletRequestListener;importjavax.servlet.http.HttpServletRequest;public class RequestTotal implementsServletContextListener,ServletRequestListener {
@Overridepublic voidrequestDestroyed(ServletRequestEvent arg0) {//TODO Auto-generated method stub
}
@Overridepublic voidrequestInitialized(ServletRequestEvent arg0) {/*** 監(jiān)聽請求,每次請求來臨時,記錄時間段的請求次數(shù)
**/
//獲取HttpServletRequest對象
HttpServletRequest request =(HttpServletRequest)arg0.getServletRequest();//獲取請求的URL
String url =request.getRequestURL().toString();if(url.endsWith("/rt") == true) {return;
}//獲取ServletContext對象
ServletContext context =arg0.getServletContext();//取出屬性對象
List timeArray = (List) context.getAttribute("timeArray");
List valueArray = (List) context.getAttribute("valueArray");//定義一個時間類型的對象
Date date = newDate();//時間格式化
SimpleDateFormat hourMinute = new SimpleDateFormat("HH:mm");//對小時和分鐘格式化
String time =hourMinute.format(date);//判斷當(dāng)前時間在不在集合里
if(timeArray.indexOf(time) == -1) {//時間集合里增加這個時間段
timeArray.add(time);//在請求記錄集合里,初始化有一次請求
valueArray.add(1);//保存ServletContext對象里
context.setAttribute("timeArray", timeArray);
context.setAttribute("valueArray", valueArray);
}else{//獲取該時間段索引
int index =timeArray.indexOf(time);//根據(jù)索引獲取值
int value =valueArray.get(index);//根據(jù)索引累加值
valueArray.set(index, value+1);//保存屬性
context.setAttribute("valueArray", valueArray);
}
}
@Overridepublic voidcontextDestroyed(ServletContextEvent arg0) {//TODO Auto-generated method stub
}
@Overridepublic voidcontextInitialized(ServletContextEvent arg0) {//初始化時間集合,累加請求集合
List timeArray= newArrayList();
List valueArray= newArrayList();//獲取ServletContext對象
ServletContext context =arg0.getServletContext();//把timeArray當(dāng)屬性保存在ServletContext里
context.setAttribute("timeArray", timeArray);
context.setAttribute("valueArray", valueArray);
}
}
packagecom.imooc.total;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importcom.alibaba.fastjson.JSON;/*** Servlet implementation class RequestTotalServlet*/@WebServlet("/rt")public class RequestTotalServlet extendsHttpServlet {private static final long serialVersionUID = 1L;/***@seeHttpServlet#HttpServlet()*/
publicRequestTotalServlet() {super();//TODO Auto-generated constructor stub
}/***@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub
response.setContentType("text/html;charset=UTF-8");
PrintWriter out=response.getWriter();//out.println("
流量統(tǒng)計計算器
");ServletContext context=request.getServletContext();
List timeArray = (List) context.getAttribute("timeArray");
List valueArray = (List) context.getAttribute("valueArray");//out.println(timeArray.toString()+"\n");//out.println(valueArray.toString());//整合集合,采取map映射表的方式
Map dict = newHashMap();//初始化鍵值對
dict.put("timeArray", timeArray);
dict.put("valueArray", valueArray);//轉(zhuǎn)化為JSON字符串
String json =JSON.toJSONString(dict);
out.println(json);
}/***@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub
doGet(request, response);
}
}
總結(jié)
以上是生活随笔為你收集整理的python监听器_监听器 - python成长中 - 博客园的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: emoji隐藏表情_除了TouchBar
- 下一篇: mpvue 微信小程序api_第三方框架