Filter的意思是可以在Servlet实例进行实质性的处理之前,起到“过滤”的作用.
一个Filter可以过滤一个或多个Servlet,Filter必须实现javax.Servlet.Filter接口,并且必须定义以下三个方法:init(),destory(),doFilter().
下面的例子演示记录客户端主机信息的Filter:
当前web应用的web.xml配置为:
最后用myeclipse插件自动部署到tomcat路径下,启动tomcat,在浏览器中输入
http://localhost:8080/Filter/ (Filter为此web应用名称)
可以在tomcat 目录的log目录下的localhost.2006-01-02.log看到以下消息:
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] request: /Filter/
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] done
这表明logFilter已经被server调用成功.
当然在实际应用中filter还有其他用处,象登陆验证,编码转化等.
一个Filter可以过滤一个或多个Servlet,Filter必须实现javax.Servlet.Filter接口,并且必须定义以下三个方法:init(),destory(),doFilter().
下面的例子演示记录客户端主机信息的Filter:
程序代码: |
/** * 该实例演示记录客户端主机信息的Filter * www.javatx.cn */ package cn.javatx; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * @author ljfan * */ public class logFilter implements Filter { private ServletContext context; /* (non-Javadoc) * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) */ public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub context = arg0.getServletContext(); } /* (non-Javadoc) * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) */ public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub context.log("[" + arg0.getRemoteHost() + "] request: " +((HttpServletRequest)arg0).getRequestURI()); arg2.doFilter(arg0, arg1); context.log("[" + arg0.getRemoteHost() + "] done"); } /* (non-Javadoc) * @see javax.servlet.Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub context = null; } } |
当前web应用的web.xml配置为:
程序代码: |
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>logFilter</filter-name> <filter-class>cn.javatx.logFilter</filter-class> </filter> <filter-mapping> <filter-name>logFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> |
最后用myeclipse插件自动部署到tomcat路径下,启动tomcat,在浏览器中输入
http://localhost:8080/Filter/ (Filter为此web应用名称)
可以在tomcat 目录的log目录下的localhost.2006-01-02.log看到以下消息:
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] request: /Filter/
2006-1-2 16:25:51 org.apache.catalina.core.ApplicationContext log
信息: [127.0.0.1] done
这表明logFilter已经被server调用成功.
当然在实际应用中filter还有其他用处,象登陆验证,编码转化等.
发表评论
-
Tag教程
2010-02-27 14:58 619EL 表达式语言 http://www.code-123. ... -
server.xml元素属性详解
2008-08-23 14:12 735属性名解析 server port ... -
虚拟主目录的建立方法
2008-08-23 14:18 812建立站点www.prodream.com的步骤: 1.建立需 ... -
JSP动作指令
2008-08-23 14:35 667一、Include指令<jsp:include>标 ... -
JSP动作标签
2008-08-23 15:29 828jsp指令负责告诉jsp引擎如何把页面翻译成servlet. ... -
JSP的useBean动作指令-JSP页面加载过程与scope取值
2008-08-23 15:34 2007Jsp的useBean动作标签的JSP页面加载过程 < ... -
JSP内部对象与方法详解
2008-08-23 16:10 750① out - javax.servlet.jsp.jsp ... -
基于端口的虚拟主机的建立(终于晓得为什么没有成功的原因了)
2008-08-23 16:31 783基于端口号的虚拟主机 server.xml中@一个<C ... -
servlet-动态页面
2008-08-27 10:15 798一、动态页面与动态html页面的区别<?xml:name ... -
tomcat-建立虚拟子目录
2008-08-27 14:16 7581.最简单的方法是,在主目录下建立一个文件夹,这个就是一个虚拟 ... -
Servlet运行过程
2008-08-28 09:03 1189一.servlet的特点 二、servlet程序查询数据库的 ... -
servlet配置运行
2008-08-28 15:25 1077一.servlet的注射与运行 二、serv ... -
JSP/Servlet:控制器(Servlet)
2008-09-08 23:54 1167Model 2 架構將應用程式的Web 層區分為Contro ... -
http协议请求行,状态行,响应状态行
2008-09-09 21:19 54941.请求行 格式:请求方式 资源路径 HTTP版本号<C ... -
过滤器
2008-09-11 21:54 640什么是过滤器, 过滤器不是servlet, 它是一个可以 传送 ... -
URLPath匹配原则
2008-09-11 22:50 845URLPath匹配原则 路 ... -
web.xml原理与元素解析
2008-09-11 22:56 1616(tomcat实际上是一个servlet容器,而Apache是 ... -
乱码问题
2008-09-11 23:03 851预备知识: 1.字节和un ... -
过滤器的使用场合
2008-09-11 23:18 900过滤器可以在请求到达JSP或Servlet之前或响应返 ... -
servlet常用类
2008-09-22 12:58 766Servlet常用接口public interface S ...
相关推荐
回到主题,"简单的servlet+Filter的例子"可能涉及到一个简单的应用场景,比如登录验证。在用户尝试访问受保护的资源(如Servlet)之前,Filter会检查请求中是否携带了有效的session信息。如果没有,Filter会重定向...
"java-servlet-hello"例子是一个初学者常用的教程,旨在帮助理解Servlet的基本工作原理和如何在实际中运用。在这个例子中,我们将深入探讨Servlet的创建、配置和运行过程。 首先,Servlet是一个Java类,它继承自`...
这里,你需要定义一个Servlet或Filter来处理数据库连接。通常,你会声明一个Servlet,然后在`<servlet-class>`标签中指定你的实现类,同时在`<servlet-mapping>`标签中指定URL模式,使得请求能够到达这个Servlet。 ...
Filter接口的`doFilter()`方法是核心,它接收ServletRequest和ServletResponse对象,并通过FilterChain对象将请求传递到下一个Filter或目标Servlet。 监听器(Listener)是实现特定接口的Java类,它们用于监听和...
`cors-filter-1.7.1.jar` 是一个专门为处理跨域问题设计的Java过滤器,它实现了CORS规范,允许服务器明确指定哪些源可以访问其资源。这个过滤器可以在Spring、Struts或其他基于Servlet的Java Web框架中使用,通过...
在这个"一个servlet的小例子"中,我们将深入理解servlet的工作原理以及如何在实际项目中使用它们。 首先,"helloServlet"是这个示例程序的名字,通常它会继承自javax.servlet.http.HttpServlet类,并重写其doGet或...
- 例子中设置了两个Filter:一个用于设置字符编码(setCharacterEncoding),另一个用于记录请求URL的日志(logfilter)。 - `<filter>`标签定义了一个Filter,包括其名称和实现类,`<init-param>`则用于传递初始...
1. **Servlet**:Servlet是Java编程语言中的一个接口,由Java EE规范定义,用于扩展服务器的功能。Servlet可以处理HTTP请求,并向客户端返回响应。在给定的源码中,可能包含了实现Servlet接口的类,通过`doGet`和`...
Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者响应返回客户端之前进行拦截处理。本示例“servlet过滤器例子filter”将深入讲解如何使用Servlet过滤器以及其在实际应用中的...
总之,"J2ee servlet入门例子"是一个理想的起点,它将引导初学者逐步理解Servlet的工作原理和使用方式,为后续的J2EE Web开发打下坚实的基础。通过实践这个简单的"HelloJ2ee"示例,你可以亲手感受Servlet的魅力,并...
压缩包文件"WebApp"可能包含了一个简单的Web应用,其中包含了`web.xml`配置文件和一个或多个演示Servlet。在源代码中,你可以看到如何设置和获取初始化参数的实际示例。通过分析这些代码,可以更深入地理解如何在...
在`FilterDemo`这个例子中,我们可以创建一个自定义的Filter,配置在web.xml中,指定其拦截的URL模式。Filter可以通过`chain.doFilter(request, response)`来将请求传递给下一个Filter或目标资源。 ### 应用场景 -...
在这个例子中,我们定义了一个名为`MyServlet`的Servlet,它的类是`com.example.MyServlet`。然后通过`servlet-mapping`元素,我们指定了一个URL模式`/myservice`,这意味着当用户访问应用的`/myservice`路径时,...
2. "pjl-comp-filter.spec"可能是一个打包规范文件,详细描述了如何构建或打包这个库。 3. "LICENSE.txt"包含了该软件的授权信息,决定了用户可以如何使用、分发和修改这个库。 4. "CHANGES.txt"很可能记录了自上一...
在本教程中,我们将深入探讨如何编写并运行你的第一个Servlet。 JavaWeb和JavaEE是两个紧密相关的概念。JavaWeb主要指的是使用Java技术开发的Web应用程序,它包括Servlet、JSP(JavaServer Pages)、JSTL(Java...
由于Servlet容器通常会为每个请求创建一个新的线程来执行Servlet,所以需要注意线程安全问题。若Servlet内部有共享数据,需使用同步机制,避免数据冲突。 六、Filter与Listener Servlet学习中,Filter和Listener也...
在Servlet 3.0及以上版本,你可以使用通配符和正则表达式来定义Servlet的映射路径,使得一个Servlet可以处理多种类型的请求。例如,你可能希望一个Servlet处理所有以`.jsp`结尾的请求,可以这样配置: ```xml ...
Servlet是Java平台上的一个核心技术,用于开发动态Web应用程序。Servlet是Java EE(现在被称为Jakarta EE)规范的一部分,它允许程序员通过扩展服务器的功能来创建交互式的Web应用。Servlet09.zip这个压缩包可能包含...
在这个例子中,Servlet向客户端发送“Hello World!”的响应。 2. **设置开发环境**:确保类路径包含Servlet API的jar文件,例如Servlet 2.4版本的`Servlet-api.jar`。 3. **编译Servlet源代码**:使用`javac`命令将...
本文将深入讲解Filter的基本使用,通过一个简单的入门例子来帮助理解其工作原理。 首先,让我们了解什么是Filter。在Servlet规范中,Filter是一个接口,它允许开发者在请求到达目标Servlet或JSP之前对其进行拦截,...