一.准备条件:
(1)、开发工具 IDEA
(2)、了解Java web 基本知识。
(3)、了解Maven 基本知识。
二. 搭建JFinal工程
1. 在IDEA 创建一个maven 工程。如图所示
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, 响应如下图所示,就算成功了!