導航:首頁 > 編程語言 > 監聽器javaweb

監聽器javaweb

發布時間:2022-11-30 08:19:24

A. java WEB如何創建response,從而進行頁面重定向

可以通過pageContext頁面上下文對象來取得:
pageContext.getAttribute("變數名",pageContext.RESPONSE_SCOPE);至於重定向使用如下語句: response.sendRedirect(URL);

B. 使用dwr後,javaweb設置的session超時失效,web.xml和tomcat設置都不起作

在一般系統登錄後,都會設置一個當前session失效的時間,以確保在用戶長時間不與伺服器交互,自動退出登錄,銷毀session
具體設置的方法有三種:
1.在web容器中設置(以tomcat為例)
在tomcat-7.0confweb.xml中設置,以下是tomcat7.0中默認配置:

123<session-config><session-timeout>30</session-timeout></session-config>

tomcat默認session超時時間為30分鍾,可以根據需要修改,負數或0為不限制session失效時間

這里要注意這個session設置的時間是根據伺服器來計算的,而不是客戶端。所以如果在調試程序,應該是修改伺服器端時間來測試,而不是客戶端

2.在工程的web.xml中設置
<!--時間單位為分鍾-->

123<session-config><session-timeout>15</session-timeout></session-config>

這里的15是指15分鍾失效

3.通過java代碼設置
session.setMaxInactiveInterval(30*60);//以秒為單位,即在沒有活動30分鍾後,session將失效

三種方式優先等級:1 < 2 < 3

在一般系統中,也可能需要在session失效後做一些操作:
1.控制用戶數,當session失效後,系統的用戶數減少一個,控制用戶數量在一定范圍內,確保系統的性能
2.控制一個用戶多次登錄,當session有效時,如果相同用戶登錄,就提示已經登錄了,當session失效後,就可以不同提示,直接登錄
那麼如何在session失效後,進行一系列的操作呢?
這里就需要用到監聽器了,即當session因為各種原因失效後,監聽器就可以監聽到,然後執行監聽器中定義好的程序就可以了
監聽器類為:HttpSessionListener類,有sessionCreated和sessionDestroyed兩個方法
自己可以繼承這個類,然後分別實現
sessionCreated指在session創建時執行的方法
sessionDestroyed指在session失效時執行的方法
例子:

