栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何以编程方式添加servlet过滤器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何以编程方式添加servlet过滤器?

不,不是通过标准的Servlet 2.5 API。这是在Servlet 3.0
中引入的。最好的选择是创建一个过滤器并自己重塑责任链模式。一种替代方法是从内部获取容器特定的类,然后通过其API添加过滤器。具体执行方式取决于目标容器(它还会使您的代码紧密耦合到有问题的容器)。


更新: 根据评论的要求,这是一个示例,

ServletContextListener
说明如何在Webapp启动期间使用Tomcat
6特定的API以编程方式添加过滤器:

package com.example;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.catalina.Container;import org.apache.catalina.ServerFactory;import org.apache.catalina.core.StandardContext;import org.apache.catalina.core.StandardEngine;import org.apache.catalina.deploy.FilterDef;import org.apache.catalina.deploy.FilterMap;public class Tomcat6FilterConfigurator implements ServletContextListener {    @Override    public void contextInitialized(ServletContextEvent event) {        StandardEngine engine = (StandardEngine) ServerFactory.getServer().findService("Catalina").getContainer();        Container container = engine.findChild(engine.getDefaultHost());        StandardContext context = (StandardContext) container.findChild(event.getServletContext().getContextPath());        FilterDef filter1definition = new FilterDef();        filter1definition.setFilterName(Filter1.class.getSimpleName());        filter1definition.setFilterClass(Filter1.class.getName());        context.addFilterDef(filter1definition);        FilterMap filter1mapping = new FilterMap();        filter1mapping.setFilterName(Filter1.class.getSimpleName());        filter1mapping.addURLPattern("/*");        context.addFilterMap(filter1mapping);        // ...    }    @Override    public void contextDestroyed(ServletContextEvent event) {        // TODO Auto-generated method stub    }}

在以下位置注册此侦听器

web.xml

<listener>    <listener-class>com.example.Tomcat6FilterConfigurator</listener-class></listener>

再次提醒您,此操作 不适 用于其他品牌/版本的容器,甚至不适用于Tomcat 7.0。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/508614.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号