【Jfinal__初步】

1、web.xml

    <filter>
        <filter-name>jfinal</filter-name>
        <filter-class>com.jfinal.core.JFinalFilter</filter-class>
        <init-param>
            <param-name>configClass</param-name>
            <param-value>k.common.MyConfig</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>jfinal</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2、pom.xml

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <!-- jfinal -->
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal</artifactId>
            <version>4.9.01</version>
        </dependency>

        <!-- jfinal-undertow 开发、部署一体化 web 服务器 -->
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>jfinal-undertow</artifactId>
            <version>2.1</version>
        </dependency>

        <!-- 避免控制台输出如下提示信息:
             SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
             项目中实际上用不到这个 jar 包,本 jfinal demo 用不上这个依赖,在此仅为大家
             在未来基于 jfinal demo 为模板做开发时做准备工作
             注意:eclipse 下可以将 scope 设置为 provided
        -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-nop</artifactId>
            <version>1.7.29</version>
            <!-- 打包前改成 provided,此处使用 compile 仅为支持 IDEA -->
            <scope>compile</scope>
        </dependency>

        <!-- log4j 日志 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- mysql 驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>

        <!-- druid 数据源连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.29</version>
        </dependency>

        <!-- cos 文件上传 -->
        <dependency>
            <groupId>com.jfinal</groupId>
            <artifactId>cos</artifactId>
            <version>2020.4</version>
        </dependency>

3、demo-config-dev.properties

# config
jdbcUrl = jdbc:mysql://localhost/jfinal_demo?characterEncoding=utf8&useSSL=false&zeroDateTimeBehavior=convertToNull
user = root
password =123456
devMode = true

4、MyConfig

import com.jfinal.config.*;
import com.jfinal.ext.handler.ContextPathHandler;
import com.jfinal.kit.Prop;
import com.jfinal.kit.PropKit;
import com.jfinal.plugin.druid.DruidPlugin;
import com.jfinal.template.Engine;
import k.controller.*;

public class MyConfig extends JFinalConfig {
    public static void main(String[] args) {
        // UndertowServer.start(MyConfig.class, 80, true);
    }

    static Prop p;

    /**
     * PropKit.useFirstFound(...) 使用参数中从左到右最先被找到的配置文件
     * 从左到右依次去找配置,找到则立即加载并立即返回,后续配置将被忽略
     */
    static void loadConfig() {
        if (p == null) {
            p = PropKit.useFirstFound("demo-config-pro.txt", "demo-config-dev.properties");
        }
    }

    @Override
    public void configConstant(Constants constants) {
        loadConfig();
        constants.setDevMode(p.getBoolean("devMode", false));
        constants.setBaseUploadPath("/");
    }

    @Override
    public void configRoute(Routes routes) {
        routes.add("/hello", HelloController.class);
        routes.add("/", IndexController.class);

    }

    @Override
    public void configEngine(Engine engine) {
        engine.addSharedFunction();
    }

    @Override
    public void configPlugin(Plugins plugins) {
        // 配置 druid 数据库连接池插件
        DruidPlugin druidPlugin = new DruidPlugin(p.get("jdbcUrl"), p.get("user"), p.get("password"));
        plugins.add(druidPlugin);
    }

    @Override
    public void configInterceptor(Interceptors interceptors) {

    }
    @Override
    public void configHandler(Handlers handlers) {

        handlers.add(new ContextPathHandler("ctx"));
    }
}

5、IndexController

public class IndexController extends Controller {
    public void index() {
        render("index.jsp");
    }
}

6、HelloController

public class HelloController extends Controller {
    public void index() {
        renderText("昨夜西风凋碧树。独上高楼,望尽天涯路。\r\n" +
                "衣带渐宽终不悔,为伊消得人憔悴。\r\n");
    }
}
posted @ 2020-08-23 17:35  一只桔子2233  阅读(104)  评论(0编辑  收藏  举报