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

servlet3.0的学习(四)

阅读更多
动态注册Servlets,Filters,Listeners

TestFilter.java
package web.servlet.dynamicregistration_war;

import java.io.*;
import javax.servlet.*;


public class TestFilter implements Filter {

    private String filterInitParam;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        filterInitParam = filterConfig.getInitParameter("filterInitName");
    }   

    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        req.setAttribute("filterInitName", filterInitParam);
        chain.doFilter(req, res);
    }

    @Override
    public void destroy() {
        // Do nothing
    }
}


TestServlet.java
package web.servlet.dynamicregistration_war;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class TestServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res)
            throws IOException, ServletException {

        if (!"servletInitValue".equals(getServletConfig().getInitParameter(
                        "servletInitName"))) {
            throw new ServletException("Missing servlet init param");
        }

        if (!"filterInitValue".equals(req.getAttribute("filterInitName"))) {
            throw new ServletException("Missing request attribute that was " +
                "supposed to have been set by programmtically registered " +
                "Filter");
        }

        if (!"listenerAttributeValue".equals(req.getAttribute(
                "listenerAttributeName"))) {
            throw new ServletException("Missing request attribute that was " +
                "supposed to have been set by programmtically registered " +
                "ServletRequestListener");
        }

        res.getWriter().println("HELLO WORLD!\n");
    }
}


TestServletRequestListener.java
package web.servlet.dynamicregistration_war;

import javax.servlet.*;

public class TestServletRequestListener implements ServletRequestListener {

    public void requestInitialized(ServletRequestEvent sre) {
        sre.getServletRequest().setAttribute("listenerAttributeName",
            "listenerAttributeValue");
    }
    
    public void requestDestroyed(ServletRequestEvent sre) {
        // Do nothing
    }

}


TestServletContextListener.java
package web.servlet.dynamicregistration_war;

import java.util.*;
import javax.servlet.*;


public class TestServletContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {

        ServletContext sc = sce.getServletContext();

        // 注册 Servlet
        ServletRegistration sr = sc.addServlet("DynamicServlet",
            "web.servlet.dynamicregistration_war.TestServlet");
        sr.setInitParameter("servletInitName", "servletInitValue");
        sr.addMapping("/*");
        // 注册过滤器
        FilterRegistration fr = sc.addFilter("DynamicFilter",
            "web.servlet.dynamicregistration_war.TestFilter");
        fr.setInitParameter("filterInitName", "filterInitValue");
        fr.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST),
                                     true, "DynamicServlet");

        // 注册监听器
        sc.addListener("web.servlet.dynamicregistration_war.TestServletRequestListener");
    }   

    @Override
    public void contextDestroyed(ServletContextEvent sce) {  
        // Do nothing
    }
}


分享到:
评论
1 楼 ▄︻┳═一 2010-08-16  
请教一下,如果采用@WebFilter标注两个Filter,这两个Filter的顺序怎么指定?

