├── .classpath
├── .gitattributes
├── .gitignore
├── .project
├── .settings
├── org.eclipse.jdt.core.prefs
└── org.eclipse.m2e.core.prefs
├── README.md
├── pom.xml
├── src
└── main
│ ├── java
│ ├── com
│ │ └── spark
│ │ │ ├── controller
│ │ │ ├── Controller.java
│ │ │ ├── GreetController.java
│ │ │ ├── IndexController.java
│ │ │ └── UserController.java
│ │ │ ├── model
│ │ │ └── User.java
│ │ │ └── services
│ │ │ └── UserService.java
│ └── spark
│ │ └── Main.java
│ └── resources
│ └── templates
│ ├── greet
│ └── greet.html
│ ├── index
│ └── index.html
│ └── layout.html
└── target
└── classes
├── com
└── spark
│ ├── controller
│ ├── Controller.class
│ ├── GreetController.class
│ ├── IndexController.class
│ └── UserController.class
│ ├── model
│ └── User.class
│ └── services
│ └── UserService.class
├── spark
└── Main.class
└── templates
├── greet
└── greet.html
├── index
└── index.html
└── layout.html
/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear on external disk
35 | .Spotlight-V100
36 | .Trashes
37 |
38 | # Directories potentially created on remote AFP share
39 | .AppleDB
40 | .AppleDesktop
41 | Network Trash Folder
42 | Temporary Items
43 | .apdisk
44 |
--------------------------------------------------------------------------------
/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | spark
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.m2e.core.maven2Builder
15 |
16 |
17 |
18 |
19 |
20 | org.eclipse.jdt.core.javanature
21 | org.eclipse.m2e.core.maven2Nature
22 |
23 |
24 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5 | org.eclipse.jdt.core.compiler.compliance=1.8
6 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
8 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11 | org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
12 | org.eclipse.jdt.core.compiler.source=1.8
13 |
--------------------------------------------------------------------------------
/.settings/org.eclipse.m2e.core.prefs:
--------------------------------------------------------------------------------
1 | activeProfiles=
2 | eclipse.preferences.version=1
3 | resolveWorkspaceProjects=true
4 | version=1
5 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # sparkjava
2 | Setting up basic project in sparkjava showing how to organize code as MVC in sparkjava.
3 |
4 | Dependencies sparkjava a micro web framework
5 |
6 |
7 | com.sparkjava
8 | spark-core
9 | 2.3
10 |
11 |
12 | In Main.java we have all the routes
13 |
14 | All the controllers are in controller folder which extends the base Controller class
15 | corresponding to every Controller class there a folder in templates folder
16 | which contains all the templates related to Controller
17 |
18 | We are using a hashMap as database which act as a in cache database and in public/asset folder we will be having
19 | all our static assets.
20 |
21 | For templating we are using Apache velocity templating library.
22 |
23 |
24 |
--------------------------------------------------------------------------------
/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | com.spark
5 | spark
6 | 0.0.1-SNAPSHOT
7 |
8 |
9 | com.sparkjava
10 | spark-core
11 | 2.3
12 |
13 |
14 | com.sparkjava
15 | spark-template-velocity
16 | 2.3
17 |
18 |
19 | com.google.code.gson
20 | gson
21 | 2.4
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/main/java/com/spark/controller/Controller.java:
--------------------------------------------------------------------------------
1 | package com.spark.controller;
2 |
3 | import com.google.gson.Gson;
4 |
5 |
6 | public class Controller {
7 | public static final String LAYOUT_FILE = "templates/layout.html";
8 | public static Gson gson = new Gson();
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/spark/controller/GreetController.java:
--------------------------------------------------------------------------------
1 | package com.spark.controller;
2 |
3 | import java.util.HashMap;
4 |
5 | import spark.ModelAndView;
6 | import spark.Request;
7 | import spark.Response;
8 |
9 | public class GreetController extends Controller {
10 | public GreetController() {
11 | }
12 |
13 | public static ModelAndView greet(Request req, Response res) {
14 | HashMap model = new HashMap();
15 | model.put("template", "templates/greet/greet.html");
16 | model.put("name", req.params("name"));
17 | return new ModelAndView(model, LAYOUT_FILE);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/spark/controller/IndexController.java:
--------------------------------------------------------------------------------
1 | package com.spark.controller;
2 |
3 | import java.util.HashMap;
4 |
5 | import spark.ModelAndView;
6 | import spark.Request;
7 | import spark.Response;
8 |
9 | public class IndexController extends Controller {
10 | public IndexController(){
11 |
12 | }
13 | public static ModelAndView index(Request req, Response res) {
14 | HashMap model = new HashMap();
15 | model.put("template", "templates/index/index.html");
16 | model.put("name", "Rohit Verma");
17 | return new ModelAndView(model, LAYOUT_FILE);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/spark/controller/UserController.java:
--------------------------------------------------------------------------------
1 | package com.spark.controller;
2 |
3 | import org.eclipse.jetty.http.HttpStatus;
4 |
5 | import spark.QueryParamsMap;
6 | import spark.Request;
7 | import spark.Response;
8 |
9 | import com.spark.services.UserService;
10 |
11 | public class UserController extends Controller {
12 | public static String getAllUsers(Request req, Response res) {
13 | UserService userService = new UserService();
14 | return gson.toJson(userService.getAllUser());
15 | }
16 |
17 | public static int createUser(Request req, Response res) {
18 | UserService userService = new UserService();
19 | QueryParamsMap queryParam = req.queryMap();
20 | userService.creatUser(queryParam.get("name").value(),
21 | Integer.parseInt(queryParam.get("age").value()));
22 | return HttpStatus.CREATED_201;
23 | }
24 |
25 | public static String getUser(Request req, Response res) {
26 | UserService userService = new UserService();
27 | return gson.toJson(userService.getUser(Integer.parseInt(req
28 | .params("id"))));
29 | }
30 |
31 | public static int deleteUser(Request req, Response res) {
32 | UserService userService = new UserService();
33 | userService.deleteUser(Integer.parseInt(req.params("id")));
34 | return HttpStatus.OK_200;
35 | }
36 |
37 | public static int updateUser(Request req, Response res) {
38 | UserService userService = new UserService();
39 | QueryParamsMap queryParam = req.queryMap();
40 | userService.updateUser(Integer.parseInt(req.params("id")), queryParam
41 | .get("name").value(), Integer.parseInt(queryParam.get("age")
42 | .value()));
43 | return HttpStatus.OK_200;
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/spark/model/User.java:
--------------------------------------------------------------------------------
1 | package com.spark.model;
2 |
3 | public class User {
4 | private String name;
5 | private int id;
6 | private int age;
7 |
8 | public String getName() {
9 | return name;
10 | }
11 |
12 | public void setName(String name) {
13 | this.name = name;
14 | }
15 |
16 | public int getId() {
17 | return id;
18 | }
19 |
20 | public void setId(int id) {
21 | this.id = id;
22 | }
23 |
24 | public int getAge() {
25 | return age;
26 | }
27 |
28 | public void setAge(int age) {
29 | this.age = age;
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/spark/services/UserService.java:
--------------------------------------------------------------------------------
1 | package com.spark.services;
2 |
3 | import java.util.Collection;
4 | import java.util.HashMap;
5 |
6 | import com.spark.model.User;
7 |
8 | public class UserService {
9 |
10 | // using in memory cache as database this needs to be replaced by database
11 | public static HashMap users = new HashMap();
12 |
13 | public void creatUser(String name, int age) {
14 | User user = new User();
15 | user.setAge(age);
16 | user.setName(name);
17 | user.setId(users.size());
18 | users.put(user.getId(), user);
19 | }
20 |
21 | public User getUser(int id) {
22 | return users.get(id);
23 | }
24 |
25 | public Collection getAllUser() {
26 | return users.values();
27 | }
28 |
29 | public void deleteUser(int id) {
30 | users.remove(id);
31 | }
32 |
33 | public void updateUser(int id, String name, int age) {
34 | User user = users.get(id);
35 | user.setAge(age);
36 | user.setName(name);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/spark/Main.java:
--------------------------------------------------------------------------------
1 | package spark;
2 |
3 | import static spark.Spark.get;
4 | import static spark.Spark.post;
5 | import static spark.Spark.put;
6 | import static spark.Spark.delete;
7 | import spark.template.velocity.VelocityTemplateEngine;
8 |
9 | import com.spark.controller.GreetController;
10 | import com.spark.controller.IndexController;
11 | import com.spark.controller.UserController;
12 |
13 | public class Main {
14 | public static final VelocityTemplateEngine VELOCITY_ENGINE = new VelocityTemplateEngine();
15 |
16 | public static void main(String[] args) {
17 | setUpRoutes();
18 | }
19 |
20 | private static void setUpRoutes() {
21 | get("/", IndexController::index, VELOCITY_ENGINE);
22 | get("/greet/:name", GreetController::greet, VELOCITY_ENGINE);
23 | get("/users", UserController::getAllUsers);
24 | get("/users/:id", UserController::getUser);
25 |
26 | post("/user", UserController::createUser);
27 | put("/user/update/:id",UserController::updateUser);
28 | delete("user/delete/:id", UserController::deleteUser);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/resources/templates/greet/greet.html:
--------------------------------------------------------------------------------
1 |
2 |
Welcome $name
3 |
--------------------------------------------------------------------------------
/src/main/resources/templates/index/index.html:
--------------------------------------------------------------------------------
1 |
2 |
Hello $name
3 |
--------------------------------------------------------------------------------
/src/main/resources/templates/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello Friend!
6 |
8 |
9 |
10 | #parse( $template )
11 |
12 |
--------------------------------------------------------------------------------
/target/classes/com/spark/controller/Controller.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/com/spark/controller/Controller.class
--------------------------------------------------------------------------------
/target/classes/com/spark/controller/GreetController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/com/spark/controller/GreetController.class
--------------------------------------------------------------------------------
/target/classes/com/spark/controller/IndexController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/com/spark/controller/IndexController.class
--------------------------------------------------------------------------------
/target/classes/com/spark/controller/UserController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/com/spark/controller/UserController.class
--------------------------------------------------------------------------------
/target/classes/com/spark/model/User.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/com/spark/model/User.class
--------------------------------------------------------------------------------
/target/classes/com/spark/services/UserService.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/com/spark/services/UserService.class
--------------------------------------------------------------------------------
/target/classes/spark/Main.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/slrohit/spark/7adb13cce9dfffc203d8dab0e9a644ca6670da1e/target/classes/spark/Main.class
--------------------------------------------------------------------------------
/target/classes/templates/greet/greet.html:
--------------------------------------------------------------------------------
1 |
2 |
Welcome $name
3 |
--------------------------------------------------------------------------------
/target/classes/templates/index/index.html:
--------------------------------------------------------------------------------
1 |
2 |
Hello $name
3 |
--------------------------------------------------------------------------------
/target/classes/templates/layout.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello Friend!
6 |
8 |
9 |
10 | #parse( $template )
11 |
12 |
--------------------------------------------------------------------------------