文章过滤器
① totto过滤器的工作原理是什么
鱼缸复中需要换水的原因是因为过滤制器中培养的硝化细菌只能分解由鱼粪,余粮,尸体转化的氨氮,氨氮被分解为亚硝酸盐再继而被分解为硝酸盐,因为无法处理硝酸盐,当硝酸盐浓度超标时就需要换水来降低硝酸盐含量。而据说to tto过滤器可以处理水中的硝酸盐,实现反硝化,所以才向外宣城可以做到不换水,买一款回去试试就知道了,试玩记得回来评论。
② 哥们你好:刚刚看了你的文章,关于鱼缸高效过滤器制作的方法,我是初次养鱼爱好者,对于你所说的方法没懂
你发错地方了。
应该点击作者名字,选择留言或发消息,
直接与作者联系。
③ 如何隐藏WordPress网站的文章和页面
如果不想通过代码实现隐藏可选文章和页面的标题,可以安装并激活
WordPress
Hide
Title
plugin插件
,在相应页面或文章的编辑窗口中,点击WordPress管理下的文章和页面菜单下需要编辑的项目即可。在编辑窗口下,有一个隐藏标题的自定义区块:
你要做的就是选中这个复选框并单击更新或发布按钮,插件将隐藏单次PV上的标题。这意味着,主页或其他分类页面上仍然会显示,只是单次PV上不再显示了。
如果你希望创建一个简单的、不显示文章标题的登录页面,这种方法确实非常方便。
隐藏所有的WordPress文章和页面标题
如果你想隐藏单一页面上所有的文章和页面标题,可以通过修改主题来实现。
最简单的方法就是在WordPress的
functions.php
文件中加一段下面的代码:
这个过滤器只是在显示单一文章或页面时的
post_class()function
中增加了一个类
.hidetitle
。但是,这个过滤器只有在WordPress主题支持post
class的情况下有效。如果你希望只对文章有效,就删除代码中的
||
is_page()。
添加这个function之后,还需要在主题样式表中添加这个CSS规则。
在上面的CSS中,我们使用了显示CSS属性来隐藏文章和页面标题。但是,这个CSS规则仅适用于WordPress主题使用的文章和页面标题是条目标题(
entry-title
)。在谷歌Chrome浏览器中打开文章,将鼠标移到文章标题上,右键单击并选择审查元素,你会看到页面的源代码中文章标题的代码,其中就有你WordPress主题所使用的CSS类。
如果主题使用
article-title
作为文章标题的CSS类,只需要如下简单更改CSS:
以上方法适用于大部分WordPress主题。但是这些方法只是隐藏标题并不能阻止加载这些标题。如果你想移除WordPress主题模板上的文章和页面标题,就需要删除主题文件中的the_title代码了。
如果你只是希望在单一PV上实现,那只需要在single.php文件中修改。
④ 高效过滤器的过滤原理是什么
高效过滤器的过滤层捕集微粒的作用主要有5种:
1.拦截效应:当某一粒径的粒子运动到纤回维表面附近答时,其中心线到纤维表面的距离小于微粒半径,灰尘粒子就会被滤料纤维拦截而沉积下来。
2.惯性效应:当微粒质量较大或速度较大时,由于惯性而碰撞在纤维表面而沉积下来。
3.扩散效应:小粒径的粒子布朗运动较强而容易碰撞到纤维表面上。
4.重力效应:微粒通过纤维层时,因重力沉降而沉积在纤维上。
5.静电效应:纤维或粒子都可能带电荷,产生吸引微粒的静电效应,而将粒子吸到纤维表面上。
随着捕集灰尘越来越多,则滤层的过滤效率也随着下降,而阻力增大;当到一定的阻力值或效率降到某值时,过滤器就需及时加以更换,以保证净化洁净度的要求。
高效过滤器的应用范围主要是电子、半导体、精密机械、制药、医院、食品等行业中对洁净要求较高的医药、民用或工业洁净场所的末端过滤。由于高效过滤器一般作为过滤末端,因此,对高效过滤器的各项要求也最为严格,当然则需要额外“关照”。
还想了解更多,可上网络搜索:"KLCFILTER",第一个网站有高效过滤器相关技术文章;
⑤ 重复的内容过滤器:它是什么以及它是如何工作
这种行为是在网页,其中有一个接收在搜索引擎更好的结果的其他网页的复制品见过许多次。很多人以为创建多个或类似的同一页的副本要么增加他们的机会获得搜索引擎中,或帮助他们获得多个列表,由于更多的关键字的存在。
为了使搜索更符合用户,搜索引擎使用一个过滤器,删除从搜索结果中重复的内容页,垃圾邮件与它一起。不幸的是,好,勤劳的管理员曾受骗的搜索引擎施加的删除重复的内容过滤器。正是这些网站管理员谁在不知情的垃圾邮件的搜索引擎,当有一些事情可以做,以避免被过滤掉了。为了让您真正了解的概念,你可以实现,以避免重复的内容过滤器,您需要知道如何过滤器。
首先,我们必须明白一点,就是“重复内容处罚”,实际上是名不副实。当我们提及在搜索引擎排名的惩罚,我们要谈的是从一个网页中扣除,以得出一个整体的相关性得分。但在现实中,重复内容的网页不会受到惩罚。相反,他们只是过滤,你这样将使用筛子,以消除不必要的颗粒。有时候,“好意外颗粒过滤掉。
具有相同的页面网站-这些网页被认为是重复的,以及网站,另一个是一致的网站在互联网上也被认为是垃圾邮件。联盟网站具有相同的外观和感觉含有相同的内容,例如,是特别容易受到重复的内容过滤器。另一个例子是一个门页的网站。很多时候,这些门口是倾斜的目标网页的版本。然而,这些目标网页是相同的其他目标网页。一般来说,门页的目的是用于垃圾邮件的搜索引擎,以操纵搜索引擎结果。 抄袭内容-抄袭内容正在从一个网站的内容和重新包装它,使它看起来不同,但在本质上它只不过是一个重复的网页。随着互联网的普及上的博客和这些博客聚合,刮越来越成为一个问题的搜索引擎。 电子商务产品说明-在那里,许多电子商务网站使用的产品,数百或在同一市场竞争的其他电子商务商店数千制造商的说明使用过。这种重复的内容,而较难发现,仍然被认为垃圾邮件。 物品配送-如果你发表一篇文章,它被复制,并在互联网上的所有投入,这是件好事,对不对?不一定所有的网站功能的同一篇文章。这种重复的内容类型可能会非常棘手,因为尽管雅虎,MSN确定原始文章来源,并认为它在搜索结果中最相关,谷歌等其他搜索引擎可能不会,据一些专家。那么,如何做了搜索引擎的重复内容过滤器的工作?从本质上讲,当一个搜索引擎机器人爬行一个网站,它读取的网页,并在其数据库存储的信息。然后,它比较其研究结果的其他资料,在其数据库中的。这取决于几个因素,如一个网站的整体相关性得分,然后确定它是重复的内容,然后出网页或网站,资格成为垃圾邮件过滤器。不幸的是,如果您的网页不是垃圾邮件,但有足够的相似内容,他们仍然可以被视为垃圾邮件。
如果您使用您的内容分发的文章,考虑如何相关的文章就是您的整体网页,然后整个网站。有时候,简单地增加自己的评注的条款就足以避免重复的内容过滤器,在类似的页面检查器可以帮助您使您的内容独特。此外,更多的有关条款,您可以添加到赞扬第一篇文章,就越好。网站搜索引擎看看整个网页及其关系的整体,只要您不完全照搬别人的网页,你应该罚款。
如果你有一个电子商务网站,你应该写你的产品的原始描述。这可能是很难做到,如果你有很多产品,但它确实是必要的,如果你想避免重复的内容过滤器。这里还有一个例子,为什么使用类似网页Checker是一个好主意。它可以告诉你,你可以改变您的描述,以便为您的网站有独特的原始内容。这也适用抄袭内容也良好。许多抄袭内容的网站提供新闻。与同类页面检查器,您可以轻松地确定这个消息的内容是类似的,然后改变它,使其独特的。
不要依赖于附属网站的是相同的其他网站或创建相同的桥页。这些类型的行为不仅立即过滤的垃圾邮件,但一般不存在页的比较作为如果其他网站或网页是重复发现整个网站,让您的整个网站陷入困境。
重复的内容过滤有时是很困难的网站上不打算垃圾邮件的搜索引擎。但是,最终由你来帮助搜索引擎确定您的网站是独一无二的可能。
⑥ DRUPAL7 相关文章调用,想通过一个字段来调用相同内容的文章,请问用上下文过滤器能实现吗如何实现
安装 token 模块, 把 q参数放入URL链接里, 然后通过上下来过滤,通过URL链接获取这个参数, 不过这样URL链接会更深一层。
也关注看有没有更好的解决办法。
⑦ 什么是java过滤器! 它的功能和作用是什么啊
Servlet API 很久以前就已成为企业应用开发的基石,而 Servlet 过滤器则是对 J2EE 家族的相对较新的补充。在 J2EE 探索者 系列文章的最后一篇中,作者 Kyle Gabhart 将向您介绍 Servlet 过滤器体系结构,定义过滤器的许多应用,并指导您完成典型过滤器实现的三个步骤。他还会透露 bean 的一些激动人心的变化,预计刚发布的 Java Servlet 2.4 规范会引入这些变化。
Servlet 过滤器是可插入的 Web 组件,它允许我们实现 Web 应用程序中的预处理和后期处理逻辑。过滤器支持 servlet 和 JSP 页面的基本请求处理功能,比如日志记录、性能、安全、会话处理、XSLT 转换,等等。 过滤器最初是随 Java Servlet 2.3 规范发布的,最近定稿的 2.4 规范对它进行了重大升级。在这 J2EE 探索者 系列文章的最后一篇中,我将向您介绍 Servlet 过滤器的基础知识 —— 比如总体的体系结构设计、实现细节,以及在 J2EE Web 应用程序中的典型应用,还会涉及一些预计最新的 Servlet 规范将会提供的扩展功能。
Servlet 过滤器是什么?
Servlet 过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 组件,这些功能虽然很重要,但是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性, 等等。过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件通过一个配置文件来声明,并动态地处理。
Servlet 过滤器中结合了许多元素,从而使得过滤器成为独特、强大和模块化的 Web 组件。也就是说,Servlet 过滤器是:
声明式的:过滤器通过 Web 部署描述符(web.xml)中的 XML 标签来声明。这样允许添加和删除过滤器,而无需改动任何应用程序代码或 JSP 页面。
动态的:过滤器在运行时由 Servlet 容器调用来拦截和处理请求和响应。
灵活的:过滤器在 Web 处理环境中的应用很广泛,涵盖诸如日志记录和安全等许多最公共的辅助任务。过滤器还是灵活的,因为它们可用于对来自客户机的直接调用执行预处理和后期处 理,以及处理在防火墙之后的 Web 组件之间调度的请求。最后,可以将过滤器链接起来以提供必需的功能。
模块化的:通过把应用程序处理逻辑封装到单个类文件中,过滤器从而定义了可容易地从请求/响应链中添加或删除的模块化单元。
可移植的:与 Java 平台的其他许多方面一样,Servlet 过滤器是跨平台和跨容器可移植的,从而进一步支持了 Servler 过滤器的模块化和可重用本质。
可重用的:归功于过滤器实现类的模块化设计,以及声明式的过滤器配置方式,过滤器可以容易地跨越不同的项目和应用程序使用。
透明的:在请求/响应链中包括过滤器,这种设计是为了补充(而不是以任何方式替代)servlet 或 JSP 页面提供的核心处理。因而,过滤器可以根据需要添加或删除,而不会破坏 servlet 或 JSP 页面。
所以 Servlet 过滤器是通过一个配置文件来灵活声明的模块化可重用组件。过滤器动态地处理传入的请求和传出的响应,并且无需修改应用程序代码就可以透明地添加或删除它 们。最后,过滤器独立于任何平台或者 Servlet 容器,从而允许将它们容易地部署到任何相容的 J2EE 环境中。
在接下来的几小节中,我们将进一步考察 Servlet 过滤器机制的总体设计,以及实现、配置和部署过滤器所涉及的步骤。我们还将探讨 Servlet 过滤器的一些实际应用,最后简要考察一下模型-视图-控制器(MVC)体系结构中包含的 Servlet 过滤器,从而结束本文的讨论。
Servlet 过滤器体系结构
正如其名称所暗示的,Servlet 过滤器 用于拦截传入的请求和/或传出的响应,并监视、修改或以某种方式处理正在通过的数据流。过滤器是自包含、模块化的组件,可以将它们添加到请求/响应链中, 或者在无需影响应用程序中其他 Web 组件的情况下删除它们。过滤器仅只是改动请求和响应的运行时处理,因而不应该将它们直接嵌入 Web 应用程序框架,除非是通过 Servlet API 中良好定义的标准接口来实现。
Web 资源可以配置为没有过滤器与之关联(这是默认情况)、与单个过滤器关联(这是典型情况),甚至是与一个过滤器链相关联。那么过滤器究竟做什么呢? 像 servlet 一样,它接受请求并响应对象。然后过滤器会检查请求对象,并决定将该请求转发给链中的下一个组件,或者中止该请求并直接向客户机发回一个响应。如果请求被 转发了,它将被传递给链中的下一个资源(另一个过滤器、servlet 或 JSP 页面)。在这个请求设法通过过滤器链并被服务器处理之后,一个响应将以相反的顺序通过该链发送回去。这样就给每个过滤器都提供了根据需要处理响应对象的机 会。
当过滤器在 Servlet 2.3 规范中首次引入时,它们只能过滤 Web 客户机和客户机所访问的指定 Web 资源之间的内容。如果该资源然后将请求调度给其他 Web 资源,那就不能向幕后委托的任何请求应用过滤器。2.4 规范消除了这个限制。Servlet 过滤器现在可以应用于 J2EE Web 环境中存在请求和响应对象的任何地方。因此,Servlet 过滤器可以应用在客户机和 servlet 之间、servlet 和 servlet 或 JSP 页面之间,以及所包括的每个 JSP 页面之间。这才是我所称的强大能力和灵活性!
实现一个 Servlet 过滤器
他们说“好事多磨”。我不知道“他们”指的是谁,或者这句古老的谚语究竟有多真实,但是实现一个 Servlet 过滤器的确要经历三个步骤。首先要编写过滤器实现类的程序,然后要把该过滤器添加到 Web 应用程序中(通过在 Web 部署描述符 /web.xml 中声明它),最后要把过滤器与应用程序一起打包并部署它。我们将详细研究这其中的每个步骤。
1. 编写实现类的程序
过滤器 API 包含 3 个简单的接口(又是数字 3!),它们整洁地嵌套在 javax.servlet 包中。那 3 个接口分别是 Filter、FilterChain 和 FilterConfig。从编程的角度看,过滤器类将实现 Filter 接口,然后使用这个过滤器类中的 FilterChain 和 FilterConfig 接口。该过滤器类的一个引用将传递给 FilterChain 对象,以允许过滤器把控制权传递给链中的下一个资源。FilterConfig 对象将由容器提供给过滤器,以允许访问该过滤器的初始化数据。
为了与我们的三步模式保持一致,过滤器必须运用三个方法,以便完全实现 Filter 接口:
init():这个方法在容器实例化过滤器时被调用,它主要设计用于使过滤器为处理做准备。该方法接受一个 FilterConfig 类型的对象作为输入。
doFilter():与 servlet 拥有一个 service() 方法(这个方法又调用 doPost() 或者 doGet())来处理请求一样,过滤器拥有单个用于处理请求和响应的方法——doFilter()。这个方法接受三个输入参数:一个 ServletRequest、response 和一个 FilterChain 对象。
destroy():正如您想像的那样,这个方法执行任何清理操作,这些操作可能需要在自动垃圾收集之前进行。展示了一个非常简单的过滤器,它跟踪满足一个客户机的 Web 请求所花的大致时间。
一个过滤器类实现
import javax.servlet.*;
import java.util.*;
import java.io.*;
public class TimeTrackFilter implements Filter {
private FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig)
throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
this.filterConfig = null;
}
public void doFilter( ServletRequest request,
ServletResponse response, FilterChain chain )
throws IOException, ServletException {
Date startTime, endTime;
double totalTime;
startTime = new Date();
// Forward the request to the next resource in the chain
chain.doFilter(request, wrapper);
// -- Process the response -- \\
// Calculate the difference between the start time and end time
endTime = new Date();
totalTime = endTime.getTime() - startTime.getTime();
totalTime = totalTime / 1000; //Convert from milliseconds to seconds
StringWriter sw = new StringWriter();
PrintWriter writer = new PrintWriter(sw);
writer.println();
writer.println("===============");
writer.println("Total elapsed time is: " + totalTime + " seconds." );
writer.println("===============");
// Log the resulting string
writer.flush();
filterConfig.getServletContext().
log(sw.getBuffer().toString());
}
}
复制代码
这个过滤器的生命周期很简单,不管怎样,我们还是研究一下它吧:
初始化
当容器第一次加载该过滤器时,init() 方法将被调用。该类在这个方法中包含了一个指向 FilterConfig 对象的引用。我们的过滤器实际上并不需要这样做,因为其中没有使用初始化信息,这里只是出于演示的目的。
过滤
过滤器的大多数时间都消耗在这里。doFilter() 方法被容器调用,同时传入分别指向这个请求/响应链中的 ServletRequest、ServletResponse 和 FilterChain 对象的引用。然后过滤器就有机会处理请求,将处理任务传递给链中的下一个资源(通过调用 FilterChain 对象引用上的 doFilter()方法),之后在处理控制权返回该过滤器时处理响应。
析构
容器紧跟在垃圾收集之前调用 destroy() 方法,以便能够执行任何必需的清理代码。
2. 配置 Servlet 过滤器
过滤器通过 web.xml 文件中的两个 XML 标签来声明。<filter> 标签定义过滤器的名称,并且声明实现类和 init() 参数。<filter-mapping> 标签将过滤器与 servlet 或 URL 模式相关联。
摘自一个 web.xml 文件,它展示了如何声明过滤器的包含关系:
在 web.xml 中声明一个过滤器
<filter>
<filter-name>Page Request Timer</filter-name>
<filter-class>TimeTrackFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Page Request Timer</filter-name>
<servlet-name>Main Servlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>Main Servlet</servlet-name>
<servlet-class>MainServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Main Servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
复制代码
上 面的代码示例声明了一个过滤器("Page Request Timer"),并把它映射到一个 servlet("Main Servlet")。然后为该 servlet 定义了一个映射,以便把每个请求(由通配符指定)都发送到该 servlet。这是控制器组件的典型映射声明。您应该注意这些声明的顺序,因为千万不能背离这些元素的顺序。
3. 部署 Servlet 过滤器
事实上,与 Web 应用程序一起部署过滤器绝对不涉及任何复杂性。只需把过滤器类和其他 Web 组件类包括在一起,并像您通常所做的那样把 web.xml 文件(连同过滤器定义和过滤器映射声明)放进 Web 应用程序结构中,servlet 容器将处理之后的其他所有事情。
过滤器的许多应用
您在 J2EE Web 应用程序中利用过滤器的能力,仅受到您自己的创造性和应用程序设计本领的限制。在适合使用装饰过滤器模式或者拦截器模式的任何地方,您都可以使用过滤器。过滤器的一些最普遍的应用如下:
加载:对于到达系统的所有请求,过滤器收集诸如浏览器类型、一天中的时间、转发 URL 等相关信息,并对它们进行日志记录。
性能:过滤器在内容通过线路传来并在到达 servlet 和 JSP 页面之前解压缩该内容,然后再取得响应内容,并在将响应内容发送到客户机机器之前将它转换为压缩格式。
安全:过滤器处理身份验证令牌的管理,并适当地限制安全资源的访问,提示用户进行身份验证和/或将他们指引到第三方进行身份验证。过滤器甚至能够管理访问 控制列表(Access Control List,ACL),以便除了身份验证之外还提供授权机制。将安全逻辑放在过滤器中,而不是放在 servlet 或者 JSP 页面中,这样提供了巨大的灵活性。在开发期间,过滤器可以关闭(在 web.xml 文件中注释掉)。在生产应用中,过滤器又可以再次启用。此外还可以添加多个过滤器,以便根据需要提高安全、加密和不可拒绝的服务的等级。
会话处理:将 servlet 和 JSP 页面与会话处理代码混杂在一起可能会带来相当大的麻烦。使用过滤器来管理会话可以让 Web 页面集中精力考虑内容显示和委托处理,而不必担心会话管理的细节。
XSLT 转换:不管是使用移动客户端还是使用基于 XML 的 Web 服务,无需把逻辑嵌入应用程序就在 XML 语法之间执行转换的能力都绝对是无价的。
使过滤器适应 MVC 体系结构
模型-视图-控制器(Model-View-Controller,MVC)体系结构是一个有效的设计,它现在已作为最重要的设计方法学,整合到了诸如 Jakarta Struts 和 Turbine 等大多数流行的 Web 应用框架中。过滤器旨在扩充 MVC 体系结构的请求/响应处理流。不管请求/响应发生在客户机和服务器之间,还是发生在服务器上的其他组件之间,过滤器在处理流中的应用都是相同的。从 MVC 的观点看,调度器组件(它或者包括在控制器组件中,或者配合控制器组件工作)把请求转发给适当的应用程序组件以进行处理。这使得控制器层成为包括 Servlet 过滤器的最佳位置。通过把过滤器放在控制器组件本身的前面,过滤器可以应用于所有请求,或者通过将它放在控制器/调度器与模型和控制器之间,它可以应用于 单独的 Web 组件。
MVC 体系结构广为传播,并具有良好的文档。请通过 参考资料 中的链接了解关于 MVC 和 MVC 体系结构中的 Servlet 实现的更多信息。
结束语
虽然过滤器才出现几年时间,但它们本身已作为一个关键组件嵌入到了所有敏捷的、面向对象的 J2EE Web 应用程序中。本文向您介绍了 Servlet 过滤器的使用。本文讨论了过滤器的高级设计,比较了当前规范(2.4)和以前(2.3)的模型,讲述了实现过滤器所涉及的精确步骤,以及如何在 Web 应用程序中声明过滤器,然后与应用程序一起部署它。本文还阐述了 Servlet 过滤器的一些最普遍应用,并提到了过滤器如何适应传统的 MVC 体系结构。
这是 J2EE 探索者 系列的最后一篇文章。我们在年初通过粗略研究 Enterprise JavaBean 组件来开始我们的旅程,并提到了何时使用这些组件才真正有意义,以及何时这些组件才会变得大材小用的问题。然后我们将目光转向了 Web 层,绘制了一条通过 Servlet、JSP 页面、JavaBean 技术以及 Java Servlet API 中的无数选择和功能的路径。在这个系列文章中与您一起艰苦跋涉真是一件快乐的事情。我享受着编写这个系列文章的乐趣,并且我从大家的反馈中知道,这对您也 是一个很有价值的过程。
Java 过滤器的作用
⑧ Servlet过滤器是什么
在 J2EE 探索者 系列文章的最后一篇中,作者 Kyle Gabhart 将向您介绍 Servlet过滤器体系结构,定义过滤器的许多应用,并指导您完成典型过滤器实现的三个步骤。他还会透露 bean 的一些激动人心的变化,预计刚发布的 Java Servlet 2.4 规范会引入这些变化。Servlet过滤器是可插入的 Web 组件,它允许我们实现 Web 应用程序中的预处理和后期处理逻辑。过滤器支持 servlet 和 JSP 页面的基本请求处理功能,比如日志记录、性能、安全、会话处理、XSLT 转换,等等。 过滤器最初是随 Java Servlet 2.3 规范发布的,最近定稿的 2.4 规范对它进行了重大升级。在这 J2EE 探索者 系列文章的最后一篇中,我将向您介绍 Servlet过滤器的基础知识 —— 比如总体的体系结构设计、实现细节,以及在 J2EE Web 应用程序中的典型应用,还会涉及一些预计最新的 Servlet 规范将会提供的扩展功能。? Servlet过滤器是小型的 Web 组件,它们拦截请求和响应,以便查看、提取或以某种方式操作正在客户机和服务器之间交换的数据。过滤器是通常封装了一些功能的 Web 组件,这些功能虽然很重要,但是对于处理客户机请求或发送响应来说不是决定性的。典型的例子包括记录关于请求和响应的数据、处理安全协议、管理会话属性,等等。过滤器提供一种面向对象的模块化机制,用以将公共任务封装到可插入的组件中,这些组件通过一个配置文件来声明,并动态地处理。Servlet过滤器中结合了许多元素,从而使得过滤器成为独特、强大和模块化的 Web 组件。也就是说,Servlet过滤器是:声明式的:过滤器通过 Web 部署描述符(web.xml)中的 XML 标签来声明。这样允许添加和删除过滤器,而无需改动任何应用程序代码或 JSP 页面。动态的:过滤器在运行时由 Servlet 容器调用来拦截和处理请求和响应。灵活的:过滤器在 Web 处理环境中的应用很广泛,涵盖诸如日志记录和安全等许多最公共的辅助任务。过滤器还是灵活的,因为它们可用于对来自客户机的直接调用执行预处理和后期处理,以及处理在防火墙之后的 Web 组件之间调度的请求。最后,可以将过滤器链接起来以提供必需的功能。模块化的:通过把应用程序处理逻辑封装到单个类文件中,过滤器从而定义了可容易地从请求/响应链中添加或删除的模块化单元。可移植的:与 Java 平台的其他许多方面一样,Servlet过滤器是跨平台和跨容器可移植的,从而进一步支持了 Servler 过滤器的模块化和可重用本质。可重用的:归功于过滤器实现类的模块化设计,以及声明式的过滤器配置方式,过滤器可以容易地跨越不同的项目和应用程序使用。透明的:在请求/响应链中包括过滤器,这种设计是为了补充(而不是以任何方式替代)servlet 或 JSP 页面提供的核心处理。因而,过滤器可以根据需要添加或删除,而不会破坏 servlet 或 JSP 页面。所以Servlet过滤器是通过一个配置文件来灵活声明的模块化可重用组件。过滤器动态地处理传入的请求和传出的响应,并且无需修改应用程序代码就可以透明地添加或删除它们。最后,过滤器独立于任何平台或者 Servlet 容器,从而允许将它们容易地部署到任何相容的 J2EE 环境中。在接下来的几小节中,我们将进一步考察 Servlet过滤器机制的总体设计,以及实现、配置和部署过滤器所涉及的步骤。我们还将探讨 Servlet过滤器的一些实际应用,最后简要考察一下模型-视图-控制器(MVC)体系结构中包含的 Servlet过滤器,从而结束本文的讨论。Servlet过滤器体系结构 正如其名称所暗示的,Servlet过滤器 用于拦截传入的请求和/或传出的响应,并监视、修改或以某种方式处理正在通过的数据流。过滤器是自包含、模块化的组件,可以将它们添加到请求/响应链中,或者在无需影响应用程序中其他 Web 组件的情况下删除它们。过滤器仅只是改动请求和响应的运行时处理,因而不应该将它们直接嵌入 Web 应用程序框架,除非是通过 Servlet API 中良好定义的标准接口来实现。Web 资源可以配置为没有过滤器与之关联(这是默认情况)、与单个过滤器关联(这是典型情况),甚至是与一个过滤器链相关联。那么过滤器究竟做什么呢? 像 servlet 一样,它接受请求并响应对象。然后过滤器会检查请求对象,并决定将该请求转发给链中的下一个组件,或者中止该请求并直接向客户机发回一个响应。如果请求被转发了,它将被传递给链中的下一个资源(另一个过滤器、servlet 或 JSP 页面)。在这个请求设法通过过滤器链并被服务器处理之后,一个响应将以相反的顺序通过该链发送回去。这样就给每个过滤器都提供了根据需要处理响应对象的机会。当过滤器在 Servlet 2.3 规范中首次引入时,它们只能过滤 Web 客户机和客户机所访问的指定 Web 资源之间的内容。如果该资源然后将请求调度给其他 Web 资源,那就不能向幕后委托的任何请求应用过滤器。2.4 规范消除了这个限制。Servlet过滤器现在可以应用于 J2EE Web 环境中存在请求和响应对象的任何地方。因此,Servlet过滤器可以应用在客户机和 servlet 之间、servlet 和 servlet 或 JSP 页面之间,以及所包括的每个 JSP 页面之间。这才是我所称的强大能力和灵活性!实现一个 Servlet过滤器 他们说“好事多磨”。我不知道“他们”指的是谁,或者这句古老的谚语究竟有多真实,但是实现一个 Servlet过滤器的确要经历三个步骤。
⑨ 哪个文章采集软件比较好
Evernote,Database,还有微软的OneNote,都很好用的,网上也很容易就能搜到。Evernote需要联网注册才能用,Database破解版的很好使。
下面是有关几款知识管理文章的文章。
通过上一篇《寻找最好的笔记软件:海选篇》的综合分析,作者发现有3种软件具有较明显的优势,可谓“笔记软件三强”。它们是:EverNote、Mybase 和 Surfulater。此三者相同之间差异较大,但都是各自风格门派的最强者。如何三选一,并不取决于它们谁“更强大”,而是取决于你是一个什么样的用户,或你有什么样的需求。
EverNote
[图片]
假如,你需要一个便利的地方来存放笔记,用不着太多组织功能和多余功能,那么,EverNote就是最适合你的。你可以这样理解,EverNote就是无限长的一卷纸,上面记录了你的所有笔记,其唯一的排列顺序是依据时间。每条笔记甚至连标题都没有——而在其他笔记软件中这是无须考虑的原则。听起来这很不方便,我怎么能找到以前的笔记呢?作为一个优秀软件,EverNote完美解决了你的担心,你在使用时没有任何不便,根本不会意识到这是个问题。
解决之道,也就是笔记定位/过滤的方法,共有2个:分类,实时搜索。分类功能如图所示,可以手工,或按自动规则将笔记分类。
[图片]
分类可以排成一个树状结构,但这与其他同类程序的树状结构也不相同。因为一条笔记可以分入多个分类。再一个笔记定位办法是用实时搜索框。这一功能,在 EverNote中实现得如此完美,是我至今见过所有软件中最好用的,并且速度飞快。随着你键入每个字母,下面会动态显示出所有符合的笔记。不仅如此,所有被匹配的单词都高亮显示。
[图片]
如前文所述,所有笔记排成一列纵队。如果要上下翻动,你可以点击右侧的滚动框,滚动速度取决于你点击的位置。或者,你使用右边的“时间条”功能。它相当于一个纵向排开的日历,你只需点击某个日期,就能显示相关笔记。日期旁边如果有√显示,说明此日期中有笔记。我想,利用这一功能来做电子日记实在是方便。
Evernote还能方便地抓取任何内容,尤其重要的是,各种网页内容。准确讲,在三巨头之中,它抓取网页内容的能力最为强大。它不仅抓取范围很准确,并且内容进入Evernote后,完全象一则笔记,而不是还象网页:鼠标变成小手,单击会进入链接。在 EverNote中,如果你要访问链接,需要双击才行。我从未对网页点击风格侵入软件界面有过好感。还记得Windows为操作系统界面引入单击模式吗?用起来很不习惯,所以,我是每次必关。顺便说一下,Mybase 和 Surfulater都是单击模式。Mybase这样做是因为它用了IE引擎来展示网页;Surfulater这样做是因为它的界面从头到尾就是网页风格。
编辑方面它还存在一些不足。要想对某条笔记真正做一些格工编排、文字组织,你需要进到全屏模式。这时,本条笔记单独显示在大窗口,并带有rtf标准的工具栏,以便于编辑。而在常规窗口中,编辑按钮几乎没有。你要么进全屏模式,要么右键菜单。再有,图片缩放功能也比较怪。
[图片]
总起来看,Evernote是那类“随手而记,随心而查”软件中做得最好的。它最大的优点在于一流的实时搜索功能、强大的web内容抓取功能。其不足则是对笔记的组织、编辑功能较弱。
Mybase
[图片]
如果一个用户需要尽可能多的工具/功能来处理笔记,Mybase就是首选。在我看来,Mybase是进化为现代风格的 Keynote。它们两者,无论在视觉还是感觉上都颇有类似。其界面精简而高效,通过多tab、多面板有效扩展了其功能,具备处理笔记的多项工具。我用 Keynote 很长时间,再过渡到 Mybase 非常顺利。(补充一下,KeyNote 在处理笔记方面也是功能极丰富的)。
Mybase组织笔记的形式也是最简单的树状结构,这也是大多数同类软件的标准思路。也就是说,在这方面,Mybase不求个性,而保持共性。到了最新的 v5版,Mybase增加了标签功能——有点象Evernote的分类,或其他软件的关键词。它在分类树基础上,提供了额外一种组织维度。但其效果比起致力于此的工具(如Zoot、Evernote)尚有差距。当然了,最好的一点是,Mybase是能同时采取树、标签两项功能的软件之一(如果不是唯一的话)。这正是Mybase的风格和优势:最多功能与选项,最大的可定制性。为了让你对它的功能有最直观了解,下图展示了它各项菜单全部展开后的情形:
[图片]
我们说过,Mybase用了很多面板,因此展示笔记信息的桌面空间就比较小。这与某些软件形成了对比。如Surfulater,它采用超链接、网页风格的功能来处理参考文献、链接、附件等。而在Mybase中,用主界面下的单独的子窗口/面板来分别展现这些元素:结构树、笔记主体、搜索结果、附件列表、到其他笔记的链接。这种做法,让有些人感到不适,但另一些用户可能会很欣赏这种分离的做法——我就是其一。对一些通用性较高的面板,如附件、到其他笔记的链接,可以通过选项来设为自动显示:如果笔记有附件或外向链接,则显示;如果没有,则隐藏这些面板。这时灵活应变的设置很实用,可以最大限度保留桌面空间。
[图片]
Mybase对Firefox或IE也可以抓取网页内容,但还达不到Evernote 或 Surfulater水平。首先,抓取内容并不象另两款软件那样视为普通笔记。让我解释一下,对每条笔记,Mybase都有“文本笔记”和“网页”两个标签。如果是抓取的网页内容,Mybase自动切到网页标签。而对于其他类型的笔记,无论是粘贴进来还是手工输入的,都是在“文本笔记”标签下。
[图片]
附:Mybase开发者补充: myBase 中所有内容均保存为节点的附件文件,所谓笔记 (note) 也是保存为一个附件文件,只是被命名为带 .RTF 扩展名的特殊项,一般不会显示出来,而且其他内容,如抓取的网页,则直接保存为附件,在附件列表中可以看到网页中的HTML/JS/样式/图片等元素。因此,输入内容与抓取的网页内容一般是分开显示的;这样设计给系统扩展带来极大的便利性、灵活性与统一性。实际上,如果需要将 note 写入网页中,可以在网页中按 F2 或选择 Edit -> Toggle Edit Mode 菜单项,即可直接输入或编辑网页内容,这样笔记就可以和抓取的网页显示在同一页上了。
这样处理的结果就是,你不能把笔记与网页合在一起。基于此点,我认为Evernote和Surfulater的抓取功能更胜一筹。再有一点美中不足的是,Mybase采用IE而非内置的web引擎来展现抓取的网页内容。因此,当你切换到网页标签时,程序会调用IE而有一个瞬间的停顿。当然,这一问题并不严重,只是不如另外的软件那样平滑集成。
附:Mybase开发者补充:目前绝大多数软件都是嵌入IE来显示网页,所不同的是有些软件一启动就装入了IE浏览器,而myBase只在需要浏览网页时才调入IE,因此首次查看网页时有一点停顿,此后就会非常平滑,这样做的目的是为了尽量减少内存和系统资源占用。
Mybase V5也开发了实时搜索功能。这是一项有价值的功能,用起来的效果也不错。当然,它还比不上Evernote的水平,但至少是可用的。再强调一次,这正是 Mybase的比较优势:虽不是每项功能都做到了所有软件中这方面的最高水平,但至少让用户在一个软件中,拥有了这么多功能。
[图片]
附:Mybase开发者补充:在最新的myBase v5.3中专门重写了索引模块及搜索技术,加入了可调大小的高速缓存技术,提供了相当高的索引性能,同时支持增量索引、大数据量索引、即时搜索及布尔条件 (AND/OR/NOT),对常见的WORD/EXCEL/HTML/PPT/EMAI/TEXT/RTF等多种文档都提供了预置的索引与搜索支持,还可以通过安装第三方过滤器实现更多的文档格式的识别,比如 PDF 文档,此外,myBase还特别地提供了一定的中文搜索支持(但还不完善),总的来说我们当前开发的索引技术已经远远超过其他几家,可以用稍大一些的数据作一些测试,比如100MB以上的可索引数据,就可以看出我们付出了相对多的努力来改进这项技术,当然也还需要进一步改进。
Mybase还提供了一些扩展的组织功能。它可以条目链接,从而让多个笔记之间互为参考。也可以符号链接,从而让用户在结构树上点击笔记A时,直接进入它链接到的笔记B,就象一个快捷方式一样。我还不能充分理解这一功能的作用,但还是那句话,有比无好。(译者注:应该是用于一条笔记进入多个树状分支吧,等同于Evernote的一条笔记进入多个分类)然后,它还能自定义标签(label),就象笔记的关键词一样(译者注:更准确讲,是tag),当你点击关键词时,Mybase会列出归入此关键词的所有笔记。就象我所说的,它为组织笔记提供了一个新维度。
正如你所见的,Mybase是此类软件中最灵活、功能最丰富的一个。其他软件与Mybase相比,或许更具有创新性,或许在某些方面更强大,但没有一个能同时拥有Mybase这样多的笔记处理功能。再次重申一下,以前用KeyNote的用户,可以平滑过渡到Mybase。正因如此,我现在已经开始用 Mybase来作为当前处理笔记的工具。然后,根据情况最终决定用哪款软件。
Surfulater
[图片]
Surfulater的初衷是作为网页抓取和文献管理工具,然后——也是顺理成章地——进入了笔记软件行列。由于这一历史原因,它在界面上与其他笔记软件有很大差异。也就是说,本专题涉及的其他软件从开始就是以笔记为核心功能进行开发,而笔记只是Surfulater功能之一,并且不是最初的主导功能。
Surfulater作为一种内容抓取(网页抓取只是其中一方面)和文献管理工具,在这方面做得比谁都好。如果要便捷强大的链接、文献管理,并收录资料,则最适合选择Surfulater。下面这个场景可作为对Surfulater的最佳描述:你就某一专题在互联网上搜资料,然后找到一个网页,正是你所需要的资料,并且有很多到相关站点的链接。这就是Surfulater软件要做的,并且非常轻松。你可以把各种信息全部收进来,拖拖拽拽,把资料、链接、附件放在一起,不一会儿,你就可以得到一个完整的信息系统,并且具有格式优良的web展示页面、链接,凡你所需,皆在此中。
Surfulater的最大强项在于重复性工作的自动完成。在抓取一个网页后,Surfulater会自动填入标题、描述、到原出处的链接、抓取日期。它甚至会为原始网页创建一个缩略图。用户可以把其他笔记拖到当前笔记上,建立快速参考。这一操作同样适用于附件。如同 Evernote一样,全部笔记也是前前后后,排成一长列。但是,它的队列线索不象Evernote一样,仅局限于时间,所以要灵活得多。
最让我感兴趣的,是Surfulater的结构树。初看起来,它中规中矩,并无突出之处。但实际上,它拥有目前全部软件中最好的后台引擎。它实际上是一种虚拟的树状结构,可以按不同选项进行配置。笔记可以按用户需求按树状展示,但是也可以象Evernote一样按时间顺序排列。你还可以让结构树不展开末级分支,这样,结构树只展示目录,而不展示笔记条目。重要的一条消息是,开发者提过,在新版本中会允许用户自定义树结构,这意味着一条笔记有可能进入多个分类。
[图片]
还有一个突出的功能是,Surfulater可以克隆笔记项目。初看起来,它的效果与复制相同。但实际上,它们差别很大。克隆后的副本实际是一种镜像:不重复占用存储空间,但可以逻辑上放在另外一个类别中,并且相互之间实时一致。比如,修改其中的任一个,其他克隆副本会同时更新。最后,一个出色功能是把搜索结果作为一个虚拟的结构树分支,列在树结构的最后面。用户可以在搜索结果中进行浏览、滚动,和正常的树、笔记完全一样。当然,命中的关键词也象 Evernote一样高亮显示。对于搜索结果,Evernote也汇集在一起纵向排列,但我认为建立一个列表,可以更方便用户查阅。
[图片]
接下来是一个小功能,即设定笔记或分支节点的图标,Surfulater在这方面做得非常棒,其他软件与之相比,无不相形见绌。用户只须右键点击图标,然后就会弹出一个小窗口,展示出所有可用的图标,想选哪个,点击即可。(注1)
[图片]
接下来,我们说一下Surfulater作为一个笔记软件的不足之处,这些不足的最主要原因就是因为Surfulater的初衷并不是用来做笔记。如果你要编辑笔记,在绝大多数的笔记软件中,只要点击这一笔记,开始输入文字即可。但是到了Surfulater这里,此路不通。你必须要在编辑模式与常规模式间手工切换——这经常令新手无所适从。进入编辑模式的一个办法是,鼠标点住某个输入框持续几秒钟,也就是说,不象一般软件那样点击,而是长按。还有一种进入编辑模式的办法,就是点击每一内容旁边的铅笔图标。值得庆幸的是,作者意识到了这一问题,已经做了改进,并承诺在将来做出进一步的提高。但是,我仍然坚持这样一个原则:笔记软件应当默认处于可编辑状态,只要用户想做编辑,就能马上进行,不能有任何形式和原因的延缓。
再一个不足之处是,Surfulater中找不到一个空白的地方直接做笔记。Surfulater中任何文章(也就是笔记)都基于事先定义好的模板。这些模板有头信息,用于保存标题、注释、评级、参照……。这些功能对于学术研究而言,非常有利于管理和组织;而对于普通用户,尤其是只想随手记点东西时,则是一个极不方便的限制。现在能做的是,选一个“笔记模板”,它只有一个头信息,就是“笔记”,主体部分就是完全空白,用户就在这里做笔记。如下图:
[图片]
Surfulater要成为一个真正的笔记工具,其底线就是在上述两方面做出改进:提供一个编辑模式默认开或关的选项,提供一个完全空白的笔记区域。准确地讲,在这些方面,Surfulater必须向标准的——也是实践证明最有效的——笔记软件风格靠拢。
总起来看,Surfulater功能丰富而风格独特,最适于大量笔记的引用、导航与抓取。从我的了解和判断来看,律师、学者可能会非常欣赏它。原因嘛,想想它与众不同的功能就会明白。如下的场景也可说明哪些人最适合它:如果你现在正使用Evernote,却发现它在组织管理方面还不够强,那你转向 Surfulater就是明智的选择。或者你正在使用任何其他基于最基本的树状结构的笔记软件,而感到处理链接、引用方面力不所心,那也可以转向 Surfulater。
三强功能对比表
上面逐一论述了三强笔记软件的优劣,相信各位读者已经有所认识。如果还嫌不清晰,请看下表。俗话说,不怕不识货,就怕货比货。这一表格并没有涵盖所有功能,但还是能提供不少帮助的。
笔记三强功能对比表
EverNote Mybase Surfulater
同时打开多个数据库 √ √
实时搜索(输入的同时即开始搜索) √ √
基本树结构 √ √
标签/分类 √ √
滚动展示 √ √
加密 √ √
链接到其他笔记 √ √
按时间顺序展示 √ 注2 √
超强的导入/导出功能 √
收藏夹 √
笔记克隆 注3 √
web界面导航(单击式) √
笔记编辑
标准的RTF功能 √ √ √
超链接方式展现附件、链接 √ √
单独面板方式展现附件、链接 √
自定义的文本模板 √
自定义的 xml 模板 √
表格 注4
锁定笔记防修改 √ 注5
笔记标题 √ √
页面抓取
可抓取更多内容(图片、文本) √ √ √
抓取内容可编辑 √ √ √
笔记与抓取内容可同时显示 √ 注6 √
用内置引擎展现抓取内容 √ 注7 √
用已安装的浏览器(IE)展现抓取内容 √
至此,三强篇正文部分结束,下面的附注是xbeta征求Mybase开发者时,所得到的补充。
注 1:Mybase开发者补充:原作者好象没有注意到 myBase 中的强大图标功能,与其他几个程序不同, myBase的图标是开放式的,而且是 per database 的实现,也就是说每个DB都可以由用户自行添加任何多的用户自己喜爱的图标,myBase 本身预定义有一套缺省的图标,同时随安装包还提供了一组网上采集的图标,可以方便的引入到任何.nyf库中,并提供了成批为树节点指定/替换图标的工具。不过,需要注意的是,新建的空白.nyf库不会自动引入任何图标,所以初次打开图标框是空的,这时用户可以根据需要引入自己喜爱的图标进入,稍后即可方便指定图标了。
注2:Mybase开发者补充:myBase 有一个 seekbytime 插件,可以按修改时间列出项目,同时内置的高级搜索也提供了按时间段搜索,间接实现了按时序展示,而且可以方便的逆排序。
注3:Mybase开发者补充:在 myBase 复杂笔记,即使复杂分枝中所有笔记也都很简单,Ctrl+拖放,或者 Copy/Paste,而且分枝可以在不同的库之间复制。
注4:Mybase开发者补充:myBase 5.x 目前只实现了简单的RTF表格,仅仅好于没有。
注5:Mybase开发者补充:myBase 有只读打开模式,按只读方式打开后,只能查看,不可编辑。按住 Ctrl 选择 Reopen 项即可切换打开模式。
注6:Mybase开发者补充:是否同时显示,取决于是否将笔记写入网页中,在网页中按F2即可进入编辑状态,在网页中添加自己的注释内容。
注7:Mybase开发者补充:基本都是调用IE展取网页内容,与其他几家不同的是, myBase 只在需要展显网页时才调入IE,这样确保不浪费太多系统资源。