首页 > 技术文章 > 服务端框架---JFINAL开发环境的搭建

javapand 2020-03-20 15:32 原文

JFINAL开发环境的搭建过程

  • (一)学习的地址

急速开发学习:https://www.jfinal.com/

  • (二)undertow模式非web项目的搭建
  •     2.1mavne项目的新建

           在eclipse中新建maven项目

          新建时候,选择quickstar 骨架

         

 

         

 

      

         最后生成目录结构

       

 

 

           

            修改pomxml文件 内容如下

           

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4 
 5   <groupId>com.computech</groupId>
 6   <artifactId>jfianl</artifactId>
 7   <version>1.0.0</version>
 8   <packaging>jar</packaging>
 9 
10   <name>jfianl</name>
11   <url>http://maven.apache.org</url>
12 
13   <properties>
14     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15    
16   </properties>
17 
18   <dependencies>
19     <dependency>
20       <groupId>junit</groupId>
21       <artifactId>junit</artifactId>
22       <version>3.8.1</version>
23       <scope>test</scope>
24     </dependency>
25     
26      <dependency>
27             <groupId>com.jfinal</groupId>
28             <artifactId>jfinal</artifactId>
29             <version>3.7</version>
30      </dependency>
31 
32      <dependency>
33             <groupId>com.jfinal</groupId>
34             <artifactId>jfinal-undertow</artifactId>
35             <version>1.5</version>
36       </dependency>
37         <dependency>
38             <groupId>io.jsonwebtoken</groupId>
39             <artifactId>jjwt</artifactId>
40             <version>0.7.0</version>
41        </dependency>
42        <dependency>
43             <groupId>org.apache.commons</groupId>
44             <artifactId>commons-lang3</artifactId>
45             <version>3.7</version>
46        </dependency>
47         <dependency>
48             <groupId>com.alibaba</groupId>
49             <artifactId>druid</artifactId>
50             <version>1.1.10</version>
51         </dependency>
52 
53         <dependency>
54             <groupId>mysql</groupId>
55             <artifactId>mysql-connector-java</artifactId>
56             <version>5.1.46</version>
57         </dependency>
58 
59         <dependency>
60             <groupId>com.alibaba</groupId>
61             <artifactId>fastjson</artifactId>
62             <version>1.2.55</version>
63         </dependency>
64         <dependency>
65             <groupId>org.bouncycastle</groupId>
66             <artifactId>bcprov-jdk15on</artifactId>
67             <version>1.64</version>
68        </dependency>
69        <!--加密包 -->
70        <dependency>
71             <groupId>commons-codec</groupId>
72             <artifactId>commons-codec</artifactId>
73             <version>1.10</version>
74       </dependency>
75   </dependencies>
76 </project>

   

   修改JDK版本

  

 

 

 

 

 

 

如果没有问题,可以看到引用结果

 

 

 

设置号资源目录的输出路径

 

  • 2.2规划一些项目的目录结构

     

 

 

 

Comm目录存放公用的通用代码,包括baseconfig,数据模型类

 

 

 

Model存放数据映射模型,basemodel存放基本数据模型

Control目录存放路由的control类

Service 目录存放service方法

Resources目录存放项目资源文件(包括数据库配置等其他文件)

 

  • 2.3:新建 BaseConfig类设置jfianl的基本配置

  基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类,该类用于对整个web项目进行配置。    JFinalConfig子类需要实现六个抽象方法,如下所示

 

public class BaseConfig extends JFinalConfig {
    public void configConstant(Constants me) {}
    public void configRoute(Routes me) {}
    public void configEngine(Engine me) {}
    public void configPlugin(Plugins me) {}
    public void configInterceptor(Interceptors me) {}
    public void configHandler(Handlers me) {}
  • 2.4添加数据库插件

             步骤1:在resources资源目录下,新建数据配置文件db.txt

                       

           配置号数据库等属性         

#jdbcUrl=jdbc:mysql://192.168.3.100/x5demo?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
jdbcUrl=jdbc:mysql://localhost/layuidb?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
#user=cmp
#password=mysql
user=root
password=123456
devMode=true
engineDevMode=true
upload=d:/upload

 

       

步骤2:在配置类中加入读取properity文件的方法

 

 

步骤3:在BaseConfig类中填加插件配置

 

优化下,在BaseConfig中建一个方法去获取DruidPlugin

 

插件哪里改成直接获取

 

步骤4:通过代码生成器类,取数据库生成对应的model模型

代码生成器类,主要作用是根据数据库的表生成对应的model类

 

里面主要设置4个参数

   1:baseModel的包名

   2:baseModel对应的路径名

   3:model包名