相关推荐

    Servlet3.0参考手册

    开发者可以通过这个文件快速查找和理解Servlet3.0中的类、接口、方法以及它们的使用示例,对于学习和使用Servlet3.0非常有帮助。 总的来说,Servlet3.0通过增强的注解配置、异步处理、过滤器改进、上下文参数和监听...

    servlet3.0的学习(二)

    至于提到的"ajax",这可能是与AJAX(Asynchronous JavaScript and XML)技术有关,虽然在Servlet 3.0学习中不是核心内容,但它是现代Web应用中常用的交互技术。Servlet可以处理AJAX请求,通过JSON或XML格式返回数据...

    servlet3.0.zip

    Servlet 3.0是Java Servlet规范的一个重要...总的来说,“servlet3.0.zip”包含的资源为开发者提供了使用Servlet 3.0规范进行Web开发的基础,通过学习和实践,开发者可以构建高效、灵活且易于维护的Java Web应用程序。

    Servlet 3.0jar包和source包

    Servlet 3.0是Java服务器端编程的重要组成部分,主要用于构建动态Web应用程序。它是由Java Community Process(JCP)制定的标准,定义了一套用于处理HTTP请求的API,使得开发者可以编写服务器端程序来处理来自Web...

    servlet3.0 jar包和doc

    这个压缩包包含了servlet3.0的jar包和对应的doc文档,非常适合开发者学习和使用。 首先,我们来看一下`javax.servlet.jar`文件,这是Servlet API的核心库,包含了Servlet和Filter等核心接口和类。在Servlet3.0中,...

    Jsp/Servlet3.0 ppt和代码

    【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...

    servlet3.0-demo

    在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,并且采用注解的方式来简化代码。 在Servlet 3.0之前,我们需要在web.xml中配置Servlet,然后通过继承...

    maven servlet 3.0 eclipse config video

    在视频教程中,你将学习到如何在Eclipse中创建Maven Web项目,配置Servlet 3.0的相关注解,以及如何运行和调试基于Servlet 3.0的应用程序。这将帮助你更高效地开发和管理Java Web项目。 通过学习这个视频教程,...

    Servlet3.0特性详解

    Servlet3.0是Java EE平台中的一个重要组成部分,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。以下是对Servlet3.0主要...学习和掌握Servlet3.0的这些特性对于Java Web开发者来说至关重要。

    Servlet3.0 Demo

    通过这个Demo,开发者可以学习如何在实际项目中有效地利用Servlet3.0的新特性,提高代码的可读性和维护性。同时,参考的博客文章也可能提供了具体的实现细节和示例代码,对于深入理解Servlet3.0的功能非常有帮助。

    JSP项目集成jetty服务器+servlet 3.0 demo

    通过这个项目,开发者可以学习到如何在不依赖大型Web服务器的情况下,快速启动和运行一个JSP和Servlet应用。这不仅提高了开发效率,还使得项目更加便携,易于分享和调试。同时,对Servlet 3.0的理解,包括注解配置、...

    官方servlet3.0.rar

    Servlet 3.0是Java Web开发中的一个...通过深入学习和理解Servlet 3.0的这些特性,开发者可以构建更加高效、灵活且易于维护的Java Web应用程序。源码分析将帮助我们更好地理解底层工作原理,从而更好地利用这些特性。

    Servlet 3.0 API - Apache Tomcat 7.0.41

    Servlet 3.0是Java Servlet规范的第四个主要版本,引入了许多新特性和改进。 2. **Servlet容器**:Tomcat作为Servlet容器,负责加载、初始化、执行以及管理Servlet。它解析HTTP请求,并将这些请求传递给相应的...

    JavaWeb-21 JDBC(泛型,注解,Servlet3.0,Log4j)

    在"JavaWeb-21 JDBC(泛型,注解,Servlet3.0,Log4j)"这个主题中,涵盖了四个关键知识点:JDBC(Java Database Connectivity)、泛型、注解以及Servlet 3.0。接下来,我们将逐一深入探讨这些内容。 首先,JDBC是...

    Servlet3.0微框架

    Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这篇博客“Servlet3.0微框架”可能探讨了如何利用Servlet3.0的新功能来构建轻量级的Web应用...

    Servlet 3.0新特性——文件上传接口

    Servlet 3.0是Java EE 6规范的一...如果你想要深入了解Servlet 3.0的文件上传功能,可以通过阅读指定的博文链接(已提供但此处未显示)或者查阅相关的Java EE 6文档,进一步学习如何在实际项目中有效利用这些新特性。

    基于Servlet3.0+IBatis+BootStrip技术构建简单会议管理系统

    本系列讲座主要讲述如何利用Servlet3.0+mybatis+bootstrap+mysql构建企业级应用解决方案,主要分为三部分完成 第一部分:技能储备阶段,学习项目所需要的技能知识 第二部分:设计部分,通过需求分析,设计物理模型,...

    Servlet3.0学习总结之基于Servlet3.0的文件上传实例

    Servlet3.0文件上传实例学习总结 Servlet3.0提供了对文件上传的原生支持,开发者可以直接使用Servlet3.0提供的API实现文件上传功能,不需要借助任何第三方上传组件。在这里,我们将介绍使用Servlet3.0实现文件上传...

    Servlet3.0新特性解析01

    Servlet3.0是Java Servlet API的一个重大更新,它引入了许多新特性和改进,极大地提高了开发效率和灵活性。...通过学习和掌握Servlet3.0的新特性,开发者可以编写出更加高效、易于维护的Java Web应用。

    Maven+Servlet3.0显示系统时间源码+文档

    【Maven+Servlet3.0显示系统...通过这个项目,开发者可以学习Maven的项目管理,理解Servlet3.0的新特性,以及如何在实际开发中运用这些技术。同时,这也是一个很好的实践案例,帮助初学者掌握Java Web开发的基础知识。

Global site tag (gtag.js) - Google Analytics