监听器

过滤器、监听器、拦截器的区别

一世执手 提交于 2019-12-30 18:36:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.过滤器 Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做 一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应 (Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面等等工作。它是随你的 web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁,以下通过过滤编码的代码示例来了解它 的使用: MyCharsetFilter.java 编码过滤器 package ...; import ...; // 主要目的:过滤字符编码;其次,做一些应用逻辑判断等. // Filter跟web应用一起启动 // 当web应用重新启动或销毁时,Filter也被销毁 public class MyCharsetFilter implements Filter { private FilterConfig config = null ; public void destroy() { System. out .println(

感知Session绑定的事件监听器

和自甴很熟 提交于 2019-12-30 16:39:51
也称为HttpSession域内对象监听器,是监听绑定到HttpSession域中的某个对象的事件监听器; 保存在session域中的对象可以有多种状态:绑定到Session中;从Session域中解除绑定;随Session对象持久化到一个存储设备中;随Session对象从一个存储设备中恢复; Servlet规范中定义了两个特殊的监听器接口来帮助JavaBean对象了解自己在Session域中的这些状态:HttpSessionBindingListener 接口和 HttpSessionActivationListener 接口,实现这两个接口的类不需要在web.xml文件中进行注册,即不需要配置web.xml文件; HttpSessionBindingListener 接口 实现了HttpSessionBindingListener接口的JavaBean对象可以感知自己被绑定到Session中和从Session中删除的事件。 import java.io.Serializable; import javax.servlet.http.HttpSessionActivationListener; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http

Servlet监听器一

半世苍凉 提交于 2019-12-30 12:07:15
了解Servlet之前我们先了解监听器是什么?字面意思,就是监听这个web干嘛了,然后我们根据得到的信息可以采取什么措施。 术语:监听器 :专门用于对其它对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动。 Servlet对象 根据监听的事件 可以分为三种类型:域对象监听器,属性监听器,HttpSession域内对象监听器。本文主要讲解域对象监听器。 域对象(request、session、application)监听器 :监听域对象自身的创建和销毁的事件监听器;原来域对象的创建和销毁我们无法参与,监听器的出现提供了参与的机会 下面我们通过一些实验对监听器进行了解,了解如何创建域对象监听器和域对象监听器何时作用。 1、创建一个名为“listener”的web项目,并将tomcat中的servlet包引入 2、创建applictionListener、sessionListener两个Class,并分别对应ServletContextListener、HttpSessionListener两个接口; 3、创建一个index.jsp 4、在web.xml进行配置 applictionListener中代码: package listener; import javax.servlet.ServletContextEvent; import

C# Debug

依然范特西╮ 提交于 2019-12-30 04:30:41
语法、IDE环境使用、Debug方法是学习一门语言的 最少必须技能 ,本文总结C#中的最常用调试方法 一、 断点 如下图所示在欲插入断点的地方右键》断点》插入断点(或在行号左边点击)可在选中语句上插入断点: Debug模式下程序运行到断点所在语句时会阻塞在该语句上,如下图所示 此时可以通过工具栏上“逐语句”、“逐过程”、“跳出”即 来进行调试,调试期间光标放在变量上可以显示变量的当前值。 二、 跟踪点 在图1中,不仅可以插入断点,也可插入跟踪点,跟踪点是一种特殊的断点,可以配置为满足一定条件后才命中该断点,并可以将重要信息输出到Output窗口,类似于Debug.WriteLine(),它实际上是输出 调试 信息且不修改代码的一种方式。 根据配置不同跟踪点有如下三种形状,从上到下依次为 输出信息并阻塞 输出信息不阻塞 条件性阻塞并输出信息 三、 Debug与Trace类记录调试信息 //System.Diagnostics.Debug类与System.Diagnostics.Trace可用于记录并输出调试信息 System.Diagnostics.Debug.Write("info"); System.Diagnostics.Debug.WriteIf(true, "info"); System.Diagnostics.Debug.WriteLine("info"); System

SpringBoot2.0 监听器ApplicationListener的使用-监听ApplicationReadyEvent事件

*爱你&永不变心* 提交于 2019-12-28 00:44:37
参考:http://www.shareniu.com/article/73.htm 一.需求是想将我的写一个方法能在项目启动后就运行,之前使用了redis的消息监听器,感觉可以照着监听器这个思路做,于是想到了sringboot的监听器 二.目前spring boot中支持的事件类型如下 ApplicationFailedEvent:该事件为spring boot启动失败时的操作 ApplicationPreparedEvent:上下文context准备时触发 ApplicationReadyEvent:上下文已经准备完毕的时候触发 ApplicationStartedEvent:spring boot 启动监听类 SpringApplicationEvent:获取SpringApplication ApplicationEnvironmentPreparedEvent:环境事先准备 三.监听器的使用 第一:首先定义一个自己使用的监听器类并实现ApplicationListener接口。 @Componenpublic class MessageReceiver implements ApplicationListener<ApplicationReadyEvent> { private Logger logger = LoggerFactory.getLogger

spring 事件机制

浪子不回头ぞ 提交于 2019-12-28 00:43:21
spring的事件机制采用了观察者设计模式。 关键点在于ApplicationContext的两个成员:ApplicationEvent ApplicationListenter。 很显然ApplicatonEvent是java事件在Spring中的实现,用户要自定义一个spring事件,只需要继承自ApplicatonEvent;而ApplicationListener则是一个监听器,用户的自定义监听器同样需要实现ApplicationListener接口,并重写onApplicationEvent(ApplicationEvent event)方法。 定义完事件和监听器后需要在spring中进行配置。很简单,就是将监听器配置为一个bean:<bean class="com.lincoln.spring.EmailListener"/>。 第三步,触发事件:直接调用ApplicationContext的publishEvent(event)方法。 实例如下: 1、定义一个event: public class EmailEvent extends ApplicationContextEvent{ public EmailEvent(ApplicationContext source){ super(source); } private String address ;

Windows下ORACLE开启的各项服务

时光怂恿深爱的人放手 提交于 2019-12-27 06:02:06
Windows下部署完成ORACLE 11g R2以后,一共产生7项服务,分别为: OracleServiceSID(必须启动) 该服务启动系统标识符为SID的数据库实例,其中SID是安装Oracle时输入的数据库名称。 数据库服务(数据库实例),是Oracle核心服务该服务,是数据库启动的基础,只有该服务启动,Oracle数据库才能正常启动。 OracleHOME_NAMETNSListener 该服务启动数据库服务器的监听器,监听器接受来自客户端应用程序的连接请求。服务只有在数据库需要远程访问的时候才需要。(非必须启动)。 若监听器未启动,则客户端将无法连接到数据库服务器 OracleDBConsoleSID(非必须启动) Oracle数据库控制台服务,SID是Oracle的实例标识,默认的实例为orcl。在运行Enterprise Manager(企业管理器OEM,浏览器管理界面)的时候,需要启动这个服务。(非必须启动) Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的系统能。(非必须启动)

Linux下oracle开机自启动服务

一个人想着一个人 提交于 2019-12-26 20:25:54
如果每次重启操作系统都要进行以上操作好麻烦,那么如何让Oracle作为系统服务在开机的时候自动启动呢? Oracle在$ORACLE_HOME/bin下提供许多对数据库进行操作的脚本,其中dbstart和dbshut可分别用来启动和关闭数据库。注意,这两个脚本已包含监听器的启动或关闭,但并未对EM进行相关的操作。使用如下命令: /opt/oracle/11g/bin/dbstart /opt/oracle/11g #启动数据库实例(包含监听器) /opt/oracle/11g/bin/dbshut /opt/oracle/11g #关闭数据库实例(包括监听器) 以上命令要成功启动数据库实例还得打开Oracle设置的一个关卡:vi /etc/oratab,修改行: orcl:/opt/oracle/11g:Y #默认为orcl:/opt/oracle/11g:N 以root身份建立开机启动oracle服务的脚本:vi /etc/init.d/oracle,添加如下脚本: #!/bin/sh #chkconfig: 2345 20 80 #description: Oracle dbstart / dbshut #以上两行为chkconfig所需 ORA_HOME=/opt/oracle/11g ORA_OWNER=oracle LOGFILE=/var/log/oracle.log

网站开发中的服务器缓存处理

此生再无相见时 提交于 2019-12-25 19:37:21
文章目录 服务器缓存的概述 使用服务器缓存的好处 服务器缓存通常都保存些什么 处理服务器缓存的最佳时机 模拟一下spring工厂的创建时机。 服务器缓存处理前的问题 服务器缓存处理 服务器缓存的概述 使用服务器缓存的好处 缓存:就是存放在内存中的数据 浏览器缓存:浏览器内存中保存的以前的服务器做出的响应 服务器缓存:保存在服务器内存中的数据 服务器缓存通常都保存些什么 一般来讲,服务器缓存就是用来保存数据字典的,因为数据字典数据量大,而且值不是很容易发生变化。( 重点是:值不容易发生变化 ) 总是在实时更新表中的数据,每一次我们使用都要求重新从表中取得最新的数据。而不是从服务器缓存中取得老数据。 处理服务器缓存的最佳时机 使用监听器处理服务器缓存 。 监听器作为web开发3大组件(Servlet(controller)、Filter、Listener),是由Tomcat服务器帮我们维护的。 监听器,能够监听域对象的创建与销毁,还能够监听域对象中属性值的创建,更新和移除。 最常用的是监听域对象创建、销毁本身。 你监听什么,我们就是实现哪个所需的监听器 例如: 我们现在拿spring的监听器来举例 public class ContextLoaderListener extends ContextLoader implements ServletContextListener

Spring之@DependsOn的实现原理

ε祈祈猫儿з 提交于 2019-12-25 02:04:03
为什么要控制Bean的加载顺序? 首先spring容器对一般的bean的初始化顺序是不确定的 (个别Spring自身初始化用的bean和配置类的bean会优先初始化) ,但是我们在某些场景下(具体场景如下面举例),我们又需要控制顺序。这时候,就用到了@DenpendsOn。 一、@DependsOn的使用 使用场景: 1、beanA 间接依赖 beanB并不是直接通过 构造方法或@Autowired等方式注入。如果beanA有一个属性,需要在初始化的时候对其进行赋值(需要在初始化的时候做,是因为这个属性其实是包装了其它的几个Bean的,比如说代理了BeanB,所以这就形成了BeanA间接的依赖BeanB。 2、beanA是事件发布者(或JMS发布者),beanB(或其他监听器)负责监听这些事件,典型的如观察者模式。我们不想监听器beanB错过任何事件,那么B需要首先被初始化。 代码示例: @ComponentScan ( "com" ) public class AppConfig { } @Component public class EventA { public EventA ( ) { System . out . println ( "EventA:初始化" ) ; } } @Component public class EventB { public EventB (