ninja是一个优秀的,轻量级的mvc框架,它与google guice整合比较好。下面看一下例子:

我们在web.xml 配置一下:

    <listener>
<listener-class>ninja.servlet.NinjaServletListener</listener-class>
</listener> <filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

然后看一下ninja提供的目录结构:

其中conf是它的配置文件夹。

application.conf 是一个配置常量的文件,类似与我们用的属性文件。它用于配置数据库连接,支付回调等常量连接。它支持不同环境下的常量读取,比如你可以设置测试环境的常量,开发环境的常量

messages.properties 用于做国际化的

Module.java 这个文件是用与注册module的,就是google guice用的
Routes.java 这个文件是配置路由的,也就是我们访问路径的。
具体如下:
package conf;

import ninja.AssetsController;
import ninja.Router;
import ninja.application.ApplicationRoutes;
import controllers.ApplicationController; public class Routes implements ApplicationRoutes { @Override
public void init(Router router) { router.GET().route("/").with(ApplicationController.class, "index"); //支持不同的请求方式,链式编程,后面helloWorldJson指向ApplicationController的具体实现的一个方法
router.GET().route("/hello_world.json").with(ApplicationController.class, "helloWorldJson");
router.POST().route("/hello_world.json").with(ApplicationController.class, "helloWorldJson"); ///////////////////////////////////////////////////////////////////////
// Assets (pictures / javascript)
///////////////////////////////////////////////////////////////////////
router.GET().route("/assets/webjars/{fileName: .*}").with(AssetsController.class, "serveWebJars");
router.GET().route("/assets/{fileName: .*}").with(AssetsController.class, "serveStatic"); ///////////////////////////////////////////////////////////////////////
// Index / Catchall shows index page
///////////////////////////////////////////////////////////////////////
router.GET().route("/.*").with(ApplicationController.class, "index");
}
controllers这个文件夹用于写控制层代码了。
如:
package controllers;

import ninja.Result;
import ninja.Results; import com.google.inject.Singleton;
import ninja.params.Param; @Singleton
public class ApplicationController { public Result index() { return Results.html(); }
public Result helloWorldJson(@Param("aa")String aa) {//接收aa参数 SimplePojo simplePojo = new SimplePojo();
simplePojo.content = "Hello World! Hello Json!"; return Results.json().render(simplePojo); } public static class SimplePojo { public String content; }
}

views文件夹就是存各种html页面了。

基本一个结构就是如此。实际开发中,我们需要建更多的文件,如dao,service等等

ninja很轻量,不如struts2臃肿,是比较灵活的微框架。如果你想你的程序运行更快,用它吧...

例子下载:http://pan.baidu.com/s/1czb7rC

ninja官网:http://www.ninjaframework.org/

guice 整合ninja framework(七)的更多相关文章

  1. guice整合struts2,guice的使用(八)

    平时我们习惯用了spring整合struts2,今天我们就来见识一下guice整合struts2吧. 看web.xml配置: <?xml version="1.0" enco ...

  2. Maven 整合 robot framework 进行测试

    1. 在maven pom.xml中先配置robot framework的plugin: <plugin> <!-- integration test runner (robot-f ...

  3. guice整合struts2与jpa,guice的使用(九)

    传统我们开发一般使用ssh,但是有些微服务应用的项目我们不需要这么臃肿的框架做开发,于是采用了guice+struts2+guice作为框架组合进行了开发. 先看我们项目引用的jar包: 使用的时候一 ...

  4. guice基本使用,guice整合guice-servlet,web scope注解(六)

    guice servlet提供了几个比较有用的web scope,类似与传统servlet 的session,request这些提供的范围等. guice servlet 提供的web scope 如 ...

  5. guice基本使用,guice整合guice-servlet,web开发(五)

    介绍 Guice Servlet 为使用web应用程序和Servlet容器提供了一个完整的模式.. Guice's servlet 扩展允许从你的servlet应用中完全淘汰web.xml,并且具有类 ...

  6. 【转】iOS静态库 【.a 和framework】【超详细】

    原文网址:https://my.oschina.net/kaqijiang/blog/649632 一.什么是库? 库是共享程序代码的方式. 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存 ...

  7. IOS静态库和Framework区别

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系 ...

  8. 【转】iOS库 .a与.framework区别

    转自:http://blog.csdn.net/lvxiangan/article/details/43115131 一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态 ...

  9. iOS库--.a与.framework

    一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的差别? 静态库:链接时完整地拷贝至可运行文件里.被多次使用就有多份冗余拷贝. 动态库:链接时不复制.程序执行时由系 ...

随机推荐

  1. [Advanced Algorithm] - Validate US Telephone Numbers

    题目 如果传入字符串是一个有效的美国电话号码,则返回 true. 用户可以在表单中填入一个任意有效美国电话号码. 下面是一些有效号码的例子(还有下面测试时用到的一些变体写法): 555-555-555 ...

  2. Java中String类的常用方法

    判断功能的方法 public boolean equals (Object anObject) :将此字符串与指定对象进行比较. public boolean equalsIgnoreCase (St ...

  3. S-HR薪酬项目与核算表的关系

  4. 51nod1183 编辑距离【动态规划】

    编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...

  5. [luogu1640 SCOI2010]连续攻击游戏 (二分图最大匹配)

    传送门 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某 ...

  6. cat和cp的神奇用法:制作U盘安装盘

    使用U盘安装debian,U盘的制作方法: 方法一: https://www.debian.org/doc/manuals/debian-handbook/installation.zh-cn.htm ...

  7. RabbitMQ学习总结(1)——基础概念详细介绍

    一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...

  8. HDU 4456 Crowd

    Crowd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. 1012关于SYSBENCH的用法

    sysbench安装.使用.结果解读 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况.目前sysbench代码托管在launchpad上 ...

  10. Java上使用Lombok插件简化Getter、Setter方法

    Maven引入依赖: <dependencies> <dependency> <groupId>org.projectlombok</groupId> ...