临时文件

JFinal 学习笔记--搭建JFinal工程

2017-07-18  本文已影响210人  天下无忧2000

一.准备条件:

(1)、开发工具 IDEA

(2)、了解Java web 基本知识。

(3)、了解Maven 基本知识。

(4)、了解使用 IDEA 创建Maven Web项目

(5)、JFinal 的基本认识 JFinal 官方学习社区

二. 搭建JFinal工程

1. 在IDEA 创建一个maven 工程。如图所示

Paste_Image.png

2. 在pom.xml中添加JFinal jar包依赖

   <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- 使用 JFinal 集成的 Jetty 来启动项目。-->
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>jetty-server</artifactId>
      <version>8.1.8</version>
      <!--
          此处的 scope 值为 compile 仅为支持 IDEA 下启动项目
          打 war 包时需要改成 provided,以免将一些无用的 jar 打进去
      -->
      <scope>compile</scope>
    </dependency>
    <!-- JFinal 相关jar -->
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>jfinal</artifactId>
      <version>3.1</version>
    </dependency>
    <dependency>
      <groupId>com.jfinal</groupId>
      <artifactId>cos</artifactId>
      <version>2017.5</version>
    </dependency>
    <!-- 日志 相关jar -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.16</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>JFinal-Demo</finalName>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>8.1.8.v20121106</version>
        <configuration>
          <stopKey>stop</stopKey>
          <stopPort>5599</stopPort>
          <webAppConfig>
            <contextPath>/</contextPath>
          </webAppConfig>
          <scanIntervalSeconds>5</scanIntervalSeconds>
          <connectors>
            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
              <port>80</port>
              <maxIdleTime>60000</maxIdleTime>
            </connector>
          </connectors>
        </configuration>
      </plugin>
    </plugins>
  </build>

3. 在resource 文件下配置log4j.properties

# log4j.rootLogger=WARN, stdout, file
log4j.rootLogger=ERROR, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

# Output to the File
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.file.File=./jfinal_demo_for_maven.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n

4. 在main/com/jfinal/demo 下创建DemoConfig.java 并继承JFinalConfig

(没有com/jfinal/dome文件夹,就自行创建,并选中右键 Mark Directory as Source Root)
创建 项目的入口Main方法
    public static void main(String[] args) {
        /**
         * 特别注意:Eclipse 之下建议的启动方式
         */
//        JFinal.start("src/main/webapp", 80, "/", 5);

        /**
         * 特别注意:IDEA 之下建议的启动方式,仅比 eclipse 之下少了最后一个参数
         */
        JFinal.start("src/main/webapp", 80, "/");
    }

DemoConfig.java 如下所示
import com.jfinal.config.*;
import com.jfinal.core.JFinal;
import com.jfinal.template.Engine;
import index.IndexController;
/**
 * 
 * API引导式配置
 */
public class DemoConfig extends JFinalConfig {
    /**
     * 运行此 main 方法可以启动项目,此main方法可以放置在任意的Class类定义中,不一定要放于此
     *
     * 使用本方法启动过第一次以后,会在开发工具的 debug、run config 中自动生成
     * 一条启动配置,可对该自动生成的配置再添加额外的配置项,例如 VM argument 可配置为:
     * -XX:PermSize=64M -XX:MaxPermSize=256M
     */
    public static void main(String[] args) {
        /**
         * 特别注意:Eclipse 之下建议的启动方式
         */
//      JFinal.start("src/main/webapp", 80, "/", 5);

        /**
         * 特别注意:IDEA 之下建议的启动方式,仅比 eclipse 之下少了最后一个参数
         */
        JFinal.start("src/main/webapp", 80, "/");
    }

    /**
     * 配置常量
     */
    @Override
    public void configConstant(Constants me) {
        // 加载少量必要配置,随后可用PropKit.get(...)获取值
//      PropKit.use("a_little_config.txt");
//      me.setDevMode(PropKit.getBoolean("devMode", false));
    }

    /**
     * 配置访问路由
     */
    @Override
    public void configRoute(Routes me) {
        me.add("/", IndexController.class, "/");    // 第三个参数为该Controller对应的视图存放路径
    }

    /**
     * @param me
     * 此方法用来配置 Template Engine(模板引擎)
     */
    @Override
    public void configEngine(Engine me) {}

    /**
     * 配置插件
     */
    @Override
    public void configPlugin(Plugins me) {}
    /**
     * 配置全局拦截器
     */
    @Override
    public void configInterceptor(Interceptors me) {}
    /**
     * 配置处理器
     */
    @Override
    public void configHandler(Handlers me) {}
}

5. 在webapp/WEB-INF/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>DemoConfig</param-value>
    </init-param>
  </filter>

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

6. 创建 IndexController,并添加配置到DemoConfig.java中的configRoute()方法中

import com.jfinal.core.Controller;

/**
 * IndexController
 */
public class IndexController extends Controller {
    public void index() {
        render("index.html");
    }
}
    /**
     * 配置访问路由
     */
    @Override
    public void configRoute(Routes me) {
        me.add("/", IndexController.class, "/index");    // 第三个参数为该Controller的视图存放路径
    }

7、 在创建webapp下创建index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="zh-CN" xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body>
<div class="manage_container">
    <div class="main">
        <h1>JFinal Demo 项目首页</h1>
        <div class="table_box">
            <p>欢迎来到 JFinal极速开发世界!</p>
            <br><br><br>
            本Demo采用 JFinal Template 作为视图文件。
            <br/><br/><br/>
        </div>
    </div>
</div>
</body>
</html>

8、 run 运行DemoConfig.java的main() 方法,访问localhost, 响应如下图所示,就算成功了!

Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读