spring-boot - 使用 Jetty 和 Jersey 在 Spring Boot 中提供静态内容
问题描述
我正在使用Jetty
服务器运行 Spring Boot 应用程序。API 由Jersey servlet
. 静态内容放在src/main/static
和中src/main/private-static
。
问题#1src/main/static
未提供静态内容
里面的内容src/main/static
是公开的,可以自由访问。据此:https ://docs.spring.io/spring-boot/docs/1.3.8.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc- static-content Spring boot 应该自动提供静态内容,但它没有。
问题#2如何src/main/private-static
为这个在提供文件之前检查身份验证的自定义 servlet 设置静态内容目录。
我创建了另一个通过身份验证servlet
提供静态内容
@Bean
public ServletRegistrationBean<HttpServlet> privateStaticContent() {
return new ServletRegistrationBean<>(new HttpServlet() {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
int status = isAuthenticated(req) ? 200 : 401;
resp.setStatus(status);
}
}, "/private-static/*");
}
基本上这个 servlet 应该提供目录中的文件src/main/private-static
,但我不确定如何以及在哪里配置它。
问题#3为了让 Jersey 在/api
端点服务,我在application.properties
server.servlet.context-path=/api
但这使得所有 servlet 都使用这个/api
端点。我怎样才能只为 Jersey servlet 而不是为其他人配置它。有没有类似的东西server.servlet.jersey.context-path=/api
?
解决方案
src/main/java/<dir>/<static-content>
不是 maven 或 gradle 会看到的东西。
src/main/java
树仅用于,*.java
没有其他用途。
也许你应该src/main/resources/<dir>/<static-content>
改用?
推荐阅读
- javascript - 当我们在javascript中将字符串变量初始化为null或空字符串时有什么区别?哪个是首选
- c++ - 由于 X509 重新定义问题,编译 WebRTC 和 boost::uuid 时出现问题。我应该在哪里创建问题?
- google-sheets - 如果另一个单元格的值为零,是否有一个公式可以用来返回 0 值?
- r - 使用数据框中的因子名称和级别顺序的变量更改 R 中的因子级别
- scala - Scala 中 TypedDataset 和类型边界的隐式编码器
- selenium - 获取以下代码的“元素不可交互”
- python - 在 TensorFlow 中沿一个轴应用排列
- angular - 为什么 ng serve 会导致 JS 文件出现 404 错误?
- android - 从相机意图中获取像素的颜色
- android - Android 9 Pie 崩溃 (com.google.android.gms...ClassNotFoundException)