JFinal 是基于Java 语言的极速 web 开发框架,理解其结构以后,对于项目的快速开发,确实很不错。
由于项目中使用了JFinal的一些开源框架,而且开源社区中也有很多JFinal的开源项目,拿来就可以使用,进行二次开发,都是JFinal+各种显示框架。但是最基本的JFinal的项目建立,倒是没有在意。
如果想学习框架,从建立一个基础的项目架子,然后,一步一步增加功能内容,同时去借鉴,看已经使用的的开源项目,对于理解整体框架的使用,才会有自己的理解。
此处只建立一个最最基本的JFinal项目
点击Next,选择要构建的骨架maven-archetype-webapp,如下图
Maven项目规定了源码文件、资源文件、测试文件、输出文件等的默认配置,简单的说就是把这些文件规定放在对应的路径下方便管理,如下表所示,假设${basedir}表示工程根目录:
项目工程的路径 存放的文件类型
${basedir}/src/main/java 项目源码
${basedir}/src/main/resources 资源文件,比如.properties文件
${basedir}/src/main/webapp web项目相关资源文件,比如web.xml
${basedir}/src/test/java 测试用的源码
${basedir}/src/test/resources 测试用的资源文件
${basedir}/target/classes 编译后的文件
${basedir}/target/test-classes 编译后用于测试的文件
如果是用Eclipse的Maven插件生成的Maven项目,只会自动生成src/main/resources和target/classes、target/test-classes,需要自己手动添加其它的目录,并且指定项目的source以及编译后的输出目录
打开pom.xml
添加JFinal框架和jetty容器等依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>3.3</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jetty-server</artifactId>
<version>8.1.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
加入 JFinal 内容
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>com.run.DemoConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*
com.run.DemoConfig
是配置JFinal启动找的配置文件,核心。
有些开源项目,访问地址在web.xml中配置到公司项目级别的,
例如:/公司/系统/user/****
/公司/系统/department/***
/公司/系统/*
需要根据实际情况配置访问地址
${basedir}/src/main/java 项目源码
package com.demo;
import com.jfinal.core.Controller;
public class DemoController extends Controller {
public void index() {
// renderText("Hello World");
renderJson("{\"code\":01,\"message\":\"你好Java\"}");
}
}
此处renderText,renderJson方法,请看JFinal的介绍,好好理解下。
package com.run;
import org.apache.log4j.Logger;
import com.demo.DemoController;
import com.jfinal.config.Constants;
import com.jfinal.config.Handlers;
import com.jfinal.config.Interceptors;
import com.jfinal.config.JFinalConfig;
import com.jfinal.config.Plugins;
import com.jfinal.config.Routes;
import com.jfinal.core.JFinal;
import com.jfinal.template.Engine;
public class DemoConfig extends JFinalConfig {
private static Logger log = Logger.getLogger(DemoConfig.class);
/**
* 配置常量
*/
@Override
public void configConstant(Constants me) {
log.info("configConstant 设置是否开发模式");
me.setDevMode(true);
me.setEncoding("UTF-8");// 设置编码
}
@Override
public void configEngine(Engine me) {
// TODO Auto-generated method stub
}
/**
* 配置处理器
*/
@Override
public void configHandler(Handlers me) {
// TODO Auto-generated method stub
}
/**
* 配置全局拦截器
*/
@Override
public void configInterceptor(Interceptors me) {
// TODO Auto-generated method stub
}
/**
* 配置插件
*/
@Override
public void configPlugin(Plugins me) {
// TODO Auto-generated method stub
}
/**
* 配置路由
*/
@Override
public void configRoute(Routes me) {
me.add("/demo", DemoController.class);
}
public static void main(String[] args) {
JFinal.start("src/main/webapp", 8089, "/", 5);
}
}
注意在路由中加入:
/**
* 配置路由
*/
@Override
public void configRoute(Routes me) {
me.add("/demo", DemoController.class);
}
OK,到此,我们配置了一个最基本的JFinal项目。
DemoConfig.java 中main方法
public static void main(String[] args) {
JFinal.start("src/main/webapp", 8089, "/", 5);
}
项目中的JFinalConfig 配置,请参考项目中的真实配置。
可以通过web.xml找到项目的配置文件,通过过滤地址,知道项目的地址命名规则;通过JFinalConfig.java,理解项目配置的情况;在pom.xml中看项目依赖的关系。
例如连接数据库,需要DemoConfig.java增加的内容,这个时候需要你去理解每个配置的功能,增加依赖jar。再去看 controller service model 的处理实现。
感兴趣的可以在此基础上按照开源项目里的内容,一个一个的添加,研究,网上应该也有相应的介绍。
项目中很多是拿来用,新人直接参考功能实现,写新的需求功能,先会完成工作内容。如果是有心人,才会去看看项目的结构,通过这种方式,了解下基础的东西,再结合看开源的内容,吸收高级的养分,相信会提高很多。