和Java一样,我们也可以使用Scala来创建Web工程,这里使用的是Scalatra,它是一款轻量级的Scala web框架,和Ruby Sinatra功能类似。比较推荐的创建Scalatra工程是使用Giter8,他是一款很不错的用于创建SBT工程的工具。所以我们需要在电脑上面安装好Giter8。这里以Centos系统为例进行介绍。
安装giter8
在安装giter8之前需要安装Conscript,它是可以部署和更新Scala代码的工具,而giter8依赖了Conscript工具,所以我们需要先安装Conscript。可以使用下面命令安装Conscript:
[iteblog@www.iteblog.com iteblog]$ curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh
运行完这段命令之后,会在你的home目录下生成bin和.conscript目录,我们需要将bin目录加入到环境变量中:
[iteblog@www.iteblog.com iteblog]$ vim ~/.bashrc PATH=$PATH:~/bin export PATH
然后运行source ~/.bashrc
使得环境变量生效。之后我们可以安装giter8,命令如下:
[iteblog@www.iteblog.com iteblog]$ cs n8han/giter8
根据你网络情况,安装需要的时间不一样,安装的时候会下载所有的依赖,安装完之后,会在你home目录的bin文件夹下产生一个g8文件(Conscripted n8han/giter8 to /home/iteblog/bin/g8)
使用giter8创建Scala Web工程
安装完giter8之后,我们就可以使用它来创建Scala web工程:
[iteblog@www.iteblog.com iteblog]$ g8 scalatra/scalatra-sbt organization [com.example]: com.iteblog name [My Scalatra Web App]: myTest version [0.1.0-SNAPSHOT]: servlet_name [MyScalatraServlet]: package [com.example.app]: com.iteblog scala_version [2.11.6]: 2.10.4 sbt_version [0.13.8]: scalatra_version [2.4.0.RC3]: Template applied in ./mytest
然后会在当前目录下创建mytest文件夹,目录结构如下:
. ├── project │ ├── build.properties │ ├── build.scala │ └── plugins.sbt ├── README.md ├── sbt └── src ├── main │ ├── resources │ │ └── logback.xml │ ├── scala │ │ ├── com │ │ │ └── iteblog │ │ │ ├── MyScalatraServlet.scala │ │ │ └── MytestStack.scala │ │ └── ScalatraBootstrap.scala │ └── webapp │ └── WEB-INF │ ├── templates │ │ ├── layouts │ │ │ └── default.jade │ │ └── views │ │ └── hello-scalate.jade │ └── web.xml └── test └── scala └── com └── iteblog └── MyScalatraServletSpec.scala 16 directories, 13 files
可以看到,g8给我们生成了很多文件,然后我们可以进入到mytest文件夹,运行sbt命令:
[iteblog@www.iteblog.com iteblog]$ cd mytest [iteblog@www.iteblog.com iteblog]$ ./sbt > container:start
然后这个会在8080端口启动Jetty服务器,我们可以在浏览器访问:http://www,iteblog.com:8080。如果你看到页面显示了Hello, world!等内容,说明你的Scala webg工程部署成功了!
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【使用Scalatra创建Scala WEB工程】(https://www.iteblog.com/archives/1553.html)