1 public class OnlineUserListener implements HttpSessionListener{ 2 public void sessionCreated(HttpSessionEvent event){ 3 HttpSession session=event.getSession; 4 String id=session.getId()+session.getCreationTime(); 5 SummerConstant.UserMap.put(id,Boolean.TRUE);//添加用戶 6 } 7 8 public void sessionDestroyed(HttpSessionEvent event){ 9 HttpSession session=event.getSession;10 String id=session.getId()+session.getCreationTime();11 synchronized(this){12 SummerConstant.USERNum--;//用戶數減-13 SummerConstant.UserMap.remove(id);//從用戶組中移除掉,用戶組為一個map14 }15 }16 }

然後只需要把這個監聽器在web.xml中聲明就可以了

<listener>
<listener-class>com.demo.OnlineUserListener</listener-class>
</listener>

C. JavaWeb開發網站,監測用戶在線狀態

用ajax吧。

網頁裡面加點javascript代碼,在後台每120秒和伺服器端通信一次。失敗的話,表示客戶端退出了

不過這樣,伺服器並發壓力很大。

D. javaweb,監聽器和定時器(Quartz)互相調控的問題

publicclassListener{
publicstaticObjectlock=newObject();
publicvoidrun(){
while(true){
synchronized(Listener.lock){
if(hasData()){
//docheckdata
}
nodifyForLock();
}
threadSleep();
}
}

publicstaticbooleanhasData(){
//returnhasdata
}

publicstaticvoidthreadSleep(){
//sleep5second
}

privatevoidnodifyForLock(){
Listener.lock.notify();
}
}

publicclassQuartz{
publicvoidrun(){
synchronized(Listener.lock){
if(Listener.hasData()){
waitForLock();
}
//doquartz
}
}

privatevoidwaitForLock(){
try{
Listener.lock.wait();
}catch(InterruptedExceptione){
e.printStackTrace();
}
}
}


使用同步鎖機制,確保監聽器和定時器不會同時運行。

使用Wait Nodify機制,確保有數據時定時器會等待,直到數據處理完成。

E. 什麼是java偵聽器

1、監聽器也叫Listener,是Servlet的監聽器,它可以監聽客戶端的請求、服務端的操作等。通過監聽器,可以自動激發一些操作,比如監聽在線的用戶的數量。當增加一個HttpSession時,就激發sessionCreated(HttpSessionEvent se)方法,這樣
就可以給在線人數加1。
2、常用的監聽介面有以下幾個:
1)監聽對ServletContext屬性的操作,比如增加、刪除、修改屬性。
2)、ServletContextListener監聽ServletContext。當創建ServletContext時,激發contextInitialized(ServletContextEvent sce)方法;當銷毀ServletContext時,激發contextDestroyed(ServletContextEvent sce)方法。
HttpSessionListener監聽HttpSession的操作。當創建一個Session時,激發session Created(HttpSessionEvent se)方法;當銷毀一個Session時,激發sessionDestroyed (HttpSessionEvent se)方法。
4)HttpSessionAttributeListener監聽HttpSession中的屬性的操作。當在Session增加一個屬性時,激發attributeAdded(HttpSessionBindingEvent se) 方法;當在Session刪除一個屬性時,激發attributeRemoved(HttpSessionBindingEvent se)方法;當在Session屬性被重新設置時,激發attributeReplaced(HttpSessionBindingEvent se) 方法。
3、參考樣例example:隨伺服器啟動
<web-app>
<listener>
<listener-class>com.tb.listener.CountStartListener</listener-class>
</listener>

package com.tb.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpServlet;
import com.tb.timertask.DoCountTask;
public class CountStartListener extends HttpServlet implements ServletContextListener
{
private static final long serialVersionUID = 1824920962239905170L;
public CountStartListener()
{
// TODO Auto-generated constructor stub
}
public void contextDestroyed(ServletContextEvent arg0)
{
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent arg0)
{
DoCountTask.dotask();

F. java語言中攔截器、過濾器、監聽器都是什麼意思

過濾器,是在java web中,你傳入的request,response提前過濾掉一些信息,或者提前設置一些參數,然後再傳入servlet或者struts2的
action進行業務邏輯,比如過濾掉非法url(不是login.do的地址請求,如果用戶沒有登陸都過濾掉),或者在傳入servlet或者
struts2的action前統一設置字元集,或者去除掉一些非法字元
攔截器,是在面向切面編程的就是在你的service或者一個方法,前調用一個方法,或者在方法後調用一個方法比如動態代理就是攔截器的簡單實現,在你調用方法前列印出字元串(或者做其它業務邏輯的操作),也可以在你調用方法後列印出字元串,甚至在你拋出異常的時候做業務邏輯的操作。

攔截器與過濾器的區別 :
攔截器是基於java的反射機制的,而過濾器是基於函數回調。
攔截器不依賴與servlet容器,過濾器依賴與servlet容器。
攔截器只能對action請求起作用,而過濾器則可以對幾乎所有的請求起作用。
攔截器可以訪問action上下文、值棧里的對象,而過濾器不能訪問。
在action的生命周期中,攔截器可以多次被調用,而過濾器只能在容器初始化時被調用一次
執行順序 :過濾前 - 攔截前 - Action處理 - 攔截後 -
過濾後。個人認為過濾是一個橫向的過程,首先把客戶端提交的內容進行過濾(例如未登錄用戶不能訪問內部頁面的處理);過濾通過後,攔截器將檢查用戶提交數
據的驗證,做一些前期的數據處理,接著把處理後的數據發給對應的Action;Action處理完成返回後,攔截器還可以做其他過程,再向上返回到過濾器的後續操作。

監聽器:這個東西在c/s模式裡面經常用到,他會對特定的事件產生產生一個處理。監聽在很多模式下用到。比如說觀察者模式,就是一個監聽來的。又比如struts2可以用監聽來啟動。Servlet監聽器用於監聽一些重要事件的發生,監聽器對象可以在事情發生前、發生後可以做一些必要的處理。
好比如果說Servlet的監聽器Listener,它是實現了javax.servlet.ServletContextListener
介面的伺服器端程序,它也是隨web應用的啟動而啟動,只初始化一次,隨web應用的停止而銷毀。主要作用是:
做一些初始化的內容添加工作、設置一些基本的內容、比如一些參數或者是一些固定的對象等等。

G. oracle的監聽器listener 和 java web的監聽器listener 的聯系是什麼

區別如下:

1、從定義方面的區別:

1)oracle監聽器是Oracle基於伺服器端的一種網路服務,主要用於監聽客戶端向資料庫伺服器端提出的連接請求。既然是基於伺服器端的服務,那麼它也只存在於資料庫伺服器端,進行監聽器的設置也是在資料庫伺服器端完成的。

2)java web中的listener可以監聽web伺服器中某一個執行動作,並根據其要求作出相應的響應。通俗的語言說就是在application,session,request三個對象創建消亡或者往其中添加修改刪除屬性時自動執行代碼的功能組件。比如spring 的總監聽器 會在伺服器啟動的時候實例化配置的bean對象 、 hibernate 的 session 的監聽器會監聽session的活動和生命周期,負責創建,關閉session等活動。

