作者:书友57087250 | 来源:互联网 | 2023-08-16 16:49
jetty(官网:http:www.eclipse.orgjetty)是一个轻量级的webserver容器,可以单独启动,也可以嵌入到scalajava中用代码进行启动,从而方便集成到
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项目
工程结构:
在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 server还有很多其他的配置,比如context,这里只是基本设置
- setResourceBase可以设置web访问的主资源目录,可以用相对和绝对路径
- setDirectoriesListed设置true之后,访问主页时,如果没有主页文件,默认会把主目录的文件list出来
- server.join()最后会等待程序end的时候关闭jetty server