首页 > 解决方案 > 如何在 Scala 中提供静态 HTML 文件?

问题描述

我有一个 EchoServer,可以在我的计算机上运行和提供静态本地 HTML 文件。如果文件不存在,它将发出错误。我想知道如何在此代码中提供本地文件路径?

我实际上是该语言的新手,并不真正知道它是如何工作的。

这是我尝试运行服务器的主要课程。

def main(args: Array[String]) {
    val server = new ServerSocket(9999)
    while(true) {
      try {
        serve(server)
        //Maybe the filepath goes here?
      }catch {
        case e: Exception => ("File not found")
      }

    }
  }

虽然这两个是输入的内容

object EchoServer {
  def read_and_write(in: BufferedReader, out:BufferedWriter): Unit = {
    out.write(in.readLine())
    out.flush()
    in.close()
    out.close()
  }

  def serve(server: ServerSocket): Unit = {
      val s = server.accept()
      val in = new BufferedReader(new InputStreamReader(s.getInputStream))
      val out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream))

      read_and_write(in, out)

      s.close()
  }

因此,如果我让它正常运行,它将读取任何现有的 HTML 文件,如果它在我的本地计算机上不存在,则不输出错误。

标签: scala

解决方案


Echo 服务器相对简单,因为它运行在 ECHO 协议[1] 上。如果您需要提供静态文件,除非您想通过 TCP/UDP 实现自己的协议,否则我建议您使用 Scala 中任何可用的 Web 框架通过 HTTP(s) 来实现。

Scala中有很多Web 框架,其中大多数应该支持直接从 Web 服务器提供文件夹或静态文件。

使用 Scalatra 的一个简单示例是将要提供的文件放在文件webapp夹中并完成。你可以在这里阅读更多关于它的信息。如果您想对输入请求执行任何类型的验证,您还可以编写一个小的 API 来执行这些验证帖子,该 API 可以通过网络为文件提供服务。

[1] - https://www.rfc-editor.org/rfc/rfc862


推荐阅读