turismo

turismo web framework

License

License

GroupId

GroupId

com.ghosthack
ArtifactId

ArtifactId

turismo
Last Version

Last Version

1.1.3
Release Date

Release Date

Type

Type

jar
Description

Description

turismo
turismo web framework
Source Code Management

Source Code Management

https://github.com/ghosthack/turismo

Download turismo

How to add to project

<!-- https://jarcasting.com/artifacts/com.ghosthack/turismo/ -->
<dependency>
    <groupId>com.ghosthack</groupId>
    <artifactId>turismo</artifactId>
    <version>1.1.3</version>
</dependency>
// https://jarcasting.com/artifacts/com.ghosthack/turismo/
implementation 'com.ghosthack:turismo:1.1.3'
// https://jarcasting.com/artifacts/com.ghosthack/turismo/
implementation ("com.ghosthack:turismo:1.1.3")
'com.ghosthack:turismo:jar:1.1.3'
<dependency org="com.ghosthack" name="turismo" rev="1.1.3">
  <artifact name="turismo" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.ghosthack', module='turismo', version='1.1.3')
)
libraryDependencies += "com.ghosthack" % "turismo" % "1.1.3"
[com.ghosthack/turismo "1.1.3"]

Dependencies

provided (1)

Group / Artifact Type Version
javax.servlet : servlet-api jar 2.5

test (6)

Group / Artifact Type Version
junit : junit jar 4.4
org.mockito : mockito-core jar 1.9.0-rc1
org.eclipse.jetty : jetty-servlet jar 7.4.5.v20110725
org.eclipse.jetty : jetty-jsp-2.1 jar 7.4.5.v20110725
org.eclipse.jetty : jetty-webapp jar 7.4.5.v20110725
org.apache.tomcat : jasper jar 6.0.33

Project Modules

There are no modules declared in this project.

turismo -- a sinatra-like Java web framework.

Build Status Javadocs Maven Central

Quick intro

public class AppRoutes extends RoutesList {
    protected void map() {
        get("/", new Action() {
            public void run() {
                print("Hello World!");
            }
        });
    }
}

Using wildcards and resource identifiers

public class AppRoutes extends RoutesList {
    protected void map() {
        get("/wildcard/*/:id", new Action() {
            public void run() {
                String id = params("id");
                print("wildcard id " + id);
            }
        });
        get("/alias/*/:id", "/wildcard/*/:id");
    }
}

Testing with standalone jetty

package com.ghosthack.turismo.example;

import com.ghosthack.turismo.action.*;
import com.ghosthack.turismo.routes.*;

public class AppRoutes extends RoutesList {

    @Override
    protected void map() {
        get("/", new Action() {
            @Override
            public void run() {
                print("Hello World!");
            }
        });
    }

    public static void main(String[] args) throws Exception{
        JettyHelper.server(8080, "/*", AppRoutes.class.getName());
    }

}

Getting started, as webapp

Using a webapp descriptor: web.xml

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  version="2.5">

  <servlet>
    <servlet-name>webapp-servlet</servlet-name>
    <servlet-class>com.ghosthack.turismo.servlet.Servlet</servlet-class>
    <init-param>
      <param-name>routes</param-name>
      <param-value>com.ghosthack.turismo.example.WebAppRoutes</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>webapp-servlet</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>

</web-app>

Implementing routes

package com.ghosthack.turismo.example;

import com.ghosthack.turismo.action.*;
import com.ghosthack.turismo.routes.*;

public class WebAppRoutes extends RoutesList {

    @Override
    protected void map() {
        get("/", new Action() {
            @Override
            public void run() {
                print("Hello World!");
            }
        });
    }

}

Rendering "templates"

Using a jsp:

get("/render", new Action() {
    public void run() {
        req().setAttribute("message", "Hello Word!");
        jsp("/jsp/render.jsp");
    }
});

And the render.jsp contains:

<%=request.getAttribute("message")%>

Other mappings

Methods for GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE

post("/search", new Action() {
    public void run() {
        String query = req().getParameter("q");
        print("Your search query was: " + query)
    }
});

The default route in RoutesMap/RoutesList sends a 404. Rewire with another action:

route(new Action() {
    public void run() {
        try {
            res().sendError(404, "Not Found");
        } catch (IOException e) {
            throw new ActionException(e);
        }
    }
});

Multipart

post("/image", new Action() {
    void run() {
        MultipartRequest request = MultipartFilter.wrapAndParse(req());
        String[] meta = request.getParameterValues("image");
        byte[] bytes = (byte[]) request.getAttribute("image");
        LOG.info("type: %s, name: %s, %d bytes", meta[0], meta[1], bytes.length);
    }
});

Maven repository

<dependency>
    <groupId>com.ghosthack</groupId>
    <artifactId>turismo</artifactId>
    <version>1.1.3</version>
</dependency>

Versions

Version
1.1.3
1.1.1
0.1.0