Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
Use github markdown source annotations for syntax coloring.
  • Loading branch information
fernandezpablo85 committed Dec 17, 2012
1 parent b024af8 commit f8fcea0
Showing 1 changed file with 134 additions and 115 deletions.
249 changes: 134 additions & 115 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,165 +5,184 @@ turismo -- a sinatra-like Java web framework without sinatra goodness.

Quick intro
-----------

public class AppRoutes extends RoutesList {
protected void map() {
get("/", new Action() {
public void run() {
print("Hello World!");
}
});
}
```java
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");
}
```java
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());
}

```java
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>
Using a webapp descriptor: `web.xml`

```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!");
}
});
}

```java
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:
```java
get("/render", new Action() {
public void run() {
req().setAttribute("message", "Hello Word!");
jsp("/jsp/render.jsp");
}
});
```

<%=request.getAttribute("message")%>
And the `render.jsp` contains:

```xml
<%=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)
}
});
```java
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);
}
}
});
```java
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);
}
});
```java
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>
```xml
<dependency>
<groupId>com.ghosthack</groupId>
<artifactId>turismo</artifactId>
<version>1.1.3</version>
</dependency>
```

0 comments on commit f8fcea0

Please sign in to comment.