servlet3.0的学习(四)
来源:互联网 发布:淘宝极速退款卖家拒签 编辑:程序博客网 时间:2024/06/06 11:01
动态注册Servlets,Filters,Listeners
TestFilter.java
TestServlet.java
TestServletRequestListener.java
TestServletContextListener.java
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的学习(二)
- servlet3.0的学习(三)
- servlet3.0的学习(五)
- Servlet3.0的新特性 值得学习
- Servlet3.0入门学习(一)
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
- Servlet3.0的特性
- Servlet学习——Servlet3.0的@WebFilter的缺陷
- Servlet3.0学习总结(四)——使用注解标注监听器(Listener)
- Servlet3.0学习总结(四)——使用注解标注监听器(Listener)
- Servlet3.0学习总结(四)——使用注解标注监听器(Listener)
- Spring Batch 之 Sample(游标方式读写DB数据表)(八)
- servlet3.0的学习(二)
- Spring Batch 之 skip讲解(九)
- servlet3.0的学习(三)
- Spring Batch 之 JobParameters (十)
- servlet3.0的学习(四)
- JavaScript核心指南 (ECMA-262-3)
- [置顶] cocos2d游戏开发,常用工具集合
- 基于 Eclipse 的 ClearCase UCM 和 ClearQuest 集成环境安装与使用
- Dijkstra模版
- 一个很好的命令(pkill),一次性杀死某用户所有进程。PS:其他杀进程命令
- 编程中常见错误原因
- CentOS添加解码器播放MP3和常见视频音频
- Java_修饰符static和构造函数