JSP中的Filter拦截器和Listener监听器

JSP中的Filter拦截器和Listener监听器
JSP中的Filter拦截器和Listener监听器

JSP中的Filter过滤器和Listener监听器

1. JSP中的过滤器

1.1 什么是过滤器

过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet 或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择:

(1)以常规的方式调用资源(即,调用servlet或JSP页面)。

(2)利用修改过的请求信息调用资源。

(3)调用资源,但在发送响应到客户机前对其进行修改。

(4)阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。

1.2 过滤器的基本原理

过滤器可以对客户的请求进行处理,处理完成后,它会交给下一个过滤器处理。这样,客户的请求在“过滤器链”里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改业务数据”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话查看该用户是否有修改权限;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。

1.3 过滤器的使用

开发Servlet过滤器的步骤如下:(1)编写实现Filter接口的类;(2)在web.xml中配置Filter。

1.3.1 实现Filter接口类

Filter接口定义了以下方法:

成员描述

destory() 由Web容器调用,初始化此Filter。

init(FilterConfig filterConfig) 由Web容器调用,初始化此Filter。

doFilter(ServletRequest request, 具体过滤处理代码,其中FilterChain参数非常重要,允许通ServletResponse response,FilterChain chain) 过当前过滤器时须要调用FilterChain.doFilter()

下面示例实现一个权限过滤器,若用户尚未登录(Session中没有保存用户信息),将回到登录页面;若已经登录则继续该请求。

public class SecurityFilter implements Filter {

public void destroy() { }

public void doFilter(ServletRequest req, ServletResponse resp,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;

HttpSession session = request.getSession();

if(session.getAttribute("user")==null){

request.getRequestDispatcher("/login.jsp").forward(request, resp);

}else{

chain.doFilter(req, resp);

}

}

public void init(FilterConfig arg0) throws ServletException { }

}

1.3.2 在web.xml中配置Filter

要使得Filter生效,还必须在web.xml中对其进行配置,告知服务器,该过滤器应用在什么模式的URL请求上。

securityFilter

com.securityDemo.filter.SecurityFilter

securityFilter

