动态注册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
}
}
分享到:
相关推荐
开发者可以通过这个文件快速查找和理解Servlet3.0中的类、接口、方法以及它们的使用示例,对于学习和使用Servlet3.0非常有帮助。 总的来说,Servlet3.0通过增强的注解配置、异步处理、过滤器改进、上下文参数和监听...
至于提到的"ajax",这可能是与AJAX(Asynchronous JavaScript and XML)技术有关,虽然在Servlet 3.0学习中不是核心内容,但它是现代Web应用中常用的交互技术。Servlet可以处理AJAX请求,通过JSON或XML格式返回数据...
Servlet 3.0是Java Servlet规范的一个重要...总的来说,“servlet3.0.zip”包含的资源为开发者提供了使用Servlet 3.0规范进行Web开发的基础,通过学习和实践,开发者可以构建高效、灵活且易于维护的Java Web应用程序。
Servlet 3.0是Java服务器端编程的重要组成部分,主要用于构建动态Web应用程序。它是由Java Community Process(JCP)制定的标准,定义了一套用于处理HTTP请求的API,使得开发者可以编写服务器端程序来处理来自Web...
这个压缩包包含了servlet3.0的jar包和对应的doc文档,非常适合开发者学习和使用。 首先,我们来看一下`javax.servlet.jar`文件,这是Servlet API的核心库,包含了Servlet和Filter等核心接口和类。在Servlet3.0中,...
【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...
在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,并且采用注解的方式来简化代码。 在Servlet 3.0之前,我们需要在web.xml中配置Servlet,然后通过继承...
在视频教程中,你将学习到如何在Eclipse中创建Maven Web项目,配置Servlet 3.0的相关注解,以及如何运行和调试基于Servlet 3.0的应用程序。这将帮助你更高效地开发和管理Java Web项目。 通过学习这个视频教程,...
Servlet3.0是Java EE平台中的一个重要组成部分,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。以下是对Servlet3.0主要...学习和掌握Servlet3.0的这些特性对于Java Web开发者来说至关重要。
通过这个Demo,开发者可以学习如何在实际项目中有效地利用Servlet3.0的新特性,提高代码的可读性和维护性。同时,参考的博客文章也可能提供了具体的实现细节和示例代码,对于深入理解Servlet3.0的功能非常有帮助。
通过这个项目,开发者可以学习到如何在不依赖大型Web服务器的情况下,快速启动和运行一个JSP和Servlet应用。这不仅提高了开发效率,还使得项目更加便携,易于分享和调试。同时,对Servlet 3.0的理解,包括注解配置、...
Servlet 3.0是Java Web开发中的一个...通过深入学习和理解Servlet 3.0的这些特性,开发者可以构建更加高效、灵活且易于维护的Java Web应用程序。源码分析将帮助我们更好地理解底层工作原理,从而更好地利用这些特性。
Servlet 3.0是Java Servlet规范的第四个主要版本,引入了许多新特性和改进。 2. **Servlet容器**:Tomcat作为Servlet容器,负责加载、初始化、执行以及管理Servlet。它解析HTTP请求,并将这些请求传递给相应的...
在"JavaWeb-21 JDBC(泛型,注解,Servlet3.0,Log4j)"这个主题中,涵盖了四个关键知识点:JDBC(Java Database Connectivity)、泛型、注解以及Servlet 3.0。接下来,我们将逐一深入探讨这些内容。 首先,JDBC是...
Servlet3.0是Java Web开发中的一个重要里程碑,它在Servlet2.5的基础上引入了许多新特性,极大地提高了开发效率和灵活性。这篇博客“Servlet3.0微框架”可能探讨了如何利用Servlet3.0的新功能来构建轻量级的Web应用...
Servlet 3.0是Java EE 6规范的一...如果你想要深入了解Servlet 3.0的文件上传功能,可以通过阅读指定的博文链接(已提供但此处未显示)或者查阅相关的Java EE 6文档,进一步学习如何在实际项目中有效利用这些新特性。
本系列讲座主要讲述如何利用Servlet3.0+mybatis+bootstrap+mysql构建企业级应用解决方案,主要分为三部分完成 第一部分:技能储备阶段,学习项目所需要的技能知识 第二部分:设计部分,通过需求分析,设计物理模型,...
Servlet3.0文件上传实例学习总结 Servlet3.0提供了对文件上传的原生支持,开发者可以直接使用Servlet3.0提供的API实现文件上传功能,不需要借助任何第三方上传组件。在这里,我们将介绍使用Servlet3.0实现文件上传...
Servlet3.0是Java Servlet API的一个重大更新,它引入了许多新特性和改进,极大地提高了开发效率和灵活性。...通过学习和掌握Servlet3.0的新特性,开发者可以编写出更加高效、易于维护的Java Web应用。
【Maven+Servlet3.0显示系统...通过这个项目,开发者可以学习Maven的项目管理,理解Servlet3.0的新特性,以及如何在实际开发中运用这些技术。同时,这也是一个很好的实践案例,帮助初学者掌握Java Web开发的基础知识。