Difference between revisions of "Scalatra"

From air
Jump to navigation Jump to search
Line 3: Line 3:
 
online dictionary, and the British government’s new flagship website. It’s fast, battle-tested, and in production. This
 
online dictionary, and the British government’s new flagship website. It’s fast, battle-tested, and in production. This
 
article introduces you to the simplicity of Scalatra micro-framework.''
 
article introduces you to the simplicity of Scalatra micro-framework.''
  +
  +
=Install=
  +
http://www.scalatra.org/2.2/getting-started/installation.html
  +
<pre>
  +
javac -version
  +
java -version
  +
curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh
  +
PATH=$PATH:~/bin
  +
export PATH
  +
source ~/.bash_profile # (Mac)
  +
source ~/.bashrc # (Linux)
  +
cs n8han/giter8
  +
</pre>
   
 
=Example of web app=
 
=Example of web app=

Revision as of 20:14, 6 May 2016

Scalatra is an HTTP micro-framework, written in the up-and-coming new language, Scala. Scalatra is used by LinkedIn, the BBC, the Guardian newspaper, games website IGN, social identity provider JanRain, the Wordnik online dictionary, and the British government’s new flagship website. It’s fast, battle-tested, and in production. This article introduces you to the simplicity of Scalatra micro-framework.

Install

http://www.scalatra.org/2.2/getting-started/installation.html

javac -version
java -version
curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh
PATH=$PATH:~/bin
export PATH
source ~/.bash_profile # (Mac)
source ~/.bashrc       # (Linux)
cs n8han/giter8

Example of web app

(from Book Scalatra in Action)

Generate the project

g8 scalatra/scalatra-sbt
package com.example.app
import org.scalatra._
import scalate.ScalateSupport
class MyScalatraServlet extends ScalatraServlet with ScalateSupport {
  get(“/”) {
    <html>
    <body>
    <h1>Hello, world!</h1>
    Say <a href=“hello-scalate”>hello to Scalate</a>.
    </body>
    </html>
  }
  notFound {
    // remove content type in case it was set through an action
    contentType = null
    // Try to render a ScalateTemplate if no route matched
    findTemplate(requestPath) map { path =>
      contentType = “text/html”
      layoutTemplate(path)
   } orElse serveStaticResource() getOrElse resourceNotFound()
  }
}


Start the web container

container:start

browse http://localhost:8080/hello

Books