您当前的位置: 首页 > 

JFinal项目开发效率提升工具-JBolt插件使用简介

蔚1 发布时间:2020-04-19 23:30:34 ,浏览量:4

本文主要介绍一下在使用 Eclipse 和国产 JFinal 极速开发框架进行项目开发时,如何提升项目开发效率。

主要用到的就是 Eclipse 上的一个 JFinal 极速开发助手:JBolt 插件。

你将会了解到:

  1. 如何安装 JBolt 插件
  2. 如何使用 JBolt 插件一键创建标准的 JFinal 开发环境
  3. 如何使用 JBolt 插件一键运行项目、一键浏览、一键打包部署
  4. 如何使用 JBolt 插件快速开发 Enjoy 模板
  5. 如何使用 JBolt 插件在 HTML 中快速编写 Bootstrap 框架代码做 UI
一、JFinal 框架简介

JFinal 极速开发框架是一款国产基于 Java 的 MVC+ORM+模板引擎的开源开发框架,可以应用在 web 开发和非 web 开发领域,多年稳居开源中国软件排名榜首。github star 超过 3.1K,码云 Gitee star 超 7.6K,社区开发者 10W+,相关社区生态活跃,国产软件里非常不错的一个。

jfinal 官网:www.jfinal.com

二、JBolt 插件简介

如果使用 Eclipse 去开发基于 JFinal 框架的项目,那么 JBolt 插件是必须要安装的,安装后可以帮开发者在 Eclipse 中快速创建基于 JFinal 的 Maven 项目开发环境,一键打包发布,一键生成代码等。JBolt 插件

Jbolt 插件官网:http://jbolt.cn

三、JBolt 插件下载与安装

1、Eclipse 版本需要 4.7 以上的,所以推荐开发者直接 Eclipse 官网下载最新版的 package zip 版,下载到本地解压即可。2、jbolt 官网下载插件 jar 包下载 JBolt 插件的 jar最新版 1.9.83、下载后解压放入 eclipse 解压目录下的 plugins 目录里放在 plugins 下两个 jar4、重启 Eclipse 看到顶部有 JBolt 的菜单,console 里输出 JBolt 信息,表示安装加载成功重启后有菜单5、切换 JBolt 视图切换为 JBolt 视图6、下载所有依赖 在 JBolt Homeview 上点击提示的 update libs 按钮 下载所有依赖的三方类库和模板文件点击更新 libs等待完成完成了7、finish 后就可以正常使用了

四、使用 JBolt 创建项目

JBolt 目前可以创建两种类型的项目,基于 JFinal 的 maven 工程和基于 JFinal 的普通动态 web 工程,常用的肯定是 maven 工程了,更方便管理。可以快速创建工程的地方有很多。创建工程new 菜单1、maven 基础信息maven 基础信息2、项目基础配置基础配置3、服务器选择与配置服务器选择与配置4、数据库的选择与配置数据库选择与配置5、其它三方依赖配置其它三方依赖6、一键生成 666主要生成内容POM.xml

    4.0.0    cn.jbolt    jbolt    0.0.1-SNAPSHOT    jar    jbolt demo    jbolt demo    http://jbolt.cn            UTF-8        UTF-8        1.8        3.8.1        4.8        2019.8        2.11.1        1.2.17        5.1.1        2.0        1.1.20        5.1.47        2.6.11        1.6.2        2.57        3.0.1        2.4        1.12.1        2.5.0        4.1.0        2.3.1                                ali-maven            http://maven.aliyun.com/nexus/content/groups/public                            true                                        true                always                fail                                                junit            junit            ${junit.version}            test                            com.jfinal            cos            ${cos.version}                                    log4j            log4j            ${log4j.version}                                    com.jfinal            jfinal-undertow            ${jfinalundertow.version}                                                    org.slf4j            slf4j-nop            1.7.25                        provided                            com.alibaba            druid            ${druid.version}                            mysql            mysql-connector-java            ${mysql.version}                            cn.hutool            hutool-all            ${hutool.version}                                    net.sf.ehcache            ehcache-core            ${ehcache.version}                            javax.mail            javax.mail-api            ${javamail.version}                            com.sun.mail            javax.mail            ${javamail.version}                            de.ruedigermoeller            fst            ${fst.version}                            redis.clients            jedis            ${jedis.version}                            com.jfinal            jfinal-weixin            ${jfinalweixin.version}                            org.jsoup            jsoup            ${jsoup.version}                            org.clojars.cbilson            pinyin4j            ${pinyin4j.version}                            org.apache.poi            poi            ${poi.version}                            org.apache.poi            poi-ooxml            ${poi.version}                            org.quartz-scheduler            quartz            ${quartz.version}                            org.quartz-scheduler            quartz-jobs            ${quartz.version}                            com.jfinal            jfinal            ${jfinal.version}                        jbolt                                    org.apache.maven.plugins                maven-compiler-plugin                3.6.1                                    ${jdk.version}                    ${jdk.version}                    ${project.build.sourceEncoding}                                        -parameters                                                                                                                                    org.apache.maven.plugins                maven-jar-plugin                2.6                                                            *.txt                        *.xml                        *.properties                                                                                        org.apache.maven.plugins                maven-assembly-plugin                3.1.0                                                            make-assembly                        package                                                    single                                                                                                        ${project.artifactId}                                                        false                                                        true                                                                                        package.xml                                                                                    ${project.build.directory}/                                                                                    

