#jWeb

### 写在前面
团队内部使用的一套web开发框架,稳定使用多年,特分享与开源者共勉。

### 取其精髓,去其糟粕
没有最好,只有最适合,选择框架最适合你的部分,或者对你有所启发的。

### maven管理,可持续集成。
maven管理的所有依赖、插件都应该具有可替代性,并且可以一直更新。当然,包括jdk版本。
目前项目需要更新为jdk8。

### 项目零配置,基于注解的开发模式,易上手
基于Struts2 convention,spring4,hibernate5的全注解配置。在可持续集成的理念下,struts2可以完全切换为spring mvc,同时hibernate也可以切换为ibatis.

一个极简的action方法可以像下面这么简单:

![输入图片说明](http://git.oschina.net/uploads/images/2015/0823/162623_c15be88d_23833.jpeg "在这里输入图片标题")

### lambda表达式,可以直接在Action层写业务逻辑
    @Action("/example/testForTransaction")
    public void testForTransaction() {
      logger.info("testForTransaction");

     MyExample myExample = new MyExample();
     myExample.setExpStr("中文字段测试");

     fooGenericService.runInTransaction(() -> {
         logger.info("saving...");
         fooGenericService.save(myExample);
         if (1 == 1) {
             throw new RuntimeException("if you see this error,it means internal test only...");
         }
     });
     FooUtils.printSuccessJson(response, myExample);}

### 零学习曲线,原生api
在经典的actio,dao,service模式上改进,封装了dao层和service层。无须再新建dao层,service层按需添加,专注于action层开发

action类已经定义好原生的request,response,只需要继承公用类,所有方法即可使用:

![公用Action片段](http://git.oschina.net/uploads/images/2015/0823/160948_6528695f_23833.jpeg "公用Action片段")

### 快速迭代开发。
tomcat独有配置模式,在开发过程中,除了新增类,新增类方法,更改web.xml等情形需要重启服务,其他情况均不需要重启。
tomcat指向工程启动,无任何项目拷贝,急速启动服务。

### 不要过度依赖,充分解耦
除了el表达式,页面不使用任何标签,只有原生html标签和js。

### Model至上,业务至上,团队开发规范至上
在model里面表达多一些的信息会带来意想不到的效果。具体参见:

### 框架辅助工具
一键生成增删查改所有前后台代码的的实用类,检查maven依赖,一键打包工具,等等。

### 了解边界
很多看起很美好的开源框架在需求很复杂的情形下都会快速失效,你需要知道技术的边界。
例如hibernate处理几十万条数据的批量insert或者update的时候将会无能为力,这时候你需要jdbc,这就是hibernate的边界。具体参考:mylink

### 更多