`
prodream
  • 浏览: 106154 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

servlet-filter的一个例子

    博客分类:
  • J2EE
阅读更多
Filter的意思是可以在Servlet实例进行实质性的处理之前,起到“过滤”的作用.

一个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还有其他用处,象登陆验证,编码转化等.

分享到:
评论

相关推荐

    简单的servlet+Filter的例子

    回到主题,"简单的servlet+Filter的例子"可能涉及到一个简单的应用场景,比如登录验证。在用户尝试访问受保护的资源(如Servlet)之前,Filter会检查请求中是否携带了有效的session信息。如果没有,Filter会重定向...

    java-servlethello例子

    "java-servlet-hello"例子是一个初学者常用的教程,旨在帮助理解Servlet的基本工作原理和如何在实际中运用。在这个例子中,我们将深入探讨Servlet的创建、配置和运行过程。 首先,Servlet是一个Java类,它继承自`...

    java-servlet-连接mysql-数据库.docx

    这里,你需要定义一个Servlet或Filter来处理数据库连接。通常,你会声明一个Servlet,然后在`&lt;servlet-class&gt;`标签中指定你的实现类,同时在`&lt;servlet-mapping&gt;`标签中指定URL模式,使得请求能够到达这个Servlet。 ...

    servlet+filter+lisenter 例子

    Filter接口的`doFilter()`方法是核心,它接收ServletRequest和ServletResponse对象,并通过FilterChain对象将请求传递到下一个Filter或目标Servlet。 监听器(Listener)是实现特定接口的Java类,它们用于监听和...

    cors-filter-1.7.1.jar

    `cors-filter-1.7.1.jar` 是一个专门为处理跨域问题设计的Java过滤器,它实现了CORS规范,允许服务器明确指定哪些源可以访问其资源。这个过滤器可以在Spring、Struts或其他基于Servlet的Java Web框架中使用,通过...

    一个servlet的小例子

    在这个"一个servlet的小例子"中,我们将深入理解servlet的工作原理以及如何在实际项目中使用它们。 首先,"helloServlet"是这个示例程序的名字,通常它会继承自javax.servlet.http.HttpServlet类,并重写其doGet或...

    Servlet中的Filter

    - 例子中设置了两个Filter:一个用于设置字符编码(setCharacterEncoding),另一个用于记录请求URL的日志(logfilter)。 - `&lt;filter&gt;`标签定义了一个Filter,包括其名称和实现类,`&lt;init-param&gt;`则用于传递初始...

    Servlet小例子源码

    1. **Servlet**:Servlet是Java编程语言中的一个接口,由Java EE规范定义,用于扩展服务器的功能。Servlet可以处理HTTP请求,并向客户端返回响应。在给定的源码中,可能包含了实现Servlet接口的类,通过`doGet`和`...

    servlet 过滤器例子 filter

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者响应返回客户端之前进行拦截处理。本示例“servlet过滤器例子filter”将深入讲解如何使用Servlet过滤器以及其在实际应用中的...

    J2ee servlet入门例子

    总之,"J2ee servlet入门例子"是一个理想的起点,它将引导初学者逐步理解Servlet的工作原理和使用方式,为后续的J2EE Web开发打下坚实的基础。通过实践这个简单的"HelloJ2ee"示例,你可以亲手感受Servlet的魅力,并...

    Servlet初始化参数演示例子[源代码]

    压缩包文件"WebApp"可能包含了一个简单的Web应用,其中包含了`web.xml`配置文件和一个或多个演示Servlet。在源代码中,你可以看到如何设置和获取初始化参数的实际示例。通过分析这些代码,可以更深入地理解如何在...

    jsp,servlet,filter温故知新

    在`FilterDemo`这个例子中,我们可以创建一个自定义的Filter,配置在web.xml中,指定其拦截的URL模式。Filter可以通过`chain.doFilter(request, response)`来将请求传递给下一个Filter或目标资源。 ### 应用场景 -...

    servlet 5分钟入门理解

    在这个例子中,我们定义了一个名为`MyServlet`的Servlet,它的类是`com.example.MyServlet`。然后通过`servlet-mapping`元素,我们指定了一个URL模式`/myservice`,这意味着当用户访问应用的`/myservice`路径时,...

    pjl-comp-filter-1.8.1

    2. "pjl-comp-filter.spec"可能是一个打包规范文件,详细描述了如何构建或打包这个库。 3. "LICENSE.txt"包含了该软件的授权信息,决定了用户可以如何使用、分发和修改这个库。 4. "CHANGES.txt"很可能记录了自上一...

    Java服务器开发(二)写第一个Servlet

    在本教程中,我们将深入探讨如何编写并运行你的第一个Servlet。 JavaWeb和JavaEE是两个紧密相关的概念。JavaWeb主要指的是使用Java技术开发的Web应用程序,它包括Servlet、JSP(JavaServer Pages)、JSTL(Java...

    精华servlet学习例子

    由于Servlet容器通常会为每个请求创建一个新的线程来执行Servlet,所以需要注意线程安全问题。若Servlet内部有共享数据,需使用同步机制,避免数据冲突。 六、Filter与Listener Servlet学习中,Filter和Listener也...

    servlet 正则表达式

    在Servlet 3.0及以上版本,你可以使用通配符和正则表达式来定义Servlet的映射路径,使得一个Servlet可以处理多种类型的请求。例如,你可能希望一个Servlet处理所有以`.jsp`结尾的请求,可以这样配置: ```xml ...

    Servlet09.zip

    Servlet是Java平台上的一个核心技术,用于开发动态Web应用程序。Servlet是Java EE(现在被称为Jakarta EE)规范的一部分,它允许程序员通过扩展服务器的功能来创建交互式的Web应用。Servlet09.zip这个压缩包可能包含...

    发布Servlet程序到服务器上

    在这个例子中,Servlet向客户端发送“Hello World!”的响应。 2. **设置开发环境**:确保类路径包含Servlet API的jar文件,例如Servlet 2.4版本的`Servlet-api.jar`。 3. **编译Servlet源代码**:使用`javac`命令将...

    filter 简单小例子,入门例子

    本文将深入讲解Filter的基本使用,通过一个简单的入门例子来帮助理解其工作原理。 首先,让我们了解什么是Filter。在Servlet规范中,Filter是一个接口,它允许开发者在请求到达目标Servlet或JSP之前对其进行拦截,...

Global site tag (gtag.js) - Google Analytics