jetty启动的两种方式: standalone启动和scala程序内嵌启动

jetty(官网:http://www.eclipse.org/jetty/)是一个轻量级的web server容器,可以单独启动,也可以嵌入到scala/java中用代码进行启动,从而方便集成到已有的业务逻辑中去

standalone方式

下载jetty distribution
命令行进入根目录,执行启动命令

cd demo-base
java -jar ../start.jar

在浏览器中访问http://localhost:8080/, 就可以看到示例页面了
这里启动的是jetty官方自带demo页面
详细使用请参考:

http://www.cnblogs.com/yiwangzhibujian/p/5832597.html
http://orchome.com/jetty/index

scala内嵌启动

scala项目中可以手动添加jetty相关的依赖jar文件,然后引用jetty的api, 不过用sbt包管理工具配置更加方便

建立sbt scala项目
工程结构:

jetty启动的两种方式: standalone启动和scala程序内嵌启动_第1张图片

在scala的sbt项目中配置jetty的依赖
build.sbt

name := "jettyserver"

version := "1.0"

scalaVersion := "2.12.3"

libraryDependencies ++= Seq(
    "org.eclipse.jetty" % "jetty-server" % "9.3.13.v20161014",
    "org.eclipse.jetty.websocket" % "javax-websocket-server-impl" % "9.3.13.v20161014"
)

scala启动程序
boot.scala

import org.eclipse.jetty.server.Server
import org.eclipse.jetty.server.handler.{DefaultHandler, HandlerList, ResourceHandler}
import org.eclipse.jetty.servlet.ServletContextHandler

object Boot
{
    def main(args: Array[String]): Unit =
    {
        // set port
        val server = new Server(1777)
        // init handler
        val resource_handler = new ResourceHandler()
        resource_handler.setDirectoriesListed(true) // enable list directory file when index.html not exit
//        resource_handler.setWelcomeFiles(Array("index.html")) // set home page, it is an option here
        resource_handler.setResourceBase("./web") // set homepage directory, use relative path

        server.setHandler(resource_handler)
        // start
        server.start()
        // wati for server to stop
        server.join()
    }
}

在工程目录中建立一个web目录,放置jetty启动的主页面
index.html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello jettytitle>
head>
<body>
    <h1>jetty test in scalah1>
    <p>enjoy it now!p>
body>
html>

浏览器访问: localhost:1777,就可以打开主页
jetty启动的两种方式: standalone启动和scala程序内嵌启动_第2张图片

注意:

  • jetty server还有很多其他的配置,比如context,这里只是基本设置
  • setResourceBase可以设置web访问的主资源目录,可以用相对和绝对路径
  • setDirectoriesListed设置true之后,访问主页时,如果没有主页文件,默认会把主目录的文件list出来
  • server.join()最后会等待程序end的时候关闭jetty server

你可能感兴趣的:(Scala)