/admin/*

这一段Filter的配置和Servlet的配置很相似,其中“蓝字”部份声明了须要应用的过滤器类,“红字”部份声明了该过滤器所应用的URL路径,就是说在/admin/虚拟目录下的所有请求都要经过该过滤器。

2. JSP中的监听器

Web程序在服务器运行的过程中,程序内部会发生多事件,如Web应用的启动和停止、Session会话的开始和销毁、用户请求的开始和结束等等。有时程序员需要在这些事件发生的时机执行一些处理,以完成特定的任务(如通过监控Session的开始和结束,可统计网站的在线人数)。事实上,这些事件是可以编码处理的,Servelt API提供了大量的监听器Listener来监听Web程序中发生的这些事件,程序员只要实现恰当的特定的事件监听器,就可以对该事件进行处理。

使用监听器需要两个步骤:第一,实现特定的Listener类,编写事件处理;第二,通过web.xml(或者Annotation)配置启用该Listener。

2.1. 实现Listener。

在JSP 2.0/Servlet 2.4中,共有八个Listener接口,六个Event事件类别,实现Listener时,需实现对应的接口。这些接口及其功能,详见下表所示:

监听器接口实现方法事件执行时机

ServletContextListener contextInitialized()

contextDestroyed()

ServletContextEvent

加载Web应用时(如启动服

务器后),会调用

contextInitialized(),移除Web

应用时(服务器停止),会调

用contextDestroyed ()方法。

ServletContextAttributeListener attributeAdded()

attributeReplaced()

attributeRemoved()

ServletContextAttributeEvent

向application设置属性、

置换、移除属性时依次调用这

三个方法

HttpSessionListener sessionCreated() HttpSessionEvent 在HttpSession对象创建和销

sessionDestroyed () 毁时会依次调用这两个方法

HttpSessionAttributeListener attributeAdded()

attributeReplaced()

attributeRemoved()

HttpSessionBindingEvent

向Session设置属性、

置换、移除属性时依次调用这

三个方法

HttpSessionActivationListener sessionDidActivate()

sessionWillPassivate()

HttpSessionEvent

当session对象为了资源利用

或负载平衡等原因而必须暂

时储存至硬盘或其它储存器

时(透过对象序列化),所作

的动作称之为Passivate,而硬

盘或储存器上的session对象

重新加载JVM时所采的动作

称之为Activate,所以,这两

个方法分别执行于Activeate

之后与Passivate之前

ServletRequestListener requestInitialized()

requestDestroyed()

RequestEvent

在HttpServletRequest对象创

建和销毁时会依次调用这两

个方法

ServletRequestAttributeListener attributeAdded()

attributeReplaced()

attributeRemoved()

ServletRequestAttributeEvent

向request对象设置属性、置

换、移除属性时依次调用这三

个方法

HttpSessionBindingListener valueBound()

valueUnbound()

HttpSessionBindingEvent

其实例被加入至session对象

的属性中,则调valueBound(),

若从session对象的属性中移

除,则调valueUnbound();实

现HttpSessionBindingListener

接口的类无需在web.xml配置

注意:HttpSessionBindingListener和HttpSessionListener之间的最大区别:HttpSessionListener只需要设置到web.xml中就可以监听整个应用中的所有session。HttpSessionBindingListener必须实例化后放入某一个session中,才可以进行监听。从监听范围上比较,HttpSessionListener设置一次就可以监听所有session,HttpSessionBindingListener 通常都是一对一的。

下面的示例实现了HttpSessionListener监听器,用于统计网站的在线人数。网站的在线人数往往是一个近似值,统计时一般以Session尚未过期的用户人数作为在线人数计算。

public class MyHttpSessionListener implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {

HttpSession sess = event.getSession();

ServletContext application = sess.getServletContext();

Integer online = (Integer)application.getAttribute("online");

if(online != null)

online++;

else

online = 1;

application.setAttribute("online", online);

}

public void sessionDestroyed(HttpSessionEvent event) {

HttpSession sess = event.getSession();

ServletContext application = sess.getServletContext();

Integer online = (Integer)application.getAttribute("online");

if(online != null)

online--;

else

online = 0;

application.setAttribute("online", online);

}

}

2.2 通过web.xml配置,启用监听器。

在web.xml中配置上述的监听器类。

com.demo.listener.MyHttpSessionListener

过滤器和拦截器的区别

过滤器和拦截器的区别 1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。 2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。 3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 4、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 拦截器:就是在你调用一个方法前,或者调用一个方法后,做一些业务逻辑的操作,例如打印字符串。 下面通过实例来看一下过滤器和拦截器的区别: 使用拦截器进行/admin 目录下jsp页面的过滤:

下面是我实现的拦截器: package com.test.news.util; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.test.news.action.AdminLoginAction; public class AccessInterceptor extends AbstractInterceptor { private static final long serialVersionUID = -4291195782860785705L; public String intercept(ActionInvocation actionInvocation) throws Exception { ActionContext actionContext = actionInvocation.getInvocationContext(); Map session = actionContext.getSession(); Object action = actionInvocation.getAction(); if (action instanceof AdminLoginAction) { return actionInvocation.invoke(); } //check session

安卓期末重点复习资料(EK-绝密版)

1、p4 开放手机联盟成员 ①电信运营商 ②半导体芯片商 ③手机硬件制造商 ④软件厂商 ⑤商品化公司 2、p9 Android具有自己的运行时和虚拟机,与java和.Net 运行时不同,Android运行时还可以管理进程的生命周期。Eclipse 3、p10 4、p12 在开始下载和安装Eclipse之前,应该首先确认开发主机上是否已经安装了Java 运行环境JRE 5、p26 DDMS ①Android系统中内置的调试工具 ②监视Android系统中进程、堆栈信息,查看logcat日志,实现端口转发服务和屏幕截图功能,模拟器电话呼叫和SMS短信,以及浏览Android模拟器

文件系统等 ③启动文件: /tools/ddms.bat (1)DDMS中的设备管理器 同时检控多个Android模拟器,显示每个模拟器中所以正在运行的进程 提供屏幕截图功能 (2)DDMS中的模拟器控制器 控制Android模拟器的网络速度和延迟,模拟语音和SMS短信通信 网络速率:GSM、HSCSD、PRS、EDGE、MTS、DPA和全速率 网络延迟:GPRS、EDGE、UMTS和无延迟 (3)DDMS中的模拟器控制器 电话呼入显示 SMS短信显示 (4)DDMS中的文件浏览器 上传、下载和删除Android内置存储器上的文件 显示文件和目录的名称、权限、建立时间等 (5)DDMS中的日志浏览器(LogCat) 浏览Android系统、Dalvik虚拟机或应用程序产生的日志信息,有助于快速定位应用程序产生的错误 6、p36 根目录包含四个子目录:src、assets、res和gen,一个库文件android.jar,以及两个工程文件Androidmanifest.xml和default.properties (1)src目录是源代码目录,所有允许用户修改的java文件和用户自己添加的java文件都保存在这个目录中 (2)gen目录是1.5版本新增的目录,用来保存ADT自动生成的java文件,例如R.java或AIDL文件 (3)assets目录用来存放原始格式的文件,例如音频文件、视频文件等二进制格

拦截器和过滤器的区别以及AOP概念

过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置 一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不 是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在 方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异 常的时候做业务逻辑的操作。 拦截器与过滤器的区别: 1. 拦截器是基于java的反射机制的,而过滤器是基于函数回调。 2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 3. 拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。 4. 拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 5. 在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被 调用一次 执行顺序:过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤 通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数 据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。 面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中 往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一 个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。 但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须 在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设 计让类与类之间无法联系,而不能将这些重复的代码统一起来。 也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后 再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入 代码呢?这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是 面向切面的编程。 一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到 需要时再切入对象中去,从而改变其原有的行为。 这样看来,AOP其实只是OOP的补充而已。OOP从横向上区分出一个个的类来,而AOP 则从纵向上向对象中加入特定的代码。有了AOP,OOP变得立体了。如果加上时间维度,

前置过滤器使用说明书

前置过滤器使用说明书1简介 1.1 简要说明 设计标准 2简要描述 2.1 安装 2.2 使用 3安全说明 3.1简要说明 3.2电器元件 3.3发动机 3.4压力 3.5阀门 4 运输和保存 4.1 简要说明 5 安装和调试 5.1 简要说明 5.2 组成部分 5.2.1主要结构 5.2.2滤芯 5.2.3管道系统 5.2.4可动部件 5.2.5电器元件 5.3 检查 5.3.1松动的部分 5.3.2一般的方法 6操作指导 6.1 简要说明 6.2 过程描述 6.3 过程控制 6.4 短时间停机 6.5 长时间停机 6.6 检修 6.6.1具体故障 7维护和清洗 7.1 简要说明 7.1.1开启和关闭过滤器 7.1.2滤元 7.2 耐磨件 7.2.1盖子垫片 7.2.2盖子开启装置 7.3清洗 7.3.1简要说明 7.3.2过滤器箱体 7.3.3滤元 8拆除和废弃

8.1简要说明 简介 1.1 简要说明 本手册描述的是AMAFILTER凝结水过滤器的安装、使用和维护。 本装置是按照最低温度4℃以上,在室内使用,不受外界环境影响的标准设计、制造的。 本装置符合CE标准。 1.2 设计标准 本装置是为了进行液体过滤而设计的。 设计温度:60℃ 设计压力:40bar 本装置产生的音量不会超过70分贝。 简要描述 2.1 安装 过滤器是成套供货,内部元件分开包装的。安装内部元件以前,应按照正确的流向将过滤器安装于管道系统中。建议在过滤器的进出口安装压力表,这样可以通过过滤器的压降来确定运行的频率。 2.2 使用 将过滤器箱体内注满凝结水。用泵将凝结水压入滤芯,滤出液通过滤液出口离开过滤器。固体颗粒留在滤芯内或被滤料截留,这取决于使用的滤芯结构。 当滤芯两端的最大压差达到2.5bar,滤芯就失效了,需要进行更换。 经常的反洗可以提高滤芯的使用寿命。 3 安全说明 3.1 简要说明 为了避免伤害: -- 遵照当地的安全规程进行操作。 -- 在操作和维护时,应当使用一切安全设施。 -- 了解清楚装置的可动部分。 -- 在开始使用本装置时,要确认装置是处于无压状态。参照3.4节。 -- 在开启盖子的时候,要确认没有人会从盖子开启的方向过来。

连续过滤器使用说明

连续过滤器使用说明 连续过滤器是全自动清洗过滤器,具有自动反冲洗、结构紧凑、适用范围广、过滤精度高、自动化程度高、使用寿命长、安装维护简单等特点。系统采用升流式流动床过滤原理和单一均质滤料,过滤与洗砂同时进行,能够24小时连续自动运行,无需停机反冲洗,巧妙的提砂和洗砂结构代替了传统大功率反冲洗系统,能耗极低。系统无需维护和看管,管理简便。 一、产品特点 · 24小时连续运行,不需停机反冲洗及相应的设备。 ·系统结构及配置简单,设计、安装方便。 ·可实现无人操作,维护工作极少。 ·特选材质,使用寿命长。 ·均质滤料,过滤效果稳定良好。 二、工作原理 高效流砂过滤器的运行可分为原水过滤和滤料清洗再生两个相对独立又同时进行的过程。二者在同一过滤器的不同位置完成,前者动力依靠高位差或泵的提升,而后者则通过压缩空气完成的。 1.源水过滤:当原水由高位槽自流或提升泵泵入过滤器底部的配水环,经导流槽和锥形分配器均匀向上逐渐逆流经过滤床,原水中的杂质被不断截留、吸咐,最终滤液从过滤器顶部的溢堰流排放,完成过滤过程。 2.滤料清洗和再生:当过滤不断进行时,原水中的杂质也不断地被累积和截留在滤料表面,而滤污量最大的是底部的滤料。设在过滤器底部的压缩空气提砂装置首先将此部分滤料通过特殊材质的洗砂管分批定量提送至顶部的三相(水、气和砂)分离器中,空气排放,水和砂再进入相连的洗砂器中清洗,洗砂水由

单独的管道排放,洗干净的砂又重新散落分布到整个滤床表面,实现了滤料的清洗和循环流动的过程。 三、工艺参数 四、工艺控制 复合生物滤池出水直接自流进入精滤系统过滤,该系统可以自动反冲洗。 五、操作规程 1)系统检查 系统运行前检查进出水阀门开闭状况。 2)开进、出水阀门。 3)观察系统的运行情况,确保全自动清洗能顺利完成。

ssh中自定义监听器,拦截器,过滤器

SSH中自定义监听器、拦截器、过滤器 1、自定义监听器 a)自定义监听器有哪些 监听器的定义是在web.xml中完成,其实做过ssh项目的人并不陌生监听器,主要是因为spring提供了监听器就是 org.springframework.web.context.ContextLoa derListener 如果我们想自己定义一个监听器来完成我们自己的特定功能怎么办呢,struts为我们提供了自定义servlet监听器,他们主要有 (1)ServletContextListener Servlet的上下文监听,它主要实现监听ServletContext的创建和删除。该接口提供了两种方法 1.contextInitialized(ServletContextEvent event); 通知正在收听的对象,应用程序 已经被加载和初始化。 2.contextDestroyed(ServletCotextEvent event); 通知正在收听的对象,应用程序 已经被载出,即关闭。 (2)ServletAttributeListener 主要实现监听ServletContext属性的增加,删除和修改。该接口提供了一下3个方法 1.attributeAdded(ServletContextAttributeEvent event); 当有对象加入 Application的范围时,通知正在收听的对象 2.attributeReplaced(ServletContextAttributeEvent event); 当在application的范围有 对象取代另一个对象的时,通知正在收听的对象 3.attributeRemoved(ServletContextAttributeEvent event); 当有对象从application 的范围移除时,通知正在收听的对象 (3)HttpSessionListener HTTP会话监听,该接口实现监听HTTP会话创建、销毁。该接口提供了一下两种方法 1.sessionCreated(HttpSessionEvent event); 通知正在收听的对象,session 已经被加载及初始化 2. sessionDestoryed(HttpSessionEvent event)l 通知正在收听的对象, session已经被载出(HttpSessionEvent类的主要方法是getSession(),可以使用该方法回传一个session对象)

structs2知识点

Struts2原理 上图来源于Struts2官方站点,是Struts 2 的整体结构。 Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。 (1)核心控制器:FilterDispatcher

FilterDispatcher是Struts2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter 会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts2框架处理。 Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。 Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action 时,定义了该Action的name属性和class属性,其中name属性决定了该Action 处理哪个用户请求,而class属性决定了该Action的实现类。 Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。 (2)一个请求在Struts2框架中的处理大概分为以下几个步骤 1 .客户端初始化一个指向Servlet容器(例如Tomcat)的请求,即HttpServletRequest请求。 2 .这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3. 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 .如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 .ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 6 .ActionProxy创建一个ActionInvocation的实例。 7 .ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8 .一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

过滤器使用说明

自力式调压阀组(蒸汽减压阀组) 产品介绍: 自力式调压阀(蒸汽减压阀)不是孤零零安装在管道上,而是配合其他阀门或管道联合安装在系统中,通常有单路自力式调压阀组(蒸汽减压阀组)和双路自力式调压阀组(蒸汽减压阀组)两种,用户可以根据需要订购 自力式调压阀组(蒸汽减压阀组): 一、用于各种气体及低粘度液体的减压 1、阀前手动球阀 2、阀前压力表 3、过滤器(介质确认无颗粒可省略) 4、自力式减压阀 5、阀后压力表 6、阀后手动球阀 7、旁通球阀 备注:1、根据需要,阀组后还可安装止回阀、安全阀(是否允许而定) 2、旁通管可根据现场空间布置在与自力式阀同一水平面上或同一垂直面上 二、用于各种高粘度液体的介质减压

相对于气体减压而言,只是自力式倒装而已 用于蒸汽减压的自力式减压稳压阀组 冷凝器使用前请灌满冷水 □双路自力式调压阀组(蒸汽减压阀组) 自力式调压阀组(蒸汽减压阀组)装置中双路减压只用在工况特别重要,系统不允许出故障的系统中,平常一路工作,一路关闭备用,只要流量足够,不需要同时开启两路减压,以免出现阀开度过小产生震荡和噪声,影响阀使用寿命。 一、用于各种气体及低粘度液体的减压

1、过滤器 2、手动球阀 3、压力表 4、自力式压力调节阀 5、压力表 6、手动球阀(安装时件1前用户自配手动球阀) 二、用于各种高粘度液体介质的减压 同气体减压,只是自力式阀门倒装便可 三、用于自力式调压阀组(蒸汽减压阀组) 安装时件1前用户自配手动截止阀 □设计、安装减压阀组注意事项 安装时,应注意以下几点:

(1)阀在气体或低粘度液体介质中使用时,通常ZZY型自力式压力调节阀为直立安装在水平管上,当位置空间不允许时才倒装或斜装。 (2)阀在蒸汽或高粘度液体介质中使用时,通常ZZY型自力式压力调节阀为倒立安装在水平管上,冷凝器(蒸汽用自力式)应高于调压阀的执行机构而低于阀前后接管。使用前冷凝器应灌满冷水,以后约3个月灌水一次。 (3)自力式调压阀(蒸汽减压阀)在取压点应取在调压阀适当位置,阀前调压应大于2倍管道直径,阀后调压应大于6倍管道直径。 (4)为便于现场维修及操作,调压阀四周应留有适当空间。 (5)当介质为洁净气体或液体时,阀前过滤器可不安装。 (6)调压阀通径过大(DN≥100时),应有固定支架。 (7)当确认介质很洁净时,件3可不安装。 (8)位置实在不允许时,傍通阀(手动)可以省略(我们不推荐). (9)阀组后根据需要用户可选配止回阀、安全阀等 (10)蒸汽自力式减压稳压阀门根据计算通径可以小于管道直径,而截止阀、切断球阀、傍通阀、过滤器则不能小于管道直径。 □外形尺寸 自力式调压阀组(蒸汽减压阀组)关键是总长L的确定,至于自力式阀门的尺寸见ZZYP(M、N)篇 以控制蒸汽为例,控制其它介质总长类同,当然,尺寸L用户也可根据需要定 采用自力式蒸汽减压阀,因简单方便,维护量小,特别是能适用在无电无气及防爆的场合,因此在蒸汽减压稳压的系统中得到了广泛的应用,见以下特点: 1、蒸汽减压阀压力设定点可在压力调节范围内现场调节; 2、蒸汽减压阀阀体部分与执行机构采用模块化设计,可根据现场要求变化更改执行机构或弹簧,实 现压力调节范围在一定范围内快速更换; 3、ZZYP自力式压力调节阀一般采用波纹管作为压力平衡元件,阀前、后压力变化不影响阀芯的受力 情况,大大加快阀门的响应速度,从而提高阀门的调节精度; 减压阀

监听器与过滤器

监听器与过滤器 监听器简介 什么是监听器 1.能监听某个对象的状态变化的组件 2.监听域对象的变化 监听器相关的概念 1.事件源:被监听的对象- request、session、servletContext 2.监听器:监听事件源的对象- 8个监听器 3.注册监听器:监听器与事件源相绑定 4.响应行为:监听到事件源变化时,去做什么事情 监听器划分 1.三个监听域对象的创建与销毁ServletContextListener HttpSessionListener ServletRequestListener 2.三个监听域对象当中属性变化ServletContextAttributeListener HttpSessionAttributeListener ServletRequestAttributeListener

域监听器 ServletContext域监听器监听ServletContext域的创建与销毁的监听器ServletContextListenerServletContext域生命周期:服务器启动创建、服务器关闭销毁监听器的编写步骤: 1.编写一个监听器类去实现监听器接口 2.覆盖监听器的方法 3.需要在web.xml中进行配置 作用 1.初始化的工作:初始化对象、初始化数据、加载数据库驱动、连接池的初始化 2.加载一些初始化的配置文件 3.任务调度

HttpSessionListener 监听HttpSession域的创建与销毁的监听器HttpSessionListener HttpSession的生命周期:第一次调用request.getSession时创建、服务器关闭session 过期或手动销毁 应用场景:记录访问人数 过滤器介绍 什么是过滤器 1.filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行 2.可以对目标资源访问前后进行逻辑处理 过滤器编写步骤 1.编写一个过滤器的类实现Filter接口 2.实现接口中尚未实现的方法(主要是DoFilter方法)

java web拦截器配置及原理

java web 过滤器 (2013-03-01 10:04:24)本人转载收藏 ServletFilter,Servlet过滤器: Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术可以对web服务器管理的所有web资源:Jsp, Servlet, 静态图片文件或静态html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL 级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。ServletAPI提供了一个Filter接口,实现这个接口的Servlet就是一个过虑器。过虑器在WEB应用访问流程中如下: 由图可见,只要我们编写了过滤器,可以对一切访问WEB应用的连接进行过滤。比如,用户访问权限、统一WEB编码… Filter是如何实现拦截的? 实现了Filter接口的Servlet是过滤器,因为Filter接口有一个 doFilter(ServletRequest request, ServletResponse response, FilterChain chain)方法,只要用户访问我们在web.xml中配置的映射目录,服务器便会调用过滤器的doFilter方法。我们在这里实现过虑功能代码,当我们调用 chain.doFilter(request, response);方法时,将请求反给服务器服务器再去调用相当的Servlet。如果我们不调用此方法,说明拒绝了用户的请求。 Filter开发入门: 在WEB应用中添加一个过滤器,有两步工作需要完成: 1.编写实现了Filter接口的Servlet——过滤器。 2.在web.xml中配置过滤器: (1). 标签添加器 (2). 注册过滤器的映射目录(过滤目录),与注册Servlet一样。 在实际WEB应用中,我们可能需要编写多个过虑器,比如:1.统一WEB编码的过滤器(过虑所有访问)2.用户访问权限管理。这样,用户的访问需要选经过过滤器1过滤然后再经过过滤器2过滤。doFilter中有一个FilterChain参数,这个参数是服务器根据web.xml中配置的过滤器,按照先后顺序生成的过滤器链。当我们在doFilter方法中调用chain.doFilter(request, response);方法时,服务器会查找过滤链中是否还有过滤器,如果有继续调用下一个过滤器,如果没有将调用相应的Servlet处理用户请求。 Filter接口的其他细节: 1.Filter的Init(FilterConfig filterConfig)方法: 与Servlet的Init方法一样,在创建时被调用,之后被保存在内存中直至服务器重启或关闭时Filter实例才会被销毁。与Servlet不同之处在于,服务器启动时就会实例化所有Filter,而Servlet中有当用户第一次访问它时才会被实例化。我们通过在web.xml使用对Filter配置的初始化参数,可以通过FilterConfig来获得。 FilterConfig的方法有: String getFilterName():得到filter的名称。

web.xml配置解析

一.监听器: 1.ContextLoaderListener 配置信息: org.springframework.web.context.ContextLoaderListener 配置解释: ContextLoaderListener的作用就是启动Web容器时,自动装ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。至于ApplicationContext.xml这个配置文件部署在哪,如何配置多个xml文件,书上都没怎么详细说明。现在的方法就是查看它的API文档。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。看看它的API说明 第一段说明ContextLoader可以由ContextLoaderListener和ContextLoaderServlet 生成。如果查看ContextLoaderServlet的API,可以看到它也关联了ContextLoader 这个类而且它实现了HttpServlet接口。 第二段,ContextLoader创建的是XmlWebApplicationContext这样一个类,它实现的接口 WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext-> BeanFactory,这样一来spring中的所有bean都由这个类来创建。 第三段,讲如何部署applicationContext的xml文件,如果在web.xml中不写任何参数配置信息,默认的路径是"/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml 里加入contextConfigLocation这个context参数: view plaincopy to clipboardprint? contextConfigLocation /WEB-INF/classes/applicationContext-*.xml

过滤器与拦截器的区别

过滤器与拦截器的区别 过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者 struts的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。 拦截器与过滤器的区别: 1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。 2.拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 3.拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起 作用。 4.拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。 5.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器 初始化时被调用一次 执行顺序:过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。 面向切面编程(AOP是Aspect Oriented Program的首字母缩写),我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。 但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。

过滤器使用说明

冷凝冷却器 一、产品简介:冷凝冷却器是一种高效换热设备,主要用于把二次 蒸汽冷凝冷却下来进行回收。可分为立式或卧式,设备结构简 单,操作简便,占地面积小。 二、结构特征 其结构是由冷凝及冷却组成一体,内部结构可分单返程及多返程。壳程通入冷却水、管程走二次蒸汽,逆向进行汽液交换,达到换热效果。它是由封头、筒体、管及管板等组成。整体是由管道、阀门、仪表连接为一体。 三、技术参数

板式换热器 板式换热器是由一系列具有一定波纹形状的金属片叠装而成的一种新型高效换热器。各种板片之间形成薄矩形通道,通过半片进行热量交换。板式换热器是液—液、液—汽进行热交换的理想设备。它具有换热效率高、热损失小、结构紧凑轻巧、占地面积小、安装清洗方便、应用广泛、使用寿命长等特点。在相同压力损失情况下,其传热系数比列管式换热器高3-5倍,占地面积为管式换热器的三分之一,热回收率可高达90%以上。 1简介 板式换热器高清图 板式换热器(Plate Type Heat Exchanger),本成套设备由板式换热器、平衡槽、离心式卫生泵、热水装置(包括蒸汽管路、热水喷入器)、支架以及仪表箱等组成。用于牛奶或其它热敏感性液体之杀菌冷却。欲处理的物料先进入平衡槽,经离心式卫生泵送入换热器、经过预热、杀菌、保温、冷却各段,凡未达到杀菌温度的物料,由仪表控制气动回流阀换向、再回到平衡槽重新处理。物料杀菌温度由仪表控制箱进行自动控制和连续记录,以便对杀菌过程进行监视和检查。此设备适用于对牛奶预杀菌、巴式杀菌。 板式换热器 板式换热器的型式主要有框架式(可拆卸式)和钎焊式两大类,板片形式主要有人字形波纹板、水平平直波纹板和瘤形板片三种。 2基本结构

struts2面试题(自己总结)

Struts2面试题 1、struts2工作流程 Struts 2框架本身大致可以分为3个部分: 核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。核心控制器FilterDispatcher是Struts 2框架的基础,

包含了框架内部的控制流程和处理机制。 业务控制器Action和业务逻辑组件是需要用户来自己实现的。 用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件, 供核心控制器FilterDispatcher来使用。 Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同, 所以说Struts 2是WebWork的升级版本。基本简要流程如下: 1 、客户端初始化一个指向Servlet容器的请求; 2、这个请求经过一系列的过滤器(Filter) (这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器, 这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 、接着FilterDispatcher被调用, FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4、如果ActionMapper决定需要调用某个Action, FilterDispatcher把请求的处理交给ActionProxy 5、ActionProxy通过Configuration Manager询问框架的配置文件, 找到需要调用的Action类 6、ActionProxy创建一个ActionInvocation的实例。 7、ActionInvocation实例使用命名模式来调用, 在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP 或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 9、响应的返回是通过我们在web.xml中配置的过滤器 10、如果ActionContextCleanUp是当前使用的,则FilterDispatecher将不会清理sreadlocal ActionContext;如果ActionContextCleanUp不使用,则将会去清理sreadlocals。 2、说下Struts的设计模式 MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生 成动态的网页,返回给客户。

Y型过滤器说明书

Y型过滤器 Y型过滤器是输送介质的管道系列不可缺少的一种装置,通常安装在减压阀、泄压阀、定水位阀或其它设备的进口端,用来消除介质中的杂质,以保护阀门及设备的正常使用。该过滤器具有结构先进,阻力小,排污方便等特点。适用介质可为水,油、气。可按用户要求制作滤网,其外型基本相同(Y型),内部件全部采用不锈钢,坚固耐用。当需要清洗时,只要将可拆卸的滤筒取出,去除滤出的杂质后,重新装入即可,使用维护极为方便。该过滤器体形小、滤眼细、阻力小、效果高、安装检修方便、成本低、并 排污时间短,对一般小型号者,只需5-10分钟。 一般通水网为18-30目/cm2,通气网为40-100目/cm2,通油网为100-300目/cm2。 产品结构 主要技术参数 壳体材质黄铜碳钢不锈钢 公称通径15~500mm 滤框滤网材质不锈钢 密封件材质耐油石棉、丁腈橡胶、聚四氟乙烯 工作温度(℃)-30~380-80~425-80~450 公称压力(MPa) 1.6~10(150Lb~600Lb) 过滤精度(目/in)10~300

外形尺寸 分类说明 本过滤器有壳体、排污盖、滤芯、滤网等组成。网眼总面积是入口管首截面积的3-4倍。 用于管道清除输送介质:热水、冷水、蒸汽、压缩空气各种机械杂质,特别是锅炉房循环水泵前均需安此产品,为了清除系统中的机械杂质,使设备和管道免受堵塞和磨损,在额定流速下压损为0.05-0.1米水柱。用于各种用汽设备,如:蒸汽仪表、疏水阀,压缩空气和各类用汽设备前均需安装。在额定流速下压损为 0.05-0.2米水柱。 油过滤器该主品滤眼密度有多种。例如:64孔、200孔、300孔/Cm2。用于各种输油管道上一切设备。例如:油泵、油锅炉前均需安装,在额定流速下压损为0.05-0.1米水柱。 安装示例

实验五、过滤器与监听器

实验五:过滤器与监听器 一、实验目的 1.掌握过滤器的创建与配置方法; 2.掌握监听器的创建与配置方法; 二、实验内容 2.1 创建Web项目 1. 打开MyEclipse,创建一个Web Project,命名为ServletTest。 2.1 SecurityFilter 详细过程见securityFilter.rmvb 1.过滤器SecurityFilter的代码如下: package filters; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; public class SecurityFilter implements Filter { private FilterConfig filterConfig; public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; // 获得用户输入的密码 String pwdInput = httpRequest.getParameter("password"); // 获得filter配置参数中的rightpass的值 String rightPwd = filterConfig.getInitParameter("rightpass"); if (!rightPwd.equals(pwdInput)) {

JSP中的Filter拦截器和Listener监听器

JSP中的Filter过滤器和Listener监听器 1. JSP中的过滤器 1.1 什么是过滤器 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。过滤器可附加到一个或多个servlet 或JSP页面上,并且可以检查进入这些资源的请求信息。在这之后,过滤器可以作如下的选择: (1)以常规的方式调用资源(即,调用servlet或JSP页面)。 (2)利用修改过的请求信息调用资源。 (3)调用资源,但在发送响应到客户机前对其进行修改。 (4)阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。 1.2 过滤器的基本原理 过滤器可以对客户的请求进行处理,处理完成后,它会交给下一个过滤器处理。这样,客户的请求在“过滤器链”里逐个处理,直到请求发送到目标为止。例如,某网站里有提交“修改业务数据”的网页,当用户填写完修改信息并提交后,服务器在进行处理时需要做两项工作:判断客户端的会话查看该用户是否有修改权限;对提交的数据进行统一编码。这两项工作可以在由两个过滤器组成的过滤链里进行处理。当过滤器处理成功后,把提交的数据发送到最终目标;如果过滤器处理不成功,将把视图派发到指定的错误页面。 1.3 过滤器的使用 开发Servlet过滤器的步骤如下:(1)编写实现Filter接口的类;(2)在web.xml中配置Filter。 1.3.1 实现Filter接口类 Filter接口定义了以下方法: 成员描述 destory() 由Web容器调用,初始化此Filter。 init(FilterConfig filterConfig) 由Web容器调用,初始化此Filter。 doFilter(ServletRequest request, 具体过滤处理代码,其中FilterChain参数非常重要,允许通ServletResponse response,FilterChain chain) 过当前过滤器时须要调用FilterChain.doFilter() 下面示例实现一个权限过滤器,若用户尚未登录(Session中没有保存用户信息),将回到登录页面;若已经登录则继续该请求。 public class SecurityFilter implements Filter {

相关文档
最新文档