一.準備條件:
(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