在Jetty中通过默认servlet提供静态资源

J

我的Servlet(在Jetty上运行)还应该部署静态目录中的静态内容。

目录结构:

/
  - static/
    - [static files]
  - WEB-INF/
    - [my servlet .class files and the web.xml]

我的web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <filter>
        <filter-name>filter</filter-name>
        <filter-class>com.example.StaticFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

我的主要Servlet文件:

@WebServlet("/*")
public class SampleClass extends HttpServlet {
     //Code
}

而我的过滤器:

import java.io.IOException;

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.HttpServletRequest;

public class StaticFilter implements Filter {

    @Override
    public void init(FilterConfig fc) throws ServletException {
    }

    @Override
    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        String path = req.getRequestURI().substring(req.getContextPath().length());

        if (path.startsWith("/static")) {
            request.getRequestDispatcher(path).forward(request, response);
        } else {
            chain.doFilter(request, response);
        }
    }
}

现在,如果我调用/static/style.css,我想从/ static获取文件,而不是将其重定向到servlet。

服务器:Jetty 9.1.0 RC1

乔基姆·埃德菲尔特(Joakim Erdfelt)

@WebServlet在PathSpec上定义的"/*"是防止默认servlet被执行。

您本质上说:“我知道我在做什么,我希望所有请求,所有路径都通过我路由”

考虑在"/sample""/sample/*"或类似路径的路径上设置Servlet 除了"/""/*"那样,任何东西都可以捕捉到一切。

@WebServlet("/sample/*")

否则,您可以default在任何容器中引用Servlet,而不仅仅是这样的Jetty(它是Servlet Spec的强制性功能)...

getServletContext().getNamedDispatcher("default").forward(request, response);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Spring / Servlet / Tomcat中从内存提供静态资源的优雅方法?

来自分类Dev

Glassfish服务器如何在不进行servlet映射的情况下提供静态资源

来自分类Dev

Racket servlet 提供静态文件

来自分类Dev

来自库 jar (Jetty) 的 Servlet Web 资源

来自分类Dev

将Jetty资源库设置为嵌入在同一jar文件中的静态文件

来自分类Dev

使用ServletContainer作为Servlet服务静态资源

来自分类Dev

在 Angular 6 中通过指令为组件提供默认属性

来自分类Dev

如何从静态资源中为 UWP 中的依赖项属性添加默认值

来自分类Dev

静态资源上的“提供值...”异常

来自分类Dev

如何从WildFly的战争之外提供静态资源

来自分类Dev

ResourceHandlerRegistry 提供静态资源的不同方式

来自分类Dev

使用Clojure中的相对路径为不同的路径提供静态资源

来自分类Dev

如何使用设计属性从社区中的静态资源提供图像路径

来自分类Dev

如何让 Eclipse 提供默认的 servlet url?

来自分类Dev

提供静态(默认)值的最佳方法

来自分类Dev

在Servlet中从ExternalContext获取资源

来自分类Dev

在代码中设置静态资源

来自分类Dev

在XAML中处理静态资源

来自分类Dev

如何使servlet将特殊的url映射到静态资源?

来自分类Dev

通过cachall路由提供静态内容-Express

来自分类Dev

通过Web API提供静态内容

来自分类Dev

Nginx:通过URL路径提供静态文件

来自分类Dev

Nginx:通过URL路径提供静态文件

来自分类Dev

默认参数中的静态数据成员(类指针)通过 C++ 类

来自分类Dev

通过Play Framework中的自定义Scala操作提供静态页面

来自分类Dev

更新后通过存储在php-fpm容器中的nginx提供新的静态文件

来自分类Dev

从文件系统提供静态资源| 春季启动网

来自分类Dev

配置.reload()后,Struts2不提供静态资源

来自分类Dev

如何正确提供静态xml资源并绑定组合框?

Related 相关文章

  1. 1

    在Spring / Servlet / Tomcat中从内存提供静态资源的优雅方法?

  2. 2

    Glassfish服务器如何在不进行servlet映射的情况下提供静态资源

  3. 3

    Racket servlet 提供静态文件

  4. 4

    来自库 jar (Jetty) 的 Servlet Web 资源

  5. 5

    将Jetty资源库设置为嵌入在同一jar文件中的静态文件

  6. 6

    使用ServletContainer作为Servlet服务静态资源

  7. 7

    在 Angular 6 中通过指令为组件提供默认属性

  8. 8

    如何从静态资源中为 UWP 中的依赖项属性添加默认值

  9. 9

    静态资源上的“提供值...”异常

  10. 10

    如何从WildFly的战争之外提供静态资源

  11. 11

    ResourceHandlerRegistry 提供静态资源的不同方式

  12. 12

    使用Clojure中的相对路径为不同的路径提供静态资源

  13. 13

    如何使用设计属性从社区中的静态资源提供图像路径

  14. 14

    如何让 Eclipse 提供默认的 servlet url?

  15. 15

    提供静态(默认)值的最佳方法

  16. 16

    在Servlet中从ExternalContext获取资源

  17. 17

    在代码中设置静态资源

  18. 18

    在XAML中处理静态资源

  19. 19

    如何使servlet将特殊的url映射到静态资源?

  20. 20

    通过cachall路由提供静态内容-Express

  21. 21

    通过Web API提供静态内容

  22. 22

    Nginx:通过URL路径提供静态文件

  23. 23

    Nginx:通过URL路径提供静态文件

  24. 24

    默认参数中的静态数据成员(类指针)通过 C++ 类

  25. 25

    通过Play Framework中的自定义Scala操作提供静态页面

  26. 26

    更新后通过存储在php-fpm容器中的nginx提供新的静态文件

  27. 27

    从文件系统提供静态资源| 春季启动网

  28. 28

    配置.reload()后,Struts2不提供静态资源

  29. 29

    如何正确提供静态xml资源并绑定组合框?

热门标签

归档