一位小大佬自己闲来搭的博客,现已被github收做模板,博客清新简洁,个性有趣味,特此引流一下:尹队的博客
1、JFinal简介
JFinal是国产基于java语言的极速WEB MVC+ORM框架,由Handler、Interceptor、Controller、Render、Plugin五大部分组成。其核心设计目的就是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有 Java语言所有优势的同时 再拥有 ruby、python、php等动态语言的开发效率!
JFinal 有如下主要特点:
- MVC 架构,设计精巧,使用简单
- 遵循 COC 原则,零配置,无 xml(Convention over Configuration,惯例优于配置原则)
简单点说,就是将一些公认的配置方式和信息作为内部缺省的规则来使用。例如,Hibernate的映射文件,如果约定字段名和类属性一致的话,基本上就可以不要这个配置文件了。你的应用只需要指定不convention的信息即可,从而减少了大量convention而又不得不花时间和精力啰里啰嗦的东西,配置文件很多时候相当的影响开发效率。
Rails 中很少有配置文件(但不是没有,数据库连接就是一个配置文件),Rails 的fans号称期开发效率是 java 开发的 10倍,估计就是这个原因。Maven也使用了CoC原则,当你执行mvn -compile命令的时候,不需要指源文件放在什么地方,而编译以后的class文件放置在什么地方也没有指定,这就是CoC原则。
- 独创 Db + Record 模式,灵活便利
- ActiveRecord 支持,使数据库开发极致快速
- 自动加载修改后的 java 文件,开发过程中无需重启 web server
- AOP 支持,拦截器配置灵活,功能强大
- Plugin 体系结构,扩展性强
- 多视图支持,支持 FreeMarker、JSP、Velocity
- 强大的 Validator 后端校验功能
- 功能齐全,拥有 struts2 绝大部分核心功能
- 体积小仅 303K,且无第三方依赖
2、 创建demo运行
项目源码地址:Jfinal-demo
(1)使用eclipse创建Dynamic Web Project, 注意:Target runtime选择< None>:
(2)next-->此处的 Default out folder 必须要与 WebRoot\WEB-INF\classes 目录完全一致才可以使用 JFinal 集成的 Jetty 来启动项目。
next:
注意:此处也可以使用默认值 WebContent, 但上一步中的 WebRoot\WEB-INF\classes 则需要 改成 WebContent\WEB-INF\classes 才能对应上(这一步有问题后续启动项目会有问题)。之后,Finish。
(3)添加jar包
将jfinal-xxx-xxx.jar 与jetty-server-xxx.jar 拷贝至项目 WEB-INFlib下即可。下载地址jfinal-download
注意:jetty-server-xxx.jar是开发时使用的运行环境,生产环境不需要此文件。
(4)修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Jfinal-demo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>jfinal</filter-name>
<filter-class>com.jfinal.core.JFinalFilter</filter-class>
<init-param>
<param-name>configClass</param-name>
<param-value>demo.DemoConfig</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>jfinal</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
(5)编写DemoConfig类
新建demo包及DemoConfig类,并集成JFinalConfig:
注意:DemoConfig.java 文件所在的包以及自身文件名必须与 web.xml 中的 param-value 标签内的配置相一致(在本例中该配置为 demo.DemoConfig)
(6)HelloController
在 demo 包下创建 HelloController 类文件并继承Controller:
package demo;
import com.jfinal.core.Controller;
public class HelloController extends Controller {
public void index() {
renderText("Hello JFinal~~");
}
}
(7)启动项目
在右侧窗口中的 Main class 输入框中填入: com.jfinal.core.JFinal 并点击 Debug 按钮启动项目
启动成功截图:
(8)浏览器输入http://localhost/hello 进行访问
注意:在 tomcat 下开发或运行项目时,需要先删除 jetty-server-xxx.jar 这个包,否则会引起冲突。 Tomcat启动项目不能使用上面介绍的启动方式,因为上面的启动方式需要用到jetty-server-xxx.jar。
(9)另一种启动方式
在demo包下创建JFinalStart,类名无所谓,书写main方法如下:
package demo;
import com.jfinal.core.JFinal;
public class JFinalStrat {
public static void main(String[] args) {
JFinal.start("WebRoot", 80, "/", 5);
}
}
之后运行main方法:
ok,访问成功,简单的JFinal第一个入门程序完成~
3、第一种启动方式修改JFinal启动端口
点击第一种启动方式后,点击Arguments:输入WebRoot 801 / 5-->debug
修改成功!