   4:model 包路径名

 

生成器代码,代码如下

/**
 * 请勿将俱乐部专享资源复制给其他人,保护知识产权即是保护我们所在的行业,进而保护我们自己的利益
 * 即便是公司的同事,也请尊重 JFinal 作者的努力与付出,不要复制给同事
 * 
 * 如果你尚未加入俱乐部,请立即删除该项目,或者现在加入俱乐部:http://jfinal.com/club
 * 
 * 俱乐部将提供 jfinal-club 项目文档与设计资源、专用 QQ 群,以及作者在俱乐部定期的分享与答疑,
 * 价值远比仅仅拥有 jfinal club 项目源代码要大得多
 * 
 * JFinal 俱乐部是五年以来首次寻求外部资源的尝试,以便于有资源创建更加
 * 高品质的产品与服务,为大家带来更大的价值,所以请大家多多支持,不要将
 * 首次的尝试扼杀在了摇篮之中
 */

package com.computech.common;


import javax.sql.DataSource;

import com.jfinal.kit.PathKit;
import com.jfinal.plugin.activerecord.dialect.MysqlDialect;
import com.jfinal.plugin.activerecord.generator.Generator;
import com.jfinal.plugin.druid.DruidPlugin;

/**
 * Model、BaseModel、_MappingKit 生成器
 */
public class _Generator {

    /**
     * 部分功能使用 Db + Record 模式实现,无需生成 com.computech.example.common.controller 的 table 在此配置
     */
    private static String[] excludedTable = {
            "news_feed_reply",  // 暂不实现该功能
            "project_page_view", "share_page_view", "feedback_page_view",
            "login_log",
            "sensitive_words",
            "upload_counter",
            "task_run_log",
            "message_tip",
            "friend",
            "project_like", "share_like", "feedback_like",
            "share_reply_like", "feedback_reply_like",
            "like_message_log",
            "account_role", "role_permission"
    };

    /**
     * 重用 JFinalClubConfig 中的数据源配置,避免冗余配置
     */
    public static DataSource getDataSource() {
        DruidPlugin druidPlugin = BaseConfig.getDruidPlugin();
        druidPlugin.start();
        return druidPlugin.getDataSource();
    }

    public static void main(String[] args) {
        // base com.computech.example.common.controller 所使用的包名
        String baseModelPackageName = "com.computech.common.model.basemodel";
        // base com.computech.example.common.controller 文件保存路径
        String baseModelOutputDir = PathKit.getWebRootPath()
                + "/src/main/java/com/computech/common/model/basemodel";

        System.out.println("输出路径:"+ baseModelOutputDir);

        // com.computech.example.common.controller 所使用的包名 (MappingKit 默认使用的包名)
        String modelPackageName = "com.computech.common.model";
        // com.computech.example.common.controller 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
        String modelOutputDir = baseModelOutputDir + "/..";

        // 创建生成器
        Generator gen = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
        
        // 设置数据库方言
        gen.setDialect(new MysqlDialect());
        
        // 设置是否生成字段备注
        gen.setGenerateRemarks(false);
        
        // 添加不需要生成的表名
        for (String table : excludedTable) {
            gen.addExcludedTable(table.trim());
        }
        
        // 设置是否在 Model 中生成 dao 对象
        gen.setGenerateDaoInModel(true);
        
        // 设置是否生成字典文件
        gen.setGenerateDataDictionary(false);
        
        // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
        // gernerator.setRemovedTableNamePrefixes("t_");
        
        // 生成
        gen.generate();
    }
}

 

可以把生成器,放到你项目目录下

 

 

做一些配置,就可以直接运行这个类

生成器会自动生成对应的model类如下图

 

修改baseConfig类的插件方法

 

用_MappingKit去设置表与对象的映射关系

配置点

 

这是不需生成的表

 这是添加数据源,直接用插件里的数据源

生成器的问题,可以参考学习网站的5.4部分

 

 

 

步骤5:上面工作完成后,做下测试看能否访问数据库表

测试步骤1:新建一个userControl.java 继承与 Controller

 

 

 

 

测试步骤2:在BaseConfig中配置控制器的映射路径

 

 

测试步骤3:新建一个UserService类添加增删改查的方法

 

 

 

 

 

 

 

 

 

 

测试步骤4:在步骤1的userControl控制类中添加对应的数据操作方法

 Index方法,默认的映射路径为 http://localhost:80/user

 

Add方法的映射路径:http://localhost:80/user/add

 

 Edit方法的映射路径:http://localhost:80/user/edit

 

Del方法的映射路径:http://localhost:80/user/del

 

 

测试步骤5:在浏览器输入请求,查看是否可以拿到数据

启动服务:

 

这里run这个类

在浏览器输入

http://localhost/user

 

 

拿到数据,表示index方法拿到数据库数据

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

步骤3:在BaseConfig类中填加插件配置

 

 

 

 

 

 

 

 

 

 

 

             

 

 

 

 

 

 

 

 

 

 

 

 

 

         

 

推荐阅读