<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
what is listener?
監聽器是一個介面內容由我們實現,會在特定時間被呼叫,監聽器用於監聽web應用中三大域物件(request,session,application),資訊的建立,銷燬,增加,修改,刪除等動作的發生,然後做出相應的響應處理。當範圍物件的狀態發生變化的時候,伺服器自動呼叫監聽器物件中的方法。常用於統計線上人數和線上使用者,系統載入時進行資訊初始化,統計網站的存取量等。
ContextListener
通過實現ServletContextListener
來進行全域性監聽
ContextListener可以通過記錄使用者存取網站的次數思路:使用者通過存取index.jsp,來獲取存放在監聽器中的hashmap< String,Integer>
,然後在index.jsp中進行判斷。
ContextListener的程式碼思路如下:
public class ContextListener1 implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { System.out.println("init"); //建立map集合 Map<String, Integer> map = new HashMap<String, Integer>(); // 獲取全域性物件 ServletContext context = servletContextEvent.getServletContext(); context.setAttribute("map", map); System.out.println(map.isEmpty()); System.out.println(map); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { System.out.println("destory"); } }
index.jsp的程式碼思路如下:
<% //獲取使用者ip地址 String ServerName = request.getServerName(); //獲取全域性物件 Map<String, Integer> map = (Map<String, Integer>) application.getAttribute("map"); if (map.containsKey(ServerName)) { map.put(ServerName, map.get(ServerName) + 1); } else { map.put(ServerName, 1); } int count = map.get(ServerName); int size = map.size(); %> <h4>ip地址是:<%=ServerName%>,您是第<%=count%>位存取的使用者,當前伺服器共被<%=size%>個使用者存取過</h4>
屬性監聽器主要監聽屬性值的變化,例如request.setAttribute()
等這些資料的變化。
package listener; import javax.servlet.*; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; /** * @author wjs * @create 2022-02-27 15:09 */ public class AttrListener implements ServletContextAttributeListener, ServletRequestAttributeListener, HttpSessionAttributeListener { @Override public void attributeAdded(ServletContextAttributeEvent servletContextAttributeEvent) { // 向全域性作用域中新增值的監聽器 } @Override public void attributeRemoved(ServletContextAttributeEvent servletContextAttributeEvent) { // 向全域性作用域刪除值的監聽器 } @Override public void attributeReplaced(ServletContextAttributeEvent servletContextAttributeEvent) { // 向全域性域物件修改值的監聽器 } @Override public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) { // 向request域中新增值的監聽器 } @Override public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) { // 向request域中刪除值的監聽器 } @Override public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) { // 向request域中修改值的監聽器 } @Override public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) { // 向session域中新增值的監聽器 } @Override public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) { // 向session域中刪除值的監聽器 } @Override public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) { // 向session域中修改值的監聽器 } }
1.編寫java 類實現Filter介面 2.重寫doFilter()方法 3.設定攔截的url
/*:根目錄下所有請求都攔截
/*.do:所有帶.do的請求都攔截
/*.jsp
過濾器的攔截順序,取決於在組態檔web.xml的先後順序
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45