标签: spark-java

使用Spark Web应用程序框架时获取"不支持的major.minor版本52.0"异常

获取以下异常:线程"main"中的异常java.lang.UnsupportedClassVersionError:spark/Route:不支持的major.minor版本52.0

尝试使用spark Web应用程序框架,当我执行文件时,它会抛出此异常.

Spark Framework版本:2.0.0

java spark-java

10
推荐指数
1
解决办法
1万
查看次数

如何使用java spark下载文件?

我想为文件下载编写简单的rest api.

我无法找到有关它的文档,因为我知道我需要设置mimetype='application/zip'响应,但不清楚如何返回流.

http://sparkjava.com/

更新:这里解决了示例代码:

public static void main(String[] args) {
    //setPort(8080);
    get("/hello", (request, responce) -> getFile(request,responce));
}

private static Object getFile(Request request, Response responce) {
    File file = new File("MYFILE");
    responce.raw().setContentType("application/octet-stream");
    responce.raw().setHeader("Content-Disposition","attachment; filename="+file.getName()+".zip");
    try {

        try(ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(responce.raw().getOutputStream()));
        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)))
        {
            ZipEntry zipEntry = new ZipEntry(file.getName());

            zipOutputStream.putNextEntry(zipEntry);
            byte[] buffer = new byte[1024];
            int len;
            while ((len = bufferedInputStream.read(buffer)) > 0) {
                zipOutputStream.write(buffer,0,len);
            }
        }
    } catch (Exception e) {
        halt(405,"server …
Run Code Online (Sandbox Code Playgroud)

java rest spark-java

10
推荐指数
1
解决办法
8596
查看次数

如何处理多个Route的异常

我正在掌握Spark框架,并且我正在尝试理解以多种路径的统一方式处理异常的最佳方法.

目前我有许多路由,它们都按以下方式处理异常:

...
catch (final Exception e) {
    ...
    response.status(418);
    return e.getMessage();
}
...
Run Code Online (Sandbox Code Playgroud)

这留下了很多不足之处,主要是异常逻辑在它们之间重复.我知道它可以通过重构来改进,但我想知道是否有类似于Spring中的ExceptionHandler机制,您可以在抛出特定异常时执行操作,例如:

@ExceptionHandler(Exception.class)
public void handleException(final Exception e, final HttpServletRequest request) {
    ...executed for the matching exception...
}
Run Code Online (Sandbox Code Playgroud)

那么,是否存在用于异常处理的Spark-esque机制?我查了一下文档并做了简短的介绍.如果没有,我将继续我的重构计划.谢谢.

java exception-handling spark-java

9
推荐指数
1
解决办法
5078
查看次数

火花中的URL模式

我正在尝试制作一个与以下网址匹配的过滤器:

/foo/foo/*

所以任何事情都在/foo/基础情况下/foo

我有这个过滤器:

    Spark.before("/foo/*", (request, response) -> {
        String ticket = request.cookie("session");
        if (ticket == null) {
            Spark.halt(302);
        }
    });
Run Code Online (Sandbox Code Playgroud)

但是当我进入时,这当然不会执行 /foo

我尝试了以下但没有运气:

/foo* /foo.* /foo/

反正有没有实现这个目标?或者也许使用URL列表?这样我就可以将两个url分配给同一个过滤器.

并且请不要说将函数存储在变量中,以便我使用它两次,因为我觉得它根本不干净..

java url-routing spark-java

9
推荐指数
1
解决办法
3089
查看次数

使用变换器时,如何从spark向响应添加标头

我有这个:

get ("/test", (req, resp) -> {
    return repository.getAll();
}, new JsonTransformer());
Run Code Online (Sandbox Code Playgroud)

我的变压器看起来像:

public class JsonTransformer implements ResponseTransformer {

    ObjectMapper om = new ObjectMapper();

    public JsonTransformer() {
    }

    @Override
    public String render(Object o) throws Exception {
        return om.writeValueAsString(o);
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试在响应中使用标题函数添加标题,如下所示:

get ("/test", (req, resp) -> {
    resp.header("Content-Type", "application/json");
    return repository.getAll();
}, new JsonTransformer());
Run Code Online (Sandbox Code Playgroud)

我尝试过在文档中找到的内容:我认为这会设置接受类型

get ("/test", "application/json", (req, resp) -> {
    return repository.getAll();
}, new JsonTransformer());
Run Code Online (Sandbox Code Playgroud)

但无处我得到application/json我的Content-Type

java java-8 spark-java

8
推荐指数
2
解决办法
8003
查看次数

使用Spark Framework为静态文件设置特定URL

我使用的Spark服务网页.对于静态文件我初始化星火喜欢这里所说:

所以我有这个结构:

/src/main/resources/public/
                      |-- foo/
                           |-- css/
                           |    |-- bootstrap.css
                           |-- js/
                           |    ...
                           |-- img/
                                ...
Run Code Online (Sandbox Code Playgroud)

我制作了一个foo文件夹,因为我的网页位于/foourl ..这样:

http://www.example.com/foo/index

所以我的静态文件像这样加载,例如:

http://www.example.com/foo/css/bootstrap.css

我现在想要的是将此路径变量.因为我有不同的环境,例如,如果我在另一个域中部署此应用程序,我希望它是:

http://www.example2.com/superfoo/css/bootstrap.css

但为此,我必须更改版本并更改文件夹...

对于控制器我很容易做到:

例:

    Spark.get(this.appBasePath + "/users", (request, response) -> {
        return this.getUsersView(request);
    }, new FreeMarkerEngine());
Run Code Online (Sandbox Code Playgroud)

this.appBasePath 来自加载决定环境的配置.

所以我要问的是以编程方式设置静态文件URL而不制作任何文件夹.有没有办法实现这个目标?

java spark-java

8
推荐指数
1
解决办法
3342
查看次数

如何使用Spark Java返回静态html页面?

一个带火花的问候世界:

 get(new Route("/hello") {
            @Override
            public Object handle(Request request, Response response) {
                response.type("text/html");
                return "<h1>Hello Spark MVC Framework!</h1>";
            }
        });
Run Code Online (Sandbox Code Playgroud)

如何返回静态文件index.html?

笔记:

  • 我需要将index.html放在jar中
  • 本着火花java的简单精神,我想尽可能避免通过模板,这对于静态页面来说是过度的.

java spark-java

8
推荐指数
2
解决办法
8530
查看次数

单个JVM中的多个Spark服务器

有没有办法在同一个JVM中运行多个Sparkjava服务器实例?我在"插件"软件中使用它,并根据外部环境启动我的插件的多个实例,然后导致

java.lang.IllegalStateException: This must be done before route mapping has begun
at spark.SparkBase.throwBeforeRouteMappingException(SparkBase.java:256)
at spark.SparkBase.port(SparkBase.java:101)
at com.foo.bar.a(SourceFile:59)
Run Code Online (Sandbox Code Playgroud)

在我看来,通过查看它是围绕代码中的静态字段构建的代码,所以我正在考虑类加载器技巧或以SparkServerFactory某种方式消除SparkBase.

java spark-java

8
推荐指数
1
解决办法
2751
查看次数

为什么Sparkjava不适合生产?

不,不是Apache Spark.我发现Sparkjava是最简单的API方法,也是我点击次数最多的方法,但是每个人都说它不应该用于制作,但没有人给我一个很好的答案.你们有没有人知道任何不稳定或安全漏洞或其他什么?

java production libraries spark-java

8
推荐指数
2
解决办法
6095
查看次数

在SparkJava中为静态文件添加`before`过滤器

我在Spark应用程序中为静态文件指定了一个位置:

Spark.staticFileLocation("/public")
Run Code Online (Sandbox Code Playgroud)

现在我想为某些文件添加一个过滤器(例如出于安全目的),但它不起作用:

Spark.before("/admin.html", myFilter);
Run Code Online (Sandbox Code Playgroud)

但是,对于非静态映射,它确实有效.是否可以为静态文件配置这样的过滤器?

换句话说,Spark保护静态文件(如管理页面的模板)在没有身份验证的情况下暴露的最佳做法是什么?

java spark-java

7
推荐指数
1
解决办法
2216
查看次数