Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Input Behavior | Input | Output |
---|---|---|
creates a new word | "hello" | "hello" |
creates a definition for selected word | "a greeting" | "Hello, Definition: A greeting" |
Behavior | Path | HTTP Verb | App.java Example | Process |
---|---|---|---|---|
Home Page | / | GET | get("/", (request, response) -> Map<String, Object> model = new HashMap<String, Object>(); model.put("words", Word.all()); model.put("template", "templates/index.vtl"); return new ModelAndView(model, layout);}, new VelocityTemplateEngine()); | User requests page. Server sends HTTP GET request. Spark matches request to "/" route. |
Display word form | /word-form | GET | get("/word-form", (request, response) -> {Map<String, Object> model = new HashMap<String, Object>(); model.put("template", "templates/word-form.vtl"); return new ModelAndView(model, layout);}, new VelocityTemplateEngine()); | User requests form to create new word. Server returns page with word form. Form action and method must match path/verb of route below. |
Display definitions for selected word | /word/:id/definition | GET | get("/word/:id/definition", (request, response) -> {Map<String, Object> model = new HashMap<String, Object>(); Word word = Word.find(Integer.parseInt(request.params(":id"))); model.put("word", word); model.put("template", "templates/word-definitions.vtl"); return new ModelAndView(model, layout);}, new VelocityTemplateEngine()); | User requests page. Server collects selected word, renders template. Velocity loops through definitions and displays them. |
Display definition form | /word/:id/definition/new | GET | get("/word/:id/definition/new", (request, response) -> {Map<String, Object> model = new HashMap<String, Object>(); Word word = Word.find(Integer.parseInt(request.params(":id"))); model.put("word", word); model.put("template", "templates/definition-form.vtl"); return new ModelAndView(model, layout);}, new VelocityTemplateEngine()); | User requests form to create new definition for selected word. Server returns page with definition form. Form action and method must match path/verb of route below. |
Creates new word with definition when word form is submitted | / | POST | post("/", (request, response) -> {Map<String, Object> model = new HashMap<String, Object>(); Definition newDefinition = new Definition(request.queryParams("description")); Word newWord = new Word(request.queryParams("name")); newWord.addDefinition(newDefinition); model.put("words", Word.all()); model.put("template", "templates/index.vtl"); return new ModelAndView(model, layout);}, new VelocityTemplateEngine()); | User submits word form. Server grabs attributes from form. Uses them to create new word. Server renders the home page with all words listed. |
Creates new definition for word when definition form is submitted | /word/:id/definition/new | POST | post("/word/:id/definition/new", (request, response) -> {Map<String, Object> model = new HashMap<String, Object>(); Word word = Word.find(Integer.parseInt(request.params(":id"))); Definition newDefinition = new Definition(request.queryParams("description")); word.addDefinition(newDefinition); model.put("word", word); model.put("template", "templates/word-definitions.vtl"); return new ModelAndView(model, layout);}, new VelocityTemplateEngine()); | User submits description form. Server grabs attributes from form. Uses them to create new description for selected word. Server renders page with all definitions of selected word. |
-
Clone this repository
-
blah blah blah
-
Java
-
Gradle
-
JUnit
-
Spark
If you run into any problems, contact me at beth97209@gmail.com
Copyright (c) 2017 Beth Hansen.
Licensed under the MIT license