Java 在servlet内以编程方式调用过滤器(使用jetty/spark创建)?

Java 在servlet内以编程方式调用过滤器(使用jetty/spark创建)?,java,web-services,jakarta-ee,jetty,servlet-filters,Java,Web Services,Jakarta Ee,Jetty,Servlet Filters,我正在尝试使用spark microframework()创建一个轻量级、自包含的Web服务。我需要处理多部分表单(我希望同时接收文件和一些键值数据) Jetty(Spark依赖于它)提供了一个MultiPartFilter过滤器,它有助于处理多部分数据,但我不知道如何在我的代码中连接到它 我需要以编程方式执行此操作,因为此服务不会作为大型java安装的一部分进行部署,而是为了支持python应用程序 我的代码大致如下: public class Transcoder { static

我正在尝试使用spark microframework()创建一个轻量级、自包含的Web服务。我需要处理多部分表单(我希望同时接收文件和一些键值数据)

Jetty(Spark依赖于它)提供了一个
MultiPartFilter
过滤器,它有助于处理多部分数据,但我不知道如何在我的代码中连接到它

我需要以编程方式执行此操作,因为此服务不会作为大型java安装的一部分进行部署,而是为了支持python应用程序

我的代码大致如下:

public class Transcoder {

    static Base64 base64 = new Base64();

    public static void main(String[] args) {

        org.apache.log4j.BasicConfigurator.configure();

        post(new Route("/convert") {
            @Override
            public Object handle(Request request, Response response) /*throws Exception, Docx4JException*/{

                //I want to do something like this:
                new_request = new MultiPartFilter().process_my_request(request);
                /* work with altered request*/
        });

    }

}

这可能吗?

我没有加载Jetty(或Spark)的源代码,但我只是在Spring源代码中查找,发现了一个名为
MultipartResolver
的接口,它有一个方法
resolveMultipart
,看起来它可以满足您的需要。如果在Jetty中发现实现类似命名接口的类,我不会感到惊讶:

public interface MultipartResolver {
 /* Parse the given HTTP request into multipart files and parameters,
 * and wrap the request inside a
 * {@link org.springframework.web.multipart.MultipartHttpServletRequest} object
 * that provides access to file descriptors and makes contained
 * parameters accessible via the standard ServletRequest methods.
 * ....
 */
 MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) throws MultipartException;

请注意,该包还提供了一组很好的实用程序来执行您想要的相同类型的流程,而无需重新处理Jetty筛选器。

我无法理解您为什么希望以编程方式调用筛选器。将功能重构为一个非筛选器类,该类可以由筛选器和您的非web应用程序代码调用,这不是更有意义吗?@DaveNewton:如问题中所述,我没有创建筛选器。我宁愿按原样使用代码,也不愿理解其内部结构,并将其重构为非过滤器;它们不会返回响应,它们依赖于过滤器链等。重构功能位比设置请求处理链更容易。谢谢!只是我进入java所需的信息,完成工作,然后再离开;)