主配置类:主配置类

package cn.jbolt.common.config;import com.jfinal.config.Constants;import com.jfinal.config.Handlers;import com.jfinal.config.Interceptors;import com.alibaba.druid.util.JdbcConstants;import com.jfinal.config.JFinalConfig;import com.jfinal.config.Plugins;import com.jfinal.config.Routes;import com.jfinal.kit.Prop;import com.jfinal.kit.PropKit;import com.jfinal.template.Engine;import com.jfinal.ext.interceptor.SessionInViewInterceptor;import com.jfinal.plugin.ehcache.EhCachePlugin;import com.jfinal.server.undertow.UndertowServer;import com.jfinal.plugin.druid.DruidPlugin;import com.alibaba.druid.filter.stat.StatFilter;import com.alibaba.druid.wall.WallFilter;import com.jfinal.plugin.activerecord.ActiveRecordPlugin;import com.jfinal.plugin.activerecord.dialect.MysqlDialect;import com.jfinal.render.ViewType;import cn.jbolt.index.IndexController;public class MainConfig extends JFinalConfig {    //将全局配置提出来 方便其它地方重用    private static Prop prop;    //Druid 防火墙    private WallFilter wallFilter;    //当前 application 的项目运行环境是开发(dev) or 生产(pro)    public static String PDEV = "dev";    //终端 ID    public static long WORKER_ID = 0;    //数据中心 ID    public static long DATACENTER_ID = 0;    //默认数据库类型    public static String DB_TYPE=JdbcConstants.MYSQL;    //id 生成模式    public static String ID_GEN_MODE = "auto";    //项目否是开发模式 只要用于配置 sql 输出和模板热加载等    public static boolean DEV_MODE=false;    /**     * 配置 JFinal 常量     */    @Override    public void configConstant(Constants me) {        //读取数据库配置文件        loadConfig();        //设置当前是否为开发模式        me.setDevMode(prop.getBoolean("dev_mode"));        //设置默认上传文件保存路径 getFile 等使用        me.setBaseUploadPath(prop.get("base_upload_path"));        //设置上传最大限制尺寸        //me.setMaxPostSize(1024*1024*10);        //设置默认下载文件路径 renderFile 使用        me.setBaseDownloadPath(prop.get("base_download_path"));        //设置默认视图类型        me.setViewType(ViewType.JFINAL_TEMPLATE);        //设置 404 渲染视图        //me.setError404View("404.html");        //设置启用依赖注入        me.setInjectDependency(true);        //设置是否对超类进行注入        me.setInjectSuperClass(true);        //可以直接访问 JSP        //me.setDenyAccessJsp(false);        //开启使用 SLF4j        //me.setToSlf4jLogFactory();    }    /**     * 配置项目路由     * 路由拆分到 FrontRutes 与 AdminRoutes 之中配置的好处:     * 1:可分别配置不同的 baseViewPath 与 Interceptor     * 2:避免多人协同开发时,频繁修改此文件带来的版本冲突     * 3:避免本文件中内容过多,拆分后可读性增强     * 4:便于分模块管理路由     */    @Override    public void configRoute(Routes me) {        //推荐拆分方式 如果需要就解开注释 创建对应的 Routes        //me.add(new AdminRoutes());//配置后台管理系统路由        //me.add(new WechatRoutes());//配置微信端访问路由        //普通不拆分的方式配置 如下        //设置默认访问首页路由 可使用 http://localhost:port 直接访问 如果 80 端口 port 可以省略        me.add("/",IndexController.class);    }    /**     * 是否是生产环境     * @return     */    public static boolean pdevIsPro() {        return "pro".equalsIgnoreCase(PDEV);    }    /**     * 加载配置文件     */    public static void loadConfig() {        if (prop == null) {            prop=PropKit.use("application.properties");            if(prop==null){                throw new RuntimeException("application.properties not exist!");            }            //读取当前配置的部署环境类型 dev 是开发环境 pro 是生产环境            PDEV=prop.get("pdev", "dev").trim();            if(pdevIsPro()) {                prop = PropKit.append("config-pro.properties");            }else {                prop = PropKit.append("config.properties");            }            //设置当前数据库类型            DB_TYPE=prop.get("db_type", JdbcConstants.MYSQL).trim();            //设置当前是否为开发模式            DEV_MODE=prop.getBoolean("dev_mode",false);            //设置 ID 主键生成模式 默认是 auto            ID_GEN_MODE=prop.get("id_gen_mode","auto").trim();            //设置当前节点所在数据中心 ID            DATACENTER_ID=prop.getLong("datacenter_id",0L).longValue();            //设置当前节点所在数据中心中的终端 ID            WORKER_ID=prop.getLong("woker_id",0L).longValue();        }    }    /**     * 获取数据库插件     * 抽取成独立的方法,便于重用该方法,减少代码冗余     */    public static DruidPlugin getDruidPlugin() {        loadConfig();        return new DruidPlugin(prop.get("jdbc_url"), prop.get("user"), prop.get("password"));    }    /**     * 配置 JFinal 插件     * 数据库连接池     * ActiveRecordPlugin     * 缓存     * 定时任务     * 自定义插件     */    @Override    public void configPlugin(Plugins me) {        loadConfig();        //配置数据库连接池插件        DruidPlugin dbPlugin=getDruidPlugin();        wallFilter = new WallFilter();          // 加强数据库安全        wallFilter.setDbType("mysql");        dbPlugin.addFilter(wallFilter);        dbPlugin.addFilter(new StatFilter());   // 添加 StatFilter 才会有统计数据        //数据映射 配置 ActiveRecord 插件        ActiveRecordPlugin arp=new ActiveRecordPlugin(dbPlugin);        arp.setShowSql(prop.getBoolean("dev_mode"));        arp.setDialect(new MysqlDialect());        dbPlugin.setDriverClass("com.mysql.jdbc.Driver");        /********在此添加数据库 表-Model 映射*********/        //如果使用了 JFinal Model 生成器 生成了 BaseModel 把下面注释解开即可        //_MappingKit.mapping(arp);        //添加到插件列表中        me.add(dbPlugin);        me.add(arp);        //配置 ehcache 插件 配置文件是 ehcache.xml        me.add(new EhCachePlugin());    }    /**     * 配置全局拦截器     */    @Override    public void configInterceptor(Interceptors me) {        me.addGlobalActionInterceptor(new SessionInViewInterceptor());    }    /**     * 配置全局处理器     */    @Override    public void configHandler(Handlers me) {        //说明:druid 的统计页面涉及安全性 需要自行处理根据登录权限判断是否能访问统计页面         //me.add(DruidKit.getDruidStatViewHandler()); // druid 统计页面功能    }    /**     * 项目启动后调用     */    @Override    public void onStart() {        // 让 druid 允许在 sql 中使用 union        // https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter        wallFilter.getConfig().setSelectUnionCheck(false);    }    /**     * 配置模板引擎      */    @Override    public void configEngine(Engine me) {        //配置模板支持热加载        me.setDevMode(prop.getBoolean("engine_dev_mode", false));        //这里只有选择 JFinal TPL 的时候才用        //配置共享函数模板        //me.addSharedFunction("/view/common/layout.html")    }    public static void main(String[] args) {        UndertowServer.create(MainConfig.class,"undertow.properties").start();    }}

不同环境的配置文件:配置文件 数据库配置等服务器配置文件:服务器配置好了,这就是 JBolt 一键生成的主要内容,经过不同的配置,可以生成各种路由配置类和不同数据库的配置文件的。

五、一键运行 JFinal maven 工程项目

右键-》run as(debug as)->JFinal java Application一键运行控制台有成功消息输出:控制台看到输出这样,成功启动了!

六、一键打开浏览器访问

右键-》Jbolt-》Browse It一键访问插件会打开浏览器访问 IndexController 中的首页 action。打开默认生成的 Index 页面

七、一键打包

我们在创建项目的时候默认选择的是 jfinal-undertow 服务器,这也是 jfinal 框架现在推荐使用的服务器,性能要比 Tomcat 好的多。直接右键-》run as-》Maven clean and Package (to war)打包这里有两个选项,第一个是默认就将整个项目打包成 Undertow 专用格式项目,带着启动脚本,打包后内置 undertow 服务器,上传到服务器上,直接使用启动脚本运行,非常方便。第二个是,如果你开发用 undertow 但是部署需要用到 Tomcat 的话,就导出 war 包,非常灵活。

打包过程就不用说了,maven 打包而已,都在 package.xml 里配置。

八、快速创建

项目上右键菜单,可以找到快速创建 JFinal 的一些东西,比如 Controller,Service,Model,Validator,Handler,Interceptor 等快速创建快速创建 Controller 举例:自动继承 JFinal 的 Controller,自动在 Name 输入 Controller 后缀,自动把光标移入到最前面。快速创建 Controller

问题:如果系统里有公用的 JBoltBaseController.java,规定所有的 Controller 必须继承这个,如何处理呢? 有办法:

找到 settings找 settings在这里配置自己需要继承的 SuperClass 或者要实现的 Interfaces 就好了。配置需要的 superClass 即可再次新建 Controller 的时候,已经可以了。自动继承是不是好方便的!

九、数据库转 Java Model 代码生成

JFinal 里内置的代码生成器,但是需要自己编码实现定制,有些麻烦,在插件里提供了快速生成的功能。1、项目上右键 找生成启动代码生成2、配置数据源 默认读取创建项目的配置选择数据库数据源3、选择要生成的表和相关配置表生成配置4、一键生成控制台有输出生成日志生成的代码目录:生成的代码生成的 Model 和映射关系,以及字典文件:具体代码字典文件

5、配置与启动

在 MainConfig.java 里已经生成了注释的配置映射的地方,解开注释,就可以正常启动并加载数据源了。mainconfig 里的配置映射

6、测试读取数据:读取数据

十、模板引擎代码编辑器极速开发

html 默认打开使用了 JBolt 插件里提供的 EnjoyEditor 编辑器打开。支持多种指令提示

同时支持 html、css、js、Bootstrap 代码块、Enjoy 模板引擎指令、JBolt 平台内置指令的代码提示。相关使用有一个介绍视频可以点击看一下:

点击查看视频演示强大编辑器

模板编辑器

十一、总结

本文介绍了 JFinal 极速开发平台再 Eclipse 下的开发助手-JBolt 插件的详细安装和使用,希望对 JFinal 开发者有所帮助。关注我,为 JFinal 开发者提供更多好分享。

阅读全文: http://gitbook.cn/gitchat/activity/5e9bf58aa58adf47cb052d29

您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

FtooAtPSkEJwnW-9xkCLqSTRpBKX

关注
打赏
1688896170
查看更多评论

蔚1

暂无认证

  • 4浏览

    0关注

    4645博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.5537s