Jetty添加Filter过滤器

1.Jetty嵌入到Spring项目

 try {
            Server server = new Server(8080);  

            WebAppContext context = new WebAppContext();
            context.setContextPath("/test");
            context.setDescriptor(filePath + "/conf/web.xml"); // 指定web.xml配置文件
            context.setResourceBase(filePath + "/conf/");// 指定webapp目录
            context.setParentLoaderPriority(true);  

            server.setHandler(context);
            server.start();
            server.join();  

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

  

2.Jetty添加Filter的方式有两种

1.类似Tomcat,在web.xml中指定过滤器,但需要确定配置文件WEB-INF/web.xml 存在于webapp根目录

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
   PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
   "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <filter>
        <filter-name>filterName</filter-name>
        <filter-class>com.x.y.z.FilterClass</filter-class>
    </filter>
    <filter-mapping>
        <url-pattern>/test</url-pattern>
        <filter-name>filterName</filter-name>
    </filter-mapping>
</web-app>

  

2.直接用addFilter API

主要用到 ServletContextHandler、FilterMapping、FilterHolder几个类

import java.io.IOException;
import java.util.EnumSet;
import java.util.Enumeration;

import javax.servlet.DispatcherType;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.FilterHolder;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class TestEmbeddedFilter {

    public static void main(String[] args) {
        Server server = new Server(8082);

        ServletContextHandler context = new ServletContextHandler(
                ServletContextHandler.SESSIONS);
        context.setContextPath("/");

        ServletHandler handler = new ServletHandler();
        ServletHolder sh = new ServletHolder(new MyServlet());
        context.addServlet(sh, "/*");

        FilterHolder fh = handler.addFilterWithMapping(MyFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
        fh.setInitParameter("initParamKey", "InitParamValue");

        context.addFilter(fh, "/*", EnumSet.of(DispatcherType.REQUEST));

        context.setHandler(handler);
        server.setHandler(context);
        try {
            server.start();
            // server.join();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @SuppressWarnings("serial")
    public static class MyServlet extends HttpServlet {

        @Override
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException,
                IOException {
            response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println("<h1>Hello MyServlet</h1>");

        }
    }

    public static class MyFilter implements Filter {

        public void destroy() {
            System.out.println("Stopping filter");
        }

        public void doFilter(ServletRequest request, ServletResponse response,
                FilterChain chain) throws IOException, ServletException {
            System.out.println("doFilter called with: " + request);

            chain.doFilter(request, response);
        }

        public void init(FilterConfig filterConfig) throws ServletException {
            Enumeration<String> enums = filterConfig.getInitParameterNames();

            while (enums.hasMoreElements()) {
                String param = (String) enums.nextElement();
                System.out.println(param + ":" + filterConfig.getInitParameter(param));
            }
        }

    }

}

可参考:

addFilter使用方法

http://blog.csdn.net/sidyhe/article/details/52084558

http://stackoverflow.com/questions/14390577/how-to-add-servlet-filter-with-embedded-jetty

官方实例

http://alvinalexander.com/java/jwarehouse/jetty-6.1.9/modules/util/src/main/java/org/mortbay/servlet/GzipFilter.java.shtml

如果让某些请求绕过Filter

http://blog.csdn.net/moonsheep_liu/article/details/6862921

时间: 2024-10-14 03:21:24

Jetty添加Filter过滤器的相关文章

java项目中通过添加filter过滤器解决ajax跨域问题

1.在web.xml添加filter <filter> <filter-name>contextfilter</filter-name> <filter-class>com.cf.hr.filter.WebContextFilter</filter-class> </filter> <filter-mapping> <filter-name>contextfilter</filter-name> &

vue el-table和添加全局的filter过滤器,并支持过滤器文字换图标

vue 的filter 过滤器不仅仅是限于文字和单位的转换可以加图标.这里基于封装全局的el-table. el-table请自行去官网查看 然后table组件中,如果有filter过滤器指向全局的filter.js中 然后在main.js中引入filter.js文件 然后就可以在其他地方调用. 写的比较粗糙,不喜勿喷.谢谢 原文地址:https://www.cnblogs.com/Gherardo/p/12005181.html

estore商城案例(三)------Filter过滤器:自动登录&amp;权限管理

前面写好了用户登录\注册\添加商品的功能模块.下面写一下对于这些功能模块的相关过滤器---自动登录与权限管理: 一.自动登录: 业务逻辑是这样的:jsp登录页面有个“自动登录选项”,如果登录这勾选了,那么在serlvet程序中则会额外的生成一个保存用户名和密码的cookie,然后每次用户向服务器发送请求时,Filter过滤器都会先判断用户的登录状态(session),如果已经登录那么无需做出受任何操作直接放行,如果没有登录(无session),那么这时体现自动登录功能作用的时候到了,先获取自动登

filter 过滤器从数组中选择一个子集

输入过滤器可以通过一个管道字符和一个过滤器添加到指令中,该过滤器后面跟着一个冒号:冒号后面是一个模型名称. <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="X-UA-Compatible"content="

Filter 过滤器

Filter 过滤器 原文链接:http://tianweili.github.io/blog/2015/01/26/java-filter/ 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. 它主要用于对用户请求进行预处

Java防止SQL注入2(通过filter过滤器功能进行拦截)

首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦截,可以在数据访问上层的业务层用方法的形式进行手动过滤还靠谱些. 或者使用SQL的参数形式进行,这个绝对是百分百搞得定. 关于SQL注入解释,参考:http://www.cnblogs.com/EasonJim/p/6223216.html 关于filter过滤器使用教程,参考:http://www

javaweb学习总结——Filter(过滤器)学习

一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过F

JavaWeb的Filter过滤器

过滤器Filter 过滤器概述 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter"放行",那么会继承执行用户请求的Servlet:如果Filter不"放行",那么就不会执行用户请求的Servlet. 其实可以这样理解,当用户请求某个Servlet时,Tomcat会去执行注册在这个请求上的Filter,然后是否

Servlet的学习之Filter过滤器技术(1)

本篇将讲诉Servlet中一项非常重要的技术,Filter过滤器技术.通过过滤器,可以对来自客户端的请求进行拦截,进行预处理或者对最终响应给客户端的数据进行处理后再输出. 要想使用Filter过滤器,非常简单,只要实现Servlet  API中的Filter接口即可,同时在该web应用[WEB-INF]目录下的web.xml文件中配置<filter>和<filter-mapping>两个标签.其中可以根据配置指定过滤的页面或者Servlet. 也就是说我们在web工程中光光写Fil