首页编程java编程java的事件监听是什么意思?什么是java侦听器

java的事件监听是什么意思?什么是java侦听器

编程之家2023-10-1290次浏览

大家好,如果您还对java的事件监听是什么意思不太了解,没有关系,今天就由本站为大家分享java的事件监听是什么意思的知识,包括什么是java侦听器的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

java的事件监听是什么意思?什么是java侦听器

什么是java侦听器

1、监听器也叫Listener,是Servlet的监听器,它可以监听客户端的请求、服务端的操作等。通过监听器,可以自动激发一些操作,比如监听在线的用户的数量。当增加一个HttpSession时,就激发sessionCreated(HttpSessionEvent se)方法,这样

就可以给在线人数加1。

2、常用的监听接口有以下几个:

java的事件监听是什么意思?什么是java侦听器

1)ServletContextAttributeListener监听对ServletContext属性的操作,比如增加、删除、修改属性。

2)、ServletContextListener监听ServletContext。当创建ServletContext时,激发contextInitialized(ServletContextEvent sce)方法;当销毁ServletContext时,激发contextDestroyed(ServletContextEvent sce)方法。

HttpSessionListener监听HttpSession的操作。当创建一个Session时,激发session Created(HttpSessionEvent se)方法;当销毁一个Session时,激发sessionDestroyed(HttpSessionEvent se)方法。

java的事件监听是什么意思?什么是java侦听器

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();

java中的事件监听是怎样实现随时监听的,是通过线程吗

不是通过线程实现的,它是通过一种注册--通知机制实现的。在java的设计模式中,有一种模式叫:观察者模式,和这个类似。举个例子,本例子是一个简单的监听当数据发生变化时要做的操作。

1,我们先定义一个接口,可以让多个监听者实现

publicinterfaceIDataListen{

publicvoidupdate(Objectevent,Objectmsg);

}

2,实现一监听者

publicclassDataListenimplementsIDataListen{

@Override

publicvoidupdate(Objectevent,Objectarg){

//TODOAuto-generatedmethodstub

System.out.println("数据发生了变化");

}

}

3,被监听者

publicclassDataManager{

privateList<IDataListen>listenList=newArrayList<>();

publicvoidnotifyListen(Objectevent,Objectmsg){

for(IDataListendataListen:listenList){

dataListen.update(null,null);

}

}

publicvoidaddListen(IDataListendataListen){

listenList.add(dataListen);

}

publicvoidupdateData(Objectmsg){

this.notifyListen(null,msg);

}

publicstaticvoidmain(String[]args){

DataManagerdataManager=newDataManager();

IDataListendataListen1=newDataListen();

IDataListendataListen2=newDataListen();

dataManager.addListen(dataListen1);

dataManager.addListen(dataListen2);

dataManager.updateData("aaa");

}

}

main方法里面是监听的应用。这样就可以监听DataManager中的updateData行为了,当有数据发生变化时,就可以即时被监听者收到。

Java中的actionlistener是什么意思,有什么作用,详细点为好!

actionlistener字面上理解就是动作监听器。

它是一个接口,在实现此接口的类中,你可以给需要关注其动作的组件(如Button)添加监听器(addActionListener(this);),之后在事件处理方法(public void actionPerformed(ActionEvent event){})中,对每个事件进行不同处理。

给你个例子吧,是我自己写的一个记事本:

import java.io.*;

import java.awt.event.*;

import javax.swing.*;

public class MainClass extends JFrame implements ActionListener{

int width= 500,height= 400;

JPanel panel;

JMenuBar bar;

JMenu fileMenu,editMenu,helpMenu;

JMenuItem打开O,新建N,保存S,另存A,剪切T,复制C,粘贴P,关于A;

JTextArea textArea= null;

File tempFile= null;

public MainClass(){//构造方法

setTitle("TextEdit");

setSize(width,height);

panel=(JPanel)getContentPane();

bar= new JMenuBar();

fileMenu= new JMenu("文件F");

fileMenu.setMnemonic('F');

editMenu= new JMenu("编辑E");

editMenu.setMnemonic('E');

helpMenu= new JMenu("帮助H");

helpMenu.setMnemonic('H');

打开O= new JMenuItem("打开O");

打开O.setMnemonic('O');

新建N= new JMenuItem("新建N");

新建N.setMnemonic('N');

保存S= new JMenuItem("保存S");

保存S.setMnemonic('S');

另存A= new JMenuItem("另存A");

另存A.setMnemonic('A');

剪切T= new JMenuItem("剪切C");

剪切T.setMnemonic('t');

复制C= new JMenuItem("复制C");

复制C.setMnemonic('C');

粘贴P= new JMenuItem("粘贴P");

粘贴P.setMnemonic('P');

关于A= new JMenuItem("关于A");

关于A.setMnemonic('A');

fileMenu.add(打开O);

fileMenu.add(新建N);

fileMenu.add(保存S);

fileMenu.add(另存A);

bar.add(fileMenu);

editMenu.add(剪切T);

editMenu.add(复制C);

editMenu.add(粘贴P);

bar.add(editMenu);

helpMenu.add(关于A);

bar.add(helpMenu);

textArea= new JTextArea();

panel.add("North",bar);

panel.add("Center", textArea);

打开O.addActionListener(this);

新建N.addActionListener(this);

保存S.addActionListener(this);

另存A.addActionListener(this);

剪切T.addActionListener(this);

复制C.addActionListener(this);

粘贴P.addActionListener(this);

关于A.addActionListener(this);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

public void actionPerformed(ActionEvent event){//处理事件

if(event.getSource()==打开O){//处理打开

JFileChooser jfc= new JFileChooser();

jfc.showOpenDialog(panel);

tempFile= jfc.getSelectedFile();

FileReader fis;

try{

fis= new FileReader(tempFile);

textArea.read(fis,null);

textArea.setEditable(true);

}catch(Exception ex){ex.printStackTrace();}

}

if(event.getSource()==新建N){//处理新建

textArea.setEditable(true);

textArea.setText(null);

}

if(event.getSource()==保存S){//处理保存

if(tempFile== null){

JFileChooser jfc= new JFileChooser();

jfc.showSaveDialog(panel);

tempFile= jfc.getSelectedFile();

try{

FileWriter fos= new FileWriter(tempFile);

textArea.write(fos);

}catch(Exception ex){ex.printStackTrace();}

}

else{

try{

FileWriter fos= new FileWriter(tempFile);

textArea.write(fos);

}catch(Exception ex){ex.printStackTrace();}

}

}

if(event.getSource()==另存A){//处理另存

JFileChooser jfc= new JFileChooser();

jfc.showSaveDialog(panel);

tempFile= jfc.getSelectedFile();

try{

FileWriter fos= new FileWriter(tempFile);

textArea.write(fos);

}catch(Exception ex){ex.printStackTrace();}

}

if(event.getSource()==剪切T){//处理剪切

textArea.cut();

}

if(event.getSource()==复制C){//处理复制

textArea.copy();

}

if(event.getSource()==粘贴P){//处理粘贴

textArea.paste();

}

if(event.getSource()==关于A){//处理关于

textArea.setText("Manifest-Version: 1.0\n"+

"Created-By: Libra_JL\n"+

"QQ: 254791521\n");

textArea.setEditable(false);

panel.validate();

validate();

}

}

public static void main(String []args){//主函数

new MainClass();

}

}

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

java hprof是什么文件 hprof是什么文件能删不喉咙干燥是什么原因 喉咙干燥吃什么药效果最好