2、從實現方面的區別:

oracle的監聽是基於網路和埠號實現的:

Servlet的監聽器Listener,它是實現了javax.servlet.ServletContextListener 介面的伺服器端程序,它也是隨web應用的啟動而啟動,只初始化一次,隨web應用的停止而銷毀。主要作用是: 做一些初始化的內容添加工作、設置一些基本的內容、比如一些參數或者是一些固定的對象等等。

二者的聯系:都是通過後台守護進程捕獲某一事件的發生。

H. 如何用java實現自動監聽處理jsp頁面的

一、監聽域對象中屬性的變更的監聽器

域對象中屬性的變更的事件監聽器就是用來監聽 ServletContext, HttpSession, HttpServletRequest 這三個對象中的屬性變更信息事件的監聽器。

這三個監聽器介面分別是, HttpSessionAttributeListener 和,這三個介面中都定義了三個方法來處理被監聽對象中的屬性的增加,刪除和替換的事件,同一個事件在這三個介面中對應的方法名稱完全相同,只是接受的參數類型不同。

1.1、attributeAdded 方法

當向被監聽對象中增加一個屬性時,web容器就調用事件監聽器的attributeAdded方法進行響應,這個方法接收一個事件類型的參數,監聽器可以通過這個參數來獲得正在增加屬性的域對象和被保存到域中的屬性對象
各個域屬性監聽器中的完整語法定義為:

public void attributeAdded(ServletContextAttributeEvent scae)
public void attributeReplaced(HttpSessionBindingEvent hsbe)
public void attributeRmoved(ServletRequestAttributeEvent srae)

1.2、attributeRemoved 方法

當刪除被監聽對象中的一個屬性時,web容器調用事件監聽器的attributeRemoved方法進行響應
各個域屬性監聽器中的完整語法定義為:

public void attributeRemoved(ServletContextAttributeEvent scae)
public void attributeRemoved (HttpSessionBindingEvent hsbe)
public void attributeRemoved (ServletRequestAttributeEvent srae)

1.3、attributeReplaced 方法

當監聽器的域對象中的某個屬性被替換時,web容器調用事件監聽器的attributeReplaced方法進行響應
各個域屬性監聽器中的完整語法定義為:

public void attributeReplaced(ServletContextAttributeEvent scae)
public void attributeReplaced (HttpSessionBindingEvent hsbe)
public void attributeReplaced (ServletRequestAttributeEvent srae)

