{"id":17334530,"url":"https://github.com/chibat/selva","last_synced_at":"2025-03-27T07:13:41.108Z","repository":{"id":31232773,"uuid":"34794021","full_name":"chibat/selva","owner":"chibat","description":"Web Framework for Java 8","archived":false,"fork":false,"pushed_at":"2018-05-03T05:34:04.000Z","size":119,"stargazers_count":2,"open_issues_count":2,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-01T12:11:32.972Z","etag":null,"topics":["framework","java"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chibat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-29T13:01:33.000Z","updated_at":"2018-07-06T23:14:55.000Z","dependencies_parsed_at":"2022-09-08T23:31:28.378Z","dependency_job_id":null,"html_url":"https://github.com/chibat/selva","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chibat%2Fselva","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chibat%2Fselva/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chibat%2Fselva/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chibat%2Fselva/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chibat","download_url":"https://codeload.github.com/chibat/selva/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245798359,"owners_count":20673902,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","java"],"created_at":"2024-10-15T15:06:24.118Z","updated_at":"2025-03-27T07:13:41.090Z","avatar_url":"https://github.com/chibat.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Selva\n\n[ ![selva-core](https://api.bintray.com/packages/chibat/maven/selva-core/images/download.svg) ](https://bintray.com/chibat/maven/selva-core/_latestVersion)\n[ ![selva-jetty](https://api.bintray.com/packages/chibat/maven/selva-jetty/images/download.svg) ](https://bintray.com/chibat/maven/selva-jetty/_latestVersion)\n\nSelva is a tiny Web framework for Java 8.\n\n## Minimal Example \n\n```java\npublic class FirstApp implements App {\n  public void init() {\n    resource(\"/users/(.+)\")\n    .get(req -\u003e text(\"Show \" + req.pathParam()))\n    .post(req -\u003e text(\"Update \" + req.pathParam()));\n  }\n\n  public static void main(String[] args) {\n    Server server = new Server();\n    server.add(FirstApp.class);\n    server.listen();\n  }\n}\n```\n\n## More Example\n\n```java\npublic class ExampleApp implements App {\n\n  public void init() {\n\n    resource(\"/\").get(req -\u003e template(\"index.html\"));\n\n    resource(\"/users/(.+)\")\n    .get(req -\u003e text(\"Show \" + req.pathParam()))\n    .post(req -\u003e text(\"Update \" + req.pathParam()));\n\n    resource(\"/blog/(.+)/(.+)/(.+)\")\n    .get(req -\u003e text(\"Show - Year: \" + req.pathParams(0) + \", Month: \" + req.pathParams(1) + \", Day: \" + req.pathParams(2)))\n    .post(req -\u003e text(\"Update - Year: \" + req.pathParams(0) + \", Month: \" + req.pathParams(1) + \", Day: \" + req.pathParams(2)));\n\n    resource(\"/template\")\n    .get(req -\u003e template(\"/template.html\", new Model()))\n    .post(req -\u003e {\n      Model model = req.bean(Model.class);\n      Set\u003cConstraintViolation\u003cModel\u003e\u003e errors = validate(model);\n      if (errors.isEmpty()) {\n        model.result = Integer.parseInt(model.arg1) + Integer.parseInt(model.arg2);\n      }\n      return template(\"/template.html\", model, errors);\n    });\n\n    resource(\"/json/map\").get(req -\u003e {\n      Map\u003cString, String\u003e map = new HashMap\u003c\u003e();\n      map.put(\"name\", \"chiba\");\n      map.put(\"age\", \"10\");\n      return json(map);\n    });\n\n    resource(\"/json/bean\").get(req -\u003e json(new Bean()));\n    resource(\"/forward\").get(req -\u003e forward(\"/json/bean\"));\n    resource(\"/redirect/outer\").get(req -\u003e redirect(\"http://www.google.com\"));\n    resource(\"/redirect/inner\").get(req -\u003e redirect(\"/json/bean\"));\n\n    resource(\"/session\").post(req -\u003e {\n      req.session(\"sessionData\", req.params(\"sessionData\"));\n      return text(\"setted to session: \" + req.session(\"sessionData\"));\n    }).get(req -\u003e text(req.session(\"sessionData\")));\n\n    resource(\"/filter\").get(req -\u003e text(\"Hello, World!\"), new LogFilter());\n  }\n\n  public static class Bean {\n\n    private String name = \"chiba\";\n    private int age = 30;\n\n    public String getName() {\n      return name;\n    }\n\n    public int getAge() {\n      return age;\n    }\n  }\n\n  public static class Model {\n\n    @NotBlank\n    @Digits(fraction = 0, integer = Integer.MAX_VALUE)\n    public String arg1 = \"\";\n\n    @NotBlank\n    @Digits(fraction = 0, integer = Integer.MAX_VALUE)\n    public String arg2 = \"\";\n\n    public Integer result;\n  }\n\n  public static void main(String[] args) {\n    Server server = new Server();\n    server.add(ExampleApp.class);\n    server.listen();\n  }\n}\n```\n\n## Selva Example\n\n### Run\n\n```\n$ gradlew selva-example:run\n```\n\nThis command will start up server.\nAlso it will open the web browser.\n\n### Make a executable jar and Run\n\nUnix\n```\n$ gradlew selva-example:jar\n$ java -Dfile.encoding=UTF-8 -jar selva-example/build/libs/selva-example-0.0.1.jar\n```\nWindows\n```\n\u003e gradlew selva-example:jar\n\u003e java -Dfile.encoding=UTF-8 -jar selva-example\\build\\libs\\selva-example-0.0.1.jar\n```\n\nAlso, see the [wiki](https://github.com/chibat/selva/wiki).\n\nThat's it.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchibat%2Fselva","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchibat%2Fselva","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchibat%2Fselva/lists"}