`
windywindy
  • 浏览: 167861 次
  • 性别: 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+IBatis+BootStrip技术构建简单会议管理系统

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

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

    本篇文章主要介绍了Servlet3.0学习总结之基于Servlet3.0的文件上传实例,具有一定的参考价值,有兴趣的可以了解一下

    servlet3.0的学习(二)

    NULL 博文链接:https://windywindy.iteye.com/blog/577611

    Java Web开发详解:XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用/孙鑫编著

    《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》不仅可以作为Java Web开发的学习用书,还可以作为从事Java Web开发的程序员的参考用书和必备手册。 此外,《Java Web开发详解...

    study-servlet3.0:学习servlet3.0

    学习servlet3.0 学习servlet3.0

    servlet3.0规范

    这是最新的javaSERVLET贵发,包含了很多新的特性和功能,欢迎学习

    北京动力节点Servlet3.0特性

    Servlet3.0规范是JavaEE6.0规范中的子规范。其要求运行环境最多是JDK6.0、Tomcat7.0。而之前学习的是Servlet2.5版本规范,其是JavaEE5.0规范,其要求运行环境最多是JDK5.0、Tomcat5.0。

    Java项目:JSP+Servlet基于Servlet3.0的在线影院订票系统(源码+数据库脚本)

    1.资源包内含有源码、数据库脚本、...4.本项目适合Java初学者,是一个JavaWEB入门级项目,后端技术栈为Servlet3.0,还适应于进行毕业设计和课题设计。 5.学技术,切忌急于求成,从基础学起,打好基础,祝你学习愉快。

    基于SSM的超市订单管理系统完整源码+说明(Jdk8、Web容器支持Servlet 3.0数据库MySQL8.0).zip

    【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。... Web容器: 支持Servlet 3.0规范的容器,如Apache Tomcat7。 数据库: MySQL8.0关系型数据库管理系统).zip

    Servlet2.4&3.0规范

    来自Sun官方的Servlet规范文档,学习必备

    Servlet3.0与纯javascript通过Ajax交互的实例详解

    不过还是写写,方便Ajax学习的后来者。 虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。 Eclipse for javaee注意把做好的工程挂在Tomcat上,才运行...

    JSP_Servlet学习笔记(第2版).pdf

    《JSP & Servlet学习笔记(第2版)》针对Servlet 3.0的新功能全面改版,无论章节架构还是范例程序代码,都做了全面更新,是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上...

    IDEA中HTML通过servlet3.0注解名提交表单到servlet类找不到页面的问题

    主要介绍了IDEA中HTML通过servlet3.0注解名提交表单到servlet类找不到页面的问题,本文通过场景描述及问题解析,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    JSP & Servlet学习笔记

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。, 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...

    JSP&Servlet学习笔记.pdf

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。  本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...

    JSP_Servlet学习笔记(第2版)

    本书针对Servlet3.0的新功能全面改版,无论章节架构还是范例程序代码,都做了全面更新。书中详细介绍了Servlet/JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/JSP如何与容器互动。本书还涵盖了...

    JSP & Servlet学习笔记(第2版)

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...

    JSP&Servlet;学习笔记

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...

Global site tag (gtag.js) - Google Analytics