1.4、監聽器範例:

編寫監聽器監聽ServletContext域對象的屬性值變化情況,代碼如下:

package me.gacl.web.listener;

import java.text.MessageFormat;

import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.;

/**
* @ClassName: My
* @Description: ServletContext域對象中屬性的變更的事件監聽器
* @author: 孤傲蒼狼
* @date: 2014-9-11 下午10:53:04
*
*/
public class My implements
{

@Override
public void attributeAdded(ServletContextAttributeEvent scab) {
String str =MessageFormat.format(
"ServletContext域對象中添加了屬性:{0},屬性值是:{1}"
,scab.getName()
,scab.getValue());
System.out.println(str);
}

@Override
public void attributeRemoved(ServletContextAttributeEvent scab) {
String str =MessageFormat.format(
"ServletContext域對象中刪除屬性:{0},屬性值是:{1}"
,scab.getName()
,scab.getValue());
System.out.println(str);
}

@Override
public void attributeReplaced(ServletContextAttributeEvent scab) {
String str =MessageFormat.format(
"ServletContext域對象中替換了屬性:{0}的值"
,scab.getName());
System.out.println(str);
}
}

在web.xml文件中注冊監聽器

<listener>
<description>My監聽器</description>
<listener-class>me.gacl.web.listener.My</listener-class>
</listener>

編寫Test.jsp測試頁面

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML>
<html>
<head>
<title>監聽器測試</title>
</head>

<body>
<%
//往application域對象中添加屬性
application.setAttribute("name", "孤傲蒼狼");
//替換application域對象中name屬性的值
application.setAttribute("name", "gacl");
//移除application域對象中name屬性
application.removeAttribute("name");
%>
</body>
</html>

運行結果如下:

從運行結果中可以看到,ServletContextListener監聽器成功監聽到了ServletContext域對象(application)中的屬性值的變化情況。

I. javaEE中的監聽器有什麼作用

一、概念
監聽器就是一個實現特定介面的普通java程序,這個程序專門用於監聽另一個java對象的方法調用或屬性改變,當被監聽對象發生上述事件後,監聽器某個方法將立即被執行。
二、Servle監聽器
1、編寫 Servlet 監聽器
(1)和編寫其它事件監聽器一樣,編寫servlet監聽器也需要實現一個特定的介面,並針對相應動作覆蓋介面中的相應方法。
(2)和其它事件監聽器略有不同的是,servlet監聽器的注冊不是直接注冊在事件源上,而是由WEB容器負責注冊,開發人員只需在web.xml文件中使用<listener>標簽配置好監聽器,web容器就會自動把監聽器注冊到事件源中。
(3)一個 web.xml 文件中可以配置多個 Servlet 事件監聽器,web 伺服器按照它們在web.xml 文件中的注冊順序來載入和注冊這些 Serlvet 事件監聽器。
配置如下:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

三、就是gui里邊控制項的監聽器了。具體是什麼就要自己看看相關書籍或者源碼了!

閱讀全文

與監聽器javaweb相關的資料

熱點內容
2000元招程序員 瀏覽:853
h3c交換機刪除命令 瀏覽:844
如何辦理移動精品app包 瀏覽:787
如何學好語文app初中 瀏覽:526
越秀PHP培訓 瀏覽:956
xyz是什麼伺服器 瀏覽:177
伺服器共享如何設置密碼共享 瀏覽:15
php建立長連接 瀏覽:827
黃庭經pdf 瀏覽:85
java搶紅包編程 瀏覽:277
手機熱點無法解析伺服器的dns地址 瀏覽:251
android自動更新代碼 瀏覽:22
電腦解壓後打開方式 瀏覽:129
用紙做解壓泡泡版 瀏覽:708
華為watchgt如何在app更換表盤 瀏覽:31
廣數機床g94怎麼編程 瀏覽:841
flashsocket編程 瀏覽:800
角度感測器51單片機 瀏覽:421
解壓暑假游戲 瀏覽:617
連接wpa2加密網路 瀏覽:711