动态注册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+mybatis+bootstrap+mysql构建企业级应用解决方案,主要分为三部分完成 第一部分:技能储备阶段,学习项目所需要的技能知识 第二部分:设计部分,通过需求分析,设计物理模型,...
本篇文章主要介绍了Servlet3.0学习总结之基于Servlet3.0的文件上传实例,具有一定的参考价值,有兴趣的可以了解一下
NULL 博文链接:https://windywindy.iteye.com/blog/577611
《Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet3.0+JSP2.2深入剖析与实例应用》不仅可以作为Java Web开发的学习用书,还可以作为从事Java Web开发的程序员的参考用书和必备手册。 此外,《Java Web开发详解...
学习servlet3.0 学习servlet3.0
这是最新的javaSERVLET贵发,包含了很多新的特性和功能,欢迎学习
Servlet3.0规范是JavaEE6.0规范中的子规范。其要求运行环境最多是JDK6.0、Tomcat7.0。而之前学习的是Servlet2.5版本规范,其是JavaEE5.0规范,其要求运行环境最多是JDK5.0、Tomcat5.0。
1.资源包内含有源码、数据库脚本、...4.本项目适合Java初学者,是一个JavaWEB入门级项目,后端技术栈为Servlet3.0,还适应于进行毕业设计和课题设计。 5.学技术,切忌急于求成,从基础学起,打好基础,祝你学习愉快。
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。... Web容器: 支持Servlet 3.0规范的容器,如Apache Tomcat7。 数据库: MySQL8.0关系型数据库管理系统).zip
来自Sun官方的Servlet规范文档,学习必备
不过还是写写,方便Ajax学习的后来者。 虽然js.html是一个纯静态的页面,但是以下的程序必须挂在Tomcat服务器上,才能做到Ajax交互,否则看不出效果的。 Eclipse for javaee注意把做好的工程挂在Tomcat上,才运行...
《JSP & Servlet学习笔记(第2版)》针对Servlet 3.0的新功能全面改版,无论章节架构还是范例程序代码,都做了全面更新,是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上...
主要介绍了IDEA中HTML通过servlet3.0注解名提交表单到servlet类找不到页面的问题,本文通过场景描述及问题解析,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。, 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...
本书针对Servlet3.0的新功能全面改版,无论章节架构还是范例程序代码,都做了全面更新。书中详细介绍了Servlet/JSP与Web容器之间的关系,必要时从Tomcat源代码分析,了解Servlet/JSP如何与容器互动。本书还涵盖了...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...
本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...