当前位置: 首页 > 知识库问答 >
问题:

Spring Boot和泽西静态内容

公冶光亮
2023-03-14

我已经配置了spring boot来加载Jersey作为过滤器。

spring.jersey.type=filter我已将我的泽西属性设置为允许静态内容:

属性(ServletProperties.FILTER_FORWARD_ON_404, 真);我在Spring启动中读到,我可以将我的内容放在我的资源目录中,在名为“静态”,“公共”文件夹的目录下。然而,我永远无法到达我的索引.html页面。我让它工作的唯一方法是在src / main下创建一个webapp dir,并将我的索引.html文件放在那里。我正在将应用程序部署为 jar。

当使用异常 jersey 提供程序处理程序(如:

package com.product.api.endpoint;

import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

import org.springframework.stereotype.Component;

import com.product.api.entity.DefaultError;
import com.product.api.exception.DefaultException;

@Component 
@Provider
public class DefaultExceptionHandler  implements ExceptionMapper<RuntimeException> {

    @Override
    public Response toResponse(RuntimeException ex) {

        if(ex instanceof DefaultException) {
            DefaultException dex = (DefaultException) ex;
            return Response.status(dex.getCode())
                            .entity(new DefaultError(dex.getMessage()))
                            .type(MediaType.APPLICATION_JSON)
                            .build();
        } else {
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
                            .entity(new DefaultError(ex.getMessage()))
                            .type(MediaType.APPLICATION_JSON)
                            .build();
        }


    }

}

如果没有定义@Provider,静态内容就像一个魅力。

共有1个答案

徐杰
2023-03-14

我遇到了完全相同的问题,我通过添加以下行解决了它:

public Response toResponse(RuntimeException exception) {
  if (exception.getMessage().equals("HTTP 404 Not Found")) {
    // allow ServletProperties.FILTER_FORWARD_ON_404 to work
    return Response.status(404).build(); // don't change content type or set entity
  }
  //...
}
 类似资料:
  • 类似于另一个问题(参见过滤静态内容Jersey),我想从Jetty提供静态内容。在浩瀚的互联网上散布着几个类似的问题,但大多数都不涉及Guice,而那些涉及Guice的问题已经完全过时了。 我有一个现有的服务,使用泽西(1.12)和Guice(3)与以下: < code>MyGuiceConfig看起来像这样: 当我使用 时,我的服务按预期工作。但是,任何对静态内容的请求都会产生404。 如何在不

  • 因此,我正在IntelliJ开发一个spring boot应用程序。使用Gradle,我创建了sprint引导jar文件。 我很难确定将JSP和静态内容(如。js文件)放在哪里,这样运行jar和从IntelliJ内部运行都能正常工作!

  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 我花了太多的时间(我想超过10个小时)试图弄清楚如何让基本的json调用(来自angularjs)在我的泽西2.4上打开和处理。我已经在谷歌上尝试了所有可能的结果,但仍然在得到一个 415(不支持的媒体类型) 客户端和 组织。玻璃鱼。运动衫消息内部的MessageBodyProviderNotFoundException:找不到媒体类型=应用程序/json,类型=类的MessageBodyRead

  • 我在解析JSON到日期对象时遇到一个问